Ansible
Ansible ist ein so genanntes Orchestrierungswerkzeug, mit dem man Computer automatisch konfigurieren kann. Dazu verwendet Ansible so genannte Playbooks.
Vorbereitung
Vorbereitung des Zielrechners
- Installation eines Minimalsystems
- Einrichten eines Benutzers speziell für ansible (optional)
- Installation der Pakete
- openssh-server
- sudo
- Der ansible-Benutzer das passwortlose Ausführen erlauben (siehe Sudo)
- python3
- Verlinke python3:
sudo ln -s /usr/bin/python3 /usr/bin/python
oder - Deklarieren der entsprechenden Variable für die Rechnergruppe. Beispiel einer inventory.yaml:
- Verlinke python3:
all: hosts: blacky: ansible_host: blacky.fritz.box children: home: hosts: blacky: python3: # All hosts that only have python3 hosts: blacky: vars: ansible_python_interpreter: /usr/bin/python3
Vorbereitung des Kontrollrechners
sudo aptitude install ansible
Nutzen von Ansible
Konfiguration
Die Konfiguration kann durch verschiedene Dateien erfolgen, z.B.:
- ansible.cfg
- ~/.ansible.cfg
Der Inhalt einer ansible.cfg könnte z.B. lauten:
[defaults] inventory=inventory.yaml
Inventory
Die Inventory-Datei wird in YAML geschrieben, z.B.:
all: hosts: blacky: ansible_host: blacky.fritz.box ansible_user: ansible
In YAML werden die Zeilen mit Leerzeichen, nicht mit Tabs eingerückt.
Siehe
Einfache Kommandos
Ping-Test
ansible all -m ping
Ausführen eines Shell-Kommandos
Mit Ansible lässt sich auch jedes beliebige Shell-Kommando ausführen:
ansible zielrechner -m command -a "whoami"
Will man das Kommando als root ausführen, setzt man --become
hinzu:
ansible pia2016 --become -m command -a "whoami"
Playbooks
Mit Playbooks kann man automatisieren, welcher Rechner welchen Zustand erreichen soll.
Dazu nutzt man Tasks in Form von Modulaufrufen (deklarative Ansible-Form von Befehlen), Rechnergruppen und Rollen.
Package-Updates
Folgender Auszug aus den Tasks eines Playbooks sollte das Paket-Updaten auf einem Debian- oder Ubuntu-System ermöglichen:
- name: update and upgrade apt packages become: true apt: name: "*" state: latest install_recommends: false update_cache: true
Weiterführendes
Siehe