Zum Inhalt springen

Ansible: Vagrant VM Provisionierung

    // 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“