Ansible - Teil 1
Was ist Ansible?
Ansible ist ein Framework, das mit sogenannten “Playbooks” gesteuert wird. Diese rufen einzelne Module auf, die dann Aktionen auf per SSH zugänglichen Servern durchführen. Die Liste der vorhandenen Module ist lang und im Module Index zu finden.
Ansible arbeitet im Gegensatz zu Chef oder Puppet ohne einen zentralen Server, die Playbooks werden entweder von einem Jumphost oder der lokalen Workstation ausgeführt.
Natürlich gibt es mit AWX auch eine zentrale Komponente von der aus Playbooks ausgeführt werden können.
Im Prinzip kann man alles was Ansible tut, auch per SSH oder Shell-Skript ausführen. Ansible abstrahiert dabei die Fehlerbehandlung und macht Befehle auch mehrfach ausführbar. z.B. “Service X soll gestartet sein” - im Skript würde man systemctl start foo
benutzen, oder service foo start
.
Dieses kann manchmal zur Folge haben, daß Programme doppelt gestartet werden, grade wenn die Skripte komisch sind.
In Ansible übernimmt das das service
Modul, diesem gibt man den Wunsch an, daß ein Dienst gestartet sein soll, und auch noch beim Systemstart automatisch gestartet werden soll.
- name: start and enable apache
service:
name: apache2
state: started
enabled: true
Diesen Block kann ich in einem Play oder einer Rolle benutzen. Plays werden in einem Playbook aufgeführt. Ein Play kann entweder direkte Tasks, also Module, enthalten oder eine Anzahl von Rollen, die auf die jeweiligen Server angewendet werden können.
Wie kommt Ansible jetzt an die Rechner? Nun, dafür gibt es das inventory
- eine Textdatei mit allen Hosts, die man verwalten will.
Installation
Linux
Debian
$ apt install ansible
CentOS
$ dnf install ansible
MacOS
$ brew install ansible
Mein erstes Playbook
Nehmen wir mal an, wir wollen auf dem lokalen Rechner sicherstellen, daß das Paket vim
installiert ist. Dazu brauchen wir folgende 3 Dateien:
playbook.yml
---
- name: install vim
hosts: all
become: true
tasks:
- name: install vim
package:
name: vim
state: present
ansible.cfg
[default]
inventory = inventory
inventory
[localhost]
localhost
Der aktuelle Benutzer sollte per SSH ohne Paßwort auf den lokalen Rechner zugreifen können und ohne Paßwort sudo
nutzen können.
Nach dem Erstellen der Dateien können wir das Playbook mit ansible-playbook playbook.yml
laufen lassen. Anschließend sollte auf dem Rechner das Paket vim
installiert sein.