Offizielles Dokument - Verwenden von Variablen
Es scheint, dass es sowohl im INI-Dateiformat als auch im YAML-Format beschrieben werden kann. Ist das eine Inventardatei ...?
#INI-Format
[atlanta]
host1
host2
[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com
#YAML-Format
atlanta:
hosts:
host1:
host2:
vars:
ntp_server: ntp.atlanta.example.com
proxy: proxy.atlanta.example.com
Neben der Definition von Variablen im Inventar können Sie auch Host- und Gruppenvariablen definieren.
In diesem Fall scheint es notwendig zu sein, das YAML-Format zu verwenden.
Erstellen Sie eine Gruppennamen- / Hostnamensdatei in den Verzeichnissen group_vars
und host_vars
unter dem Verzeichnis/ etc / ansible /
und dem aktuellen Verzeichnis und beschreiben Sie die Einstellungen.
/etc/ansible/group_vars/raleigh #Die Dateierweiterung lautet'.yml'、 '.yaml', Oder'.json'
/etc/ansible/group_vars/webservers
/etc/ansible/host_vars/foosball
Die Definitionsdatei der der Rolle zugeordneten Variablen kann etwas anders sein. Oder main.yml
.
Ich möchte auch folgendes lesen.
Offizielle Dokumente - Best Practices
Sie können loop
oder with_ *
verwenden, um eine iterative Verarbeitung durchzuführen.
loop
scheint eine Funktion zu sein, die in Version 2.5 von Ansible hinzugefügt wurde.
In einigen Modulen können Sie eine Liste direkt an einen Parameter übergeben. Dies kann effizienter sein als das Schleifen von Aufgaben. Lesen Sie das Modulhandbuch.
Offizielle Dokumentenschleifen
- name: add several users
user:
name: "{{ item }}"
state: present
groups: "wheel"
loop: # with_items:
- testuser1
- testuser2
- name: add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop: # with_items:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
Wenn Sie mit einer vordefinierten Variablen iterieren möchten, geben Sie die Variable in loop
an.
Variablen können nur referenziert werden, wenn sie in "{{}}" eingeschlossen sind.
Was Sie beachten sollten, ist der Variablenname, und es gibt Variablen, die implizit deklariert werden. Wenn Sie also in Konflikt damit stehen, funktioniert dies nicht gut und Sie werden süchtig danach. .. .. Wie "Gruppen".
Überprüfen Sie Spezielle Variablen in der offiziellen Dokumentation. .. ..
vars:
users:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
- name: add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop: "{{ users }}"
Wenn Sie keine SSH-Verbindung als Root herstellen können, verwenden Sie "Werden", um die Aufgabe mit Administratorrechten auszuführen.
Offizielles Dokument - Eskalation von Berechtigungen verstehen: Werden
Beschreiben Sie bei der Beschreibung im Playbook das folgende Formular.
---
- hosts: all
become: yes
become_user: root
become_method: su
become_flags: '-s /bin/sh'
Oder setzen Sie eine Variable. Ich denke, dass Variablen in einer geeigneten Datei entsprechend dem Anwendungsbereich angegeben werden sollten.
---
# group_vars/all.yml
ansible_become: yes
ansible_become_method: su
ansible_become_password: somepassword
Es scheint, dass get_password
keinen Passwort-Hash angeben kann.
Wenn Sie vertrauliche Daten schützen möchten, verwenden Sie Ansible Vault.
DRY-RUN
Mit der Option --check
ausführen.
Es gibt auch eine --diff
Option, aber was ist der Unterschied ...
Mit der Option "--syntax-check" ausführen.
Mit der Option --list -asks
ausführen.
Führen Sie den Befehl "ansible-playbook" mit der Option "--start-at-task" aus. Fügen Sie dem Schritt die Option "--step" hinzu.
ansible-playbook -i hosts -l hostname site.yml --start-at-task="some task name" --step
Recommended Posts