Dies ist eine alte Version des Dokuments!
| 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
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.
|