Erste Schritte mit Ansible

Ich habe inzwischen viel gutes über ein Werkzeug namens ansible gehört. Es erlaubt recht einfach Konfigurationen für mehrere Maschinen zu automatisieren ohne das auf diesen Software installiert sein muss.

Ansible is the easiest way to deploy, manage, and orchestrate computer systems you've ever seen. You can get started in minutes.


OK, das mit den Minuten würde ich eher in "in a hour" hochstufen.

Hier meine Schritte auf einem Ubuntu 12.04. Sie basieren im wesentlichen auf dieser Dokumentation. Zuerst eine Abhängigkeiten installieren

sudo apt-get install python-yaml python-jinja2  python-paramiko git

Dann ansible auf Github auschecken:

git clone git://github.com/ansible/ansible.git
Cloning into 'ansible'...
remote: Counting objects: 18889, done.
remote: Compressing objects: 100% (5064/5064), done.
remote: Total 18889 (delta 12608), reused 18230 (delta 12470)
Receiving objects: 100% (18889/18889), 4.27 MiB | 357 KiB/s, done.
Resolving deltas: 100% (12608/12608), done.

und Umgebungsvariablen setzen:

source ./hacking/env-setup
PATH=/home/hbauer/Daten/ansible/ansible/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PYTHONPATH=/home/hbauer/Daten/ansible/ansible/lib:
ANSIBLE_LIBRARY=/home/hbauer/Daten/ansible/ansible/library
MANPATH=/home/hbauer/Daten/ansible/ansible/docs/man:
Reminder: specify your host file with -i
Done.

In einer bestimmten Datei werden die Rechner mit Namen versehen und können in Gruppen eingeteilt werden. Zuerst mal einige Rechner aus dem Netzwerk hinzufügen bei denen eine Certifikatsbasiertes Login ermöglicht worden ist.

vi ansible_hosts
export ANSIBLE_HOSTS=ansible_hosts


Dann mal einen ersten kleinen Test starten (localhost erlaubt kein Login. Der Fehler ist also "normal")

ansible all -m ping
127.0.0.1 | FAILED => FAILED: [Errno 111] Connection refused
192.168.221.6 | success >> {
    "changed": false,
    "ping": "pong"
}
192.168.221.160 | success >> {
    "changed": false,
    "ping": "pong"
}

Ist man auf dem Zielrechner auch für passwordloses sudo berechtigt kann man als harten Test kann man ja dann mal einen Neustart testen

ansible 192.168.221.xx6 -a "/sbin/reboot" --sudo

Jetzt müsste ich noch

  • Ansible in den Pfad aufnehmen
  • Die Umgebungsvariablen aus ./hacking/env-setup und
  • ansible_host in die Loginvariablen aufnehmen