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“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.