16 Juni 2014

Automation und Konfigurationsmanagement mit Ansible

Kategorien: HowTos
Tags: Ansible

Ansible ist eine Open-Source-Software, mit der sich IT-Systeme einfach automatisieren lassen. Es fasst mehrere Funktionsbereiche zusammen, die üblicherweise von verschiedenen Lösungen abgedeckt werden:

Das Ansible-Projekt wurde in 2012 von Michael DeHaan gestartet. 2013 wurde die Firma AnsibleWorks gegründet, welche die Weiterentwicklung von Ansible kommerziell vorantreibt. Ansible ist in der Programmiersprache Python entwickelt und unter der GNU General Public License (GPLv3) lizenziert.

Seit seiner Entstehung ist Ansible stark gewachsen: Auf GitHub ist es in der Top 10 der Python-Projekte und enthält Beiträge von über 700 Entwickler/innen. Ungefähr alle 3 Monate erscheint ein neues Feature-Release.

Konfigurationsmanagement

Gegenüber Puppet und anderen Lösungen, positioniert sich Ansible als einfachere und robustere Lösung. Ansible benötigt keinen Ansible-Server oder Ansible-Agents, sondern kann über SSH direkt auf das Zielsystem angewendet werden. Dadurch entfällt die Installation und Verwaltung der Konfigurationssoftware selbst. Es ist kein vorhergehendes Bootstrapping notwendig und ein Upgrade oder Fehler kann nicht dazu führen, dass kein Zugriff auf Systeme mehr möglich ist. Gleichzeitig ist Ansible so auch für kleine Setups, sogar nur für einen einzigen Host, praktikabel.

Ansible verwendet keine eigene Syntax für Konfiguration, sondern basiert auf dem etablierten YAML-Format. Die Konfigurationsdateien, genannt Playbooks, sind leicht zu lesen und zu schreiben.

---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root
 
  tasks:
    - name: ensure apache is at the latest version
      apt: pkg=apache2-mpm-worker state=latest
 
    - name: write the apache config file
      template: 
        src=httpd.j2 
        dest=/etc/apache2/apache.conf
      notify:
      - restart apache
 
    - name: ensure apache is running
      service: name=apache2 state=started
 
  handlers:
    - name: restart apache
      service: name=apache2 state=restarted

 

Zusätzlich werden bereits zahlreiche Module für die Konfiguration unterschiedlichster Systeme und Dienste mitgeliefert (u.a. EC2, PostgreSQL®, APT, Yum, Git, Cron und Debconf)

Wiederkehrende Elemente in Playbooks können in Roles ausgelagert und mehrfach verwendet werden.

Ad-Hoc-Befehlsausführung

Sobald für das Konfigurationsmanagement eine Liste der Hosts, in Ansible Inventory genannt, existiert, kann diese Liste auch für Ad-Hoc-Befehle genutzt werden. Dabei kommen die gleichen Module zum Einsatz wie beim Schreiben von Playbooks:

$ ansible -m service -a "name=apache2 state=restarted" webservers
$ ansible -m apt -a "pkg=htop state=present" all

Deployment

Da Ansible nicht automatisch ausgeführt wird, sondern durch expliziten Aufruf, eignet es sich mit entsprechenden Playbooks auch zum Deployment von Software. Ein Playbook kann z.B. ein Git-Repo clonen oder pullen und Datenbank-Migrationen oder Neustart von Diensten auslösen. Gleichzeitig kann das Playbook sicherstellen, dass das Zielsystem entsprechend vorbereitet ist — eine Aufgabe die üblicherweise neben dem Deploymenttool ein seperates Konfigurationsmanagement-Werkzeug braucht.

Erste Schritte

Zum Einstieg in Ansible empfiehlt sich die Einführung in der offiziellen Dokumentation. Unser Open Source Support Center bietet ebenfalls Unterstützung für Ansible an.

 

Dieser Artikel wurde ursprünglich geschrieben von Maximilian Gaß.

Kategorien: HowTos
Tags: Ansible

SH

über den Autor

Sascha Heuer


Beitrag teilen: