[[Vorlage(Baustelle, 31.12.2017, Tronde)]] [[Vorlage(Getestet, xenial)]] [[Vorlage(Fortgeschritten)]] ## Bitte hier alle wesentlichen Wikiartikel auflisten, deren Kenntnis vorausgesetzt wird. {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] [:Editor: Einen Editor verwenden] }}} ## Wie es aussieht und Beschreibung siehe: http://wiki.ubuntuusers.de/Wiki/Textbausteine#Wissensblock ## Eine vollständige Befehlsübersicht befindet sich im Wiki unter http://wiki.ubuntuusers.de/Wiki/Syntax [[Inhaltsverzeichnis(1)]] ## Generiert sich automatisch aus den Überschriften (die mit = oder == beginnen und enden). [[Bild(Ansible_logo.png, 100, align=left)]] ## Artikeltext ## Einleitung ## Der 1. Abschnitt bekommt _keine_ Überschrift. [wikipedia:Ansible:] ist ein Open-Source Automatisierungs-Werkzeug zur [wikipedia:Dienstekomposition#Orchestrierung:Orchestrierung] und allgemeinen Konfiguration und Administration von Computern. Es kombiniert [wikipedia:Softwareverteilung:], Ad-hoc-Kommando-Ausführung und [wikipedia:Konfigurationsmanagement:]. Es verwaltet Netzwerkcomputer unter anderem über [:SSH:] und erfordert keinerlei zusätzliche Software auf dem zu verwaltenden System. Module nutzen zur Ausgabe [wikipedia:JSON:] und können in jeder beliebigen Programmiersprache geschrieben sein. Das System nutzt [wikipedia:YAML:] zur Formulierung wiederverwendbarer Beschreibungen von Systemen. = Installation = Ansible kann in Version 2.0.0 direkt aus den Quellen installiert werden [1] {{{#!vorlage Paketinstallation ansible, universe }}} ##bei mehreren Paketen einfach untereinander schreiben, nicht nebeneinander. Das Programm kann dann sofort gestartet werden [2]. In den Paketquellen ist nur eine ältere Version von Ansible enthalten. Für aktuelle Versionen steht ein [launchpad:~ansible/+archive/ubuntu/ansible:PPA] zur Verfügung. [[Vorlage(PPA, ansible, ansible)]] {{{#!vorlage Experten Wer stets die aktuelle Entwicklungsversion nutzen möchte, kann die Software auch direkt aus dem GitHub-Repository [github:ansible/ansible:ansible] beziehen. }}} = Bedienung = Ansible wird aus einem Terminal heraus genutzt. [3] Dabei kann Ansible in zwei Modi genutzt werden. Ausführung eines Kommandos im Ad-Hoc-Modus: {{{#!vorlage Befehl ansible [-m module_name] [-a args] [options] }}} Ausführung eines Ansible-Playbooks: {{{#!vorlage Befehl ansible-playbook ... [options] }}} Die Dokumentation zu Ansible findet man im Internet in der [http://docs.ansible.com/ansible/latest/index.html Ansible Documentation] {en} oder in den [:man:Manpages] auf dem lokalen System. {{{#!code bash man ansible # Führt Tasks auf einem oder mehreren entfernten Hosts aus man ansible-playbook # Ausführung von Ansible-Playbooks man ansible-doc # Dokumentation zu Ansible-Modulen anzeigen }}} Während sich der Ad-hoc-Modus eignet um bei Bedarf Konfigurationsänderungen an einem Host oder einer Gruppe von Hosts vorzunehmen, sind Playbooks dazu geeignet Konfigurationsdeklarationen besonders einfach wiederzuverwenden und Ansible zur Orchestrierung zu nutzen. == Inventar == Ansible verwaltet zu kontrollierende bzw. zu steuernde Systeme in einem Inventar. Ein statisches Inventar ist eine einfach Textdatei, welche mit einem Texteditor erstellt und bearbeitet werden kann. [5] Hosts können im Inventar zu Gruppen zusammengefasst werden, wie das folgende Beispiel veranschaulicht: {{{#!code text mail.example.com [webservers] foo.example.com bar.example.com [dbservers] one.example.com two.example.com three.example.com [dc1] merkur.example.com venus.example.com [dc2] neptun.example.com uranus.example.com [dc:children] dc1 dc2 }}} Bei obigen Inventar handelt es sich um ein simples Beispiel. In der offiziellen [http://docs.ansible.com/ansible/latest/intro_inventory.html Dokumentation] {en} finden sich weitere Anwendungsbeispiele, wie z.B. die Verwendung von Host- und Gruppen-Variablen im Inventar. == Playbooks == Playbooks sind das Herzstück von Ansible. Sie werden verwendet, um entfernte Rechner zu konfigurieren und um Deployments durchzuführen. Playbooks werden in [wikipedia:YAML:]-Syntax unter Verwendung eines Texteditors geschrieben. [5] Zur Veranschaulichung soll folgendes Beispiel aus der [http://docs.ansible.com/ansible/latest/playbooks_intro.html#playbook-language-example offiziellen Dokumentation] {en} dienen: {{{#!code python --- - hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version apt: name=apache2 state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=apache2 state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted }}} Im Playbook wird zuerst die Gruppe von Hosts definiert, auf denen die folgenden Tasks ausgeführt werden sollen. In diesem Fall ist dies die Gruppe '''webservers''' aus dem Inventar. Anschließend werden zwei Variablen definiert und der Benutzer (root) spezifiziert, welcher für die SSH-Verbindung zu den Zielsystemen verwendet wird. Darauf folgt eine Sektion mit Tasks. Hier wird definiert was auf den Zielsystemen getan werden soll. Dabei werden die Aufgaben in der Reihenfolge abgearbeitet, wie sie im Playbook spezifiziert sind. Die Ausführung erfolgt parallel auf den als Zielsystemen definierten Hosts. Das obige Playbook führt dabei folgende Tasks auf den Hosts der Gruppe '''webservers''' aus: 1. Stellt sicher, dass das Paket '''apache2''' in der aktuellsten Version installiert ist 1. Erstellt die Apache-Konfigurationsdatei aus einer Vorlage und benachrichtigt einen Handler namens __apache__ 1. Stellt sicher, dass der Apache-Dienst aktiviert und gestartet ist 1. Unter '''handlers''' werden Tasks definiert, welche nur ausgeführt werden, wenn sie von einem anderen Task im Playbook ausgelöst werden (siehe [http://docs.ansible.com/ansible/latest/playbooks_intro.html#handlers-running-operations-on-change Handlers] {en}). = Beispiele = Die folgenden Beispiele sollen die Nutzung von Ansible in den verschiedenen Modi verdeutlichen. == Dokumentation anzeigen == Die Dokumentation zum Ansible-Modul '''ping''' im Terminal [3] anzeigen: {{{#!code bash ansible-doc ping }}} == Ad-hoc-Kommando ausführen == Folgendes Kommando führt das Modul '''ping''' auf dem Host '''foo.example.com''' aus: {{{#!code bash ansible foo.example.com -m ping }}} Folgendes Kommando führt das Modul '''ping''' auf der Gruppe '''webservers''' aus: {{{#!code bash ansible webservers -m ping }}} == Ansible-Playbooks ausführen == {{{#!code bash ansible-playbook example.yml }}} Obiges Kommando führt das Ansible-Playbook namens '''example.yml''' aus. = Problembehebung = = Links = * [:Wiki/Syntax:] * [http://www.example.org Beispiel] {en} - ein externer Link * [topic:welche-themen-gehoeren-hier-her-und-welche-ni-3:Welche Themen gehören in Rund ums Wiki] - ein Thema im Forum ## Nicht auf diesen Artikel zutreffenden Kategorien bitte löschen! ##tag: Netzwerk, System