// Ansible wird für die Konfiguration bzw. Provisionierung // der folgenden Vagrant VM-Infrastruktur verwendet

// Installation aus “Personal Packages Archiv (PPA)” sudo -s apt-get install software-properties-common apt-add-repository ppa:ansible/ansible apt-get update apt-get install ansible

// Kontrolle ansible –version ansible-playbook –version ansible-galaxy –help

// Erstellung einer neuen/eigenen ‘hosts’ bzw. ‘inventory’ Datei // für die Konfiguration der ‘dev’ Umgebung cd ~ mkdir ansible cd ansible vi dev

// Erstellung einer eigenen Config-Datei (ansible.cfg) // Referenz auf die inventory (hosts) Datei cd ~/ansible vi ansible.cfg [defaults] inventory=./dev

// Anzeige der Hosts aus der ‘inventory’ Datei (dev) cd ~/ansible ansible –list-hosts all

// Aufruf der einzelnen Gruppen (Hosts) aus der inventory Datei ansible –list-hosts all ansible –list-hosts “*” ansible –list-hosts webserver ansible –list-hosts loadbalancer ansible –list-hosts db01 ansible –list-hosts “db*” ansible –list-hosts webserver:databases ansible –list-hosts webserver[0] ansible –list-hosts webserver[1] ansible –list-hosts \!webserver

// SSH-Zugang testen z.B. lb01 (192.168.10.2) ssh vagrant@192.168.10.2

// Alle Hosts anpingen ansible -m ping all

// Playbook erstellen cd ~/ansible mkdir playbooks cd playbooks vi test.yml

// Playbook ausführen cd ~/ansible ansible-playbook playbooks/test.yml

// Beispiele: Loadbalancer Playbook Webserver Playbook Datenbank Playbook

// Rolle Struktur anlegen (wird aus Ansible Repository geladen) mkdir roles cd roles ansible-galaxy init haproxy ansible-galaxy init apache2 ansible-galaxy init mysql

// Die mit init generierte Struktur sieht wie folgt aus

cd ~/.ansible touch haproxy.yml touch apache2.yml touch mysql.yml

// Rollen auf die angelegten Rollenstruktur referenzieren cd ~/.ansible atom haproxy.yml

// ‘Playbook Tasks’ innerhalb der Rollen auflisten cd ~/ansible/roles/haproxy/tasks/ vi haproxy.yml

// Playbook über die Rollen (roles) ausführen ansible-playbook haproxy.yml # statt ansible-playbook ./playbooks/lb0x.yml

// Rollen https://github.com/netperformance/ansible/tree/master/roles

// Bsp. ‘haproxy Tasks’ innerhalb der Rolle ‘haproxy’ https://github.com/netperformance/ansible/blob/master/roles/haproxy/tasks/main.yml

// Alle Rollen in einer Datei via (include) zusammenfassen und ausführen cd ~/.ansible atom site.yml ansible-playbook site.yml

// Definierte Rollen aufrufen ansible-playbook site.yml –limit app01

// Externe Rollen über https://galaxy.ansible.com ansible-galaxy install < nam_der_rolle >

// VM Informationen (Facts) auslesen ansible -m setup lb01

// Variablen statt hartcodierte Werte // Ausgangssituation innerhalb der Tasks vi /home/vagrant/ansible/roles/haproxy/tasks/main.yml

// Auflistung der Variablen innerhalb von ‘defaults’ Ordner vi /home/vagrant/ansible/roles/haproxy/defaults/main.yml repository: ppa:vbernat/haproxy-1.7

// Einsatz der Variable vi /home/vagrant/ansible/roles/haproxy/tasks/main.yml “{{ repository }}”

// Ausführung Beschleunigen durch Deaktivierung von ‘apt-get update’ // innerhalb von Zeitraum x und ‘gather_facts’ — - hosts: all become: true gather_facts: false tasks: - name: update apt cache apt: update_cache=yes cache_valid_time=10000

// Beschleunigung durch Aktivierung von SSH pipelining sudo visudo vi ~/ansible/ansible.cfg

// Auflistung von Tags ansible-playbook site.yml –list-tags

// Bestimmte Tags ausführen ansible-playbook site.yml –tags “haproxy”

// Tags überspringen ansible-playbook site.yml –skip-tags “haproxy”