Begriff | Beschreibung |
---|---|
Controller | Der Rechner auf dem Ansible läuft |
Managed Hosts/Inventory Hosts | Die Rechner auf denen Aktionen ausgeführt werden |
Plugins | Erweiterungen von Ansible |
Inventory | Liste von Maschinen, fix als Datei oder dynamisch erstellt |
Playbook | Eine Sammlung von Plays aka. Scripten |
Plays | Einzelne Scripte |
Tasks | Einzelne Aufgaben innerhalb eines Plays |
Modules | Eine Aufgabe die im Rahmen eines Tasks ausgeführt wird Praktisch handelt es sich um parametrisierte Scripte in Python, oder PowerShell oder einer anderen Sprache geschrieben |
[defaults] inventory = ./inventory remote_user = myuser ask_pass = false [privilege_escalation] become = True become_ask_pass = False become_user = root become_method = sudo
Als ini-Datei:
10.1.55.13 [Mailserver] mail1.somewhere.de mail2.somewhere.de [DNSServer] ns1.somewhere.de ns2.somewhere.de [webserver] web[1:10].somweher.de [production:children] DNSServer Mailserver [debianserver] mail1.somewhere.de 10.1.53.13
Als yaml-File:
ungrouped: hosts: 10.1.55.13: Mailserver: hosts: mail1.somewhere.de: mail2.somewhere.de: DNSServer: hosts: ns1.somewhere.de: ns2.somewhere.de: webserver: hosts: web[1:10].somweher.de: production: children: DNSServer: Mailserver: debianserver: hosts: mail1.somewhere.de: 10.1.53.13: mixed: children: DNSServer: hosts: 10.1.35.55
ansible-inventory ist das zu den Inventories gehörende Werkzeug.
ansible-inventory -i <Inventory-File/Directory> <Option> <Action>
Actions:
--list
→ gebe das gesamte Inventory aus. Wird genutzt um Inventory an ansible zu übergeben
--graph
→ gebe die Inventory-Struktur als Graph aus
--host <Host>
→ gebe die Daten über einen bestimmten Managed Host aus
Option | Beschreibung |
---|---|
–yaml | –toml | Gibt die Daten wahlweise im Yaml- oder TOML-Format aus. JSON ist das Format wenn nichts angegeben wird. Dadurch lassen sich Dateien auch konvertieren |
- name: Name of play 1 hosts: group_or_name_of_hosts tasks: - name: NameofTask1 modulename1: parameter1: value1 parameter2: value2 - name: NameofTask2 modulename2: parameter1: value1 parameter2: value2 - name: Name of play2 hosts: group_or_name_of_hosts tasks: - name: NameofTask1 modulename2: parameter1: value1 parameter2: value2
ansible-playbook <Option> <Playbookfile>
Führt das entsprechende Playbook aus
ansible-playbook <Playbookfile>
Option | Beschreibung |
---|---|
–check-syntax | Prüft die Syntax des Playbooks |
- name: My Play hosts: hosta force_handlers: true tasks: - name: Get kernel notify: Reboot after kernel installation ansible.builtin.apt: name: linux-image-amd64 state: latest handlers: - name: Reboot after kernel installation ansible.builtin.reboot:
- name: My first play tasks: - name: First task hosts: hostA when: ansible_facts['os_family'] == "Debian" ansible.builtin.apt: name: neovim state: latest
- name: My first play hosts: myhosts tasks: - name: First Block when: ansible_facts['os_family'] == "Debian" become: true become_method: sudo block: - name: First task ansible.builtin.apt: name: neovim state: latest update_cache: True - name: Make a temporary file ansible.builtin.tempfile: prefix: myfile
- name: My first play hosts: myhosts tasks: - name: First Block when: ansible_facts['os_family'] == "Debian" become: true become_method: sudo block: - name: First task ansible.builtin.apt: name: neovim state: latest update_cache: True - name: Make a temporary file ansible.builtin.tempfile: prefix: myfile rescue: - name: Remove the vim package ansible.builtin.apt: name: neovim state: absent purg: true
- name: My first play hosts: myhosts tasks: - name: First Block when: ansible_facts['os_family'] == "Debian" become: true become_method: sudo block: - name: First task ansible.builtin.apt: name: neovim state: latest update_cache: True - name: Make a temporary file ansible.builtin.tempfile: prefix: myfile always: - name: Clear retrieved packages ansible.builtin.apt: clean: true
Folgende Werte sind reserviert/haben eine besondere Bedeutung und können in ansible-Dateien auftauchen:
Tag | Beschreibung |
---|---|
never | Führe die Statements niemals aus. \\Es sei denn „never“ wird in der tags-Option explizit angegeben oder anderer Tag in der Tag-Liste für dieses Element wurde explizit angegeben. Auch nicht bei Angabe von „all“ oder wenn kein Tag beim Aufruf von ansible-playbook angegeben |
always | führt den Statements immer aus. Egal welcher Tag auf der Kommandozeile angegeben wurde. Ausnahme --skip-tags always ist as Parameter angegeben |
kein Tag | Wird ausgeführt wenn keine Tags auf der Kommandozeile ausgewählt wurden oder all oder untagged |
Benutzerspezifischer Tag |
ansible-playbook hat folgende Parameter für Tags:
--tags <Liste von Tags, ohne Leerzeichen>
ansible-playbook --tags Tag1,Tag2 playbook.yml
--skip-tags <Liste von Tags, ohne Leerzeichen
ansible-playbook --skip-tags Tag1,Tag2 playbook.yml
--tags
und
--skip-tags
kombiniert, hat
--skip-tags
Vorrang
Folgende Tags gibt es:
Tag | Beschreibung |
---|---|
Never | Kann in --tags angegeben werden um Tags auszuführen die mit „never“ markiert sind |
all | Alle Tags, inkl. Task die keine Tags haben. Aber nicht die mit „never“ markiert sind. |
tagged | Alle Tasks aus die ein tag haben. Außer mit „never“ getagte |
untagged | Nur Tasks die keinen Tag haben |
Custom-Tag | Ein beliebiges Tag |
ohne --tags | Alles (auch getaggte), außer in der tags-Liste steht „never“ (auch dann nicht wenn noch andere Tags vorkommen |
Einfaches Tag
- name: My first play hosts: myhosts tasks - name: Install vim tags: - vim ansible.builtin.apt: name: neovim state: latest update_cache: True - name: Make a temporary file ansible.builtin.tempfile: prefix: myfile
Task „Install vim“ würde ausgeführt wenn
--tags vim
angegeben wurde
--tags tagged
angeben wurde
--tags all
angeben wurde
Tag + never:
- name: My first play hosts: myhosts tasks - name: Install vim tags: - vim - never ansible.builtin.apt: name: neovim state: latest update_cache: True - name: Make a temporary file ansible.builtin.tempfile: prefix: myfile
Task „Install vim“ würde ausgeführt wenn
--tags vim
angegeben wurde
always:
- name: My first play hosts: myhosts tasks - name: Install vim tags: - always ansible.builtin.apt: name: neovim state: latest update_cache: True - name: Make a temporary file ansible.builtin.tempfile: prefix: myfile
Task „Install vim“ würde immer ausgeführt (egal welcher Tag, egal ob kein Tag).
Wir nur nicht ausgeführt wenn
--skip-tags always
Modul | Beschreibung |
---|---|
copy | Kopiert vom ansible-Controller (lokale Maschine) auf einen Managed Host oder innerhalb eines Managed Hosts |
fetch | Kopiert Dateien von einem managed Host auf den Ansible-Controller |
Befehl | Beschreibung |
---|---|
<Module> | Gibt die Dokumentation (und die Parameter) für ein installiertes Modul aus |
-l -t module | Erlaubt die Angabe eines Modul-Typs |
Im Inventory:
mygroup: vars: myvar: 5 hosts: 85.206.62.161: myvar: "Coming from 56.108.82.247 inventory host config" 57.17.117.156:
In var-Directories:
Inhalt der Datei sind key-Value-Pairs:
<variable>: <Wert>
package: apache2
In Playbooks:
- name: Play-Name hosts: myhostlist vars: myvar: myvalue tasks: - name: sometaskt ansible.builtin.debug: msg: "{{myvar}}"
{{Variable}}
- name: Play-Name hosts: myhostlist tasks: - name: sometask vars: myvar: someothervalue ansible.builtin.debug: msg: "{{myvar}}"
- name: Play-Name hosts: myhostlist roles: - <role-name>
Roles und Modules sind in Collections zusammengefasst, die heruntergeladen werden können (von ansible oder woanders).
Wenn ein Modul:
ansible.builtin.debug
heißt, dann ist „ansible.builtin“ die Collection.
Befehl | Beschreibung |
---|---|
install <Collection-Name> | Installiert eine bestimmte Collection |
Option | Beschreibung |
---|---|
-l | Listet alle installierten Plugins |
-l -t <Type> | Listet alle Plugins eines bestimmten Typs. Zum Beispiel:
|
Befehl | Beschreibung | ||||||||
---|---|---|---|---|---|---|---|---|---|
ansible-config | Alles was mit der ansible.cfg zu tun hat.
|