Getting Started

Ansible ... getting started

Linux-Host: Getting Started ...

  • http://docs.ansible.com/ansible/index.html

Controller-Konzept

Ansible unterscheidet bei den beteiligten Rechnern zwischen Controller-System (steuert die Ausführung des Playbooks) und Zielsystem.

Software-Voraussetzungen:

  • Controller-System:

    • Ansible installiert (und Python)

    • ssh client installiert und passwortlose Authentifizierung möglich

  • Zielsystem:

    • SSH-Server installiert und Passwortlose Authentifizierung über Public-Private-Key möglich ... näheres siehe Abschnitt ssh

    • Python installiert

Installation auf dem Controller-System

  • http://docs.ansible.com/ansible/intro_installation.html

Konfiguration des Controller-Systems

Die Kommandos aus dem Ansible-Playbook werden später über ssh auf die Zielsysteme übertragen und dort ausgeführt. Um eine scriptgesteuerte Ausführung zu ermöglichen, darf kein Passwort abgefragt werden. Das wird über die Verwendung von Public/Private Keys erreicht (siehe auch ssh).

SSH-Key erzeugen

siehe ssh

Zielrechner definieren (Inventory File)

  • http://docs.ansible.com/ansible/intro_inventory.html

Die Zielrechner können gruppiert werden - das ist sehr praktisch, um mit einem Befehl gleich mehrere Rechner adressieren zu adressieren.

Option 1: sytemweit

Unter /etc/ansible/hosts müssen die zu verwaltenden Rechner eingetragen werden. Im einfachsten Fall trägt man dort localhost ein

Option 2: userspezifisch

authorized_keys auf Zielrechnern anpassen

... damit die passwortfreie Authentifizierung funktioniert muß der Public-Keys des Users auf dem Controller-Rechner in die ~/.ssh/authorized_keys auf dem Zielrechner für den Zielnutzer aufgenommen werden. Ansonsten bekommt wird ein Fehler dieser Art ausgegeben:

ACHTUNG: Will man später Tasks als User root durchführen (remote_user: root), so muß der Public-Key in /root/.ssh/authorized_keys eingetragen werden.

Das erste Kommando ...

Gib auf allen konfigurierten Zielsystemen den gleichen altbekannten Text aus:

Damit kann getestet werden, ob Ansible und die System-Konfiguration (ssh-keys, ssh-agent) funktionieren.

ACHTUNG: sollte der ssh-agent nicht laufen und der Private-SSH-Key mit einer Passphrase geschützt sein, so wird interaktiv nach der Passphrase gefragt. Das widerspricht eigentlich der Ansible-Idee einer Vollautomatisierung ... der SSH-Agent löst dieses Problem.

Das erste Playbook (= Skript) ...

Vor der Nutzung sollte man die YAML-Syntax verstanden haben!!!

Die Skipte heißen bei Ansible Playbook. Das folgende Ansible-Playbook (myplaybook.yml)

wird per ansible-playbook myplaybook.yml ausgeführt und installiert das Paket Midnight Commander. Wenn es nicht funktionieren sollte, die Option -vvv bzw. -vvvv macht Ansible ein wenig geschwätziger.


Windows-Host: Getting started ...

Windows-User werden von RedHat (dem Ansible-Sponsor) derzeit nicht unterstützt ... ein Windows-System ist weder als Zielsystem noch als Controller offiziell vorgesehen.

Es gibt dennoch ein paar Ansätze, unter einem Windows-Host Linux-Zielsysteme zu steuern.

In diesem Zuge spricht man von

  • Ansible-Remote: in diesem Fall werden vom Controller Kommandos via ssh zum Zielsystem geschickt. Das Controller-System muß mit Ansible und Python ausgestattet sein

  • Ansible-Local: in diesem Fall wird das Playbook auf den Zielrechner transportiert und dort lokal ausgeführt. Der Controller-System braucht kein Ansible/Python

    • besonders für Controller auf Windows-Basis interessant

Vagrant + ansible_local

siehe eigener Abschnitt

cygwin + ansible-remote

  • https://www.azavea.com/blog/2014/10/30/running-vagrant-with-ansible-provisioning-on-windows/

Bei diesem Ansatz wird der Python-Paketmanager (pip) verwendet, um das ansible Paket unter cygwin zu installieren.

Sicherstellen, daß die Umgebungsvariablen in cygwin/babun gesetzt sind:

Cygwin/Babun werden durch Installation folgender Pakete vorbereitet (hier mittels Babuns Paketmanager pact):

Python Paketmanager (pip) installieren

und anschließend das Ansible-Paket

Danach muß ansible-playbook noch in $PATH aufgenommen werden und los gehts ... äh, war da nicht noch was in obigem Link beschrieben?

Last updated

Was this helpful?