Hey Leute,
hier mal ein schnelles Tutorial wie ihr eine VM mit vagrant erstellen und mit Ansible konfiguriren könnt.
Das Ziel des Tutorial ist es eine Ubuntu VM zu erstellen auf welcher ein LEMP Stack am laufen ist.
LEMP = Linux, Nginx, Mysql, PHP
Das fertige Projekt kann hier gefunden werden: https://gitlab.com/fl0/ansible-tut
Requirements:
- Virtualbox -> https://www.virtualbox.org/wiki/Downloads
- Vagrant -> https://www.vagrantup.com/downloads.html
Side note: Ich schreib das Tutorial unter Mac (Hater gonna hate)
Und los geht es.
Als erstes brauchen wir natürlich eine VM in der wir dann den LEMP Stack aufsetzen können. Dafür nutzen wir
die auf Ruby basierende vagrant Anwendung. Vagrant laesst uns ohne grossen Aufwand VM's erstellen und verwalten. Das ganze wird gesteuert über einen Konfigurationsdatei "Vagrantfile".
Hier definieren wir in unserem Fall folgende Dinge:
- 512mb Ram und ein CPU Kern
- Ubuntu
- Teile den momentanen Ordner mit der VM
- SSH Key forwarding
- Nutze Ansible zur konfiguration
> https://gitlab.com/fl0/ansible-tut/b...er/Vagrantfile
Nun müssen wir irgendwie Ansible auf der VM installieren. Dafür führt vagrant die windows.sh auf der VM aus. Das haben wir vorhin in der Vagrantfile definiert. Die windows.sh fügt einfach nur das ansible repository hinzu und installiert dann ansible ueber apt. Dazu hinaus setzen wir ein ssh keypair. Mehr dazu könnt ihr in den vagrant Docs finden.
https://www.vagrantup.com/docs/boxes/base.html
"vagrant" User
By default, Vagrant expects a "vagrant" user to SSH into the machine as. This user should be setup with the insecure keypair that Vagrant uses as a default to attempt to SSH. Also, even though Vagrant uses key-based authentication by default, it is a general convention to set the password for the "vagrant" user to "vagrant". This lets people login as that user manually if they need to.
To configure SSH access with the insecure keypair, place the public key into the ~/.ssh/authorized_keys file for the "vagrant" user. Note that OpenSSH is very picky about file permissions. Therefore, make sure that ~/.ssh has 0700 permissions and the authorized keys file has 0600 permissions.
When Vagrant boots a box and detects the insecure keypair, it will automatically replace it with a randomly generated keypair for additional security while the box is running.
So nun kommen wir endlich zu dem spassigen Teil, wie wir mithilfe von ansible den Server konfigurieren können. Ansible nutzt sogenannte "Playbooks" welche definieren wie und was installiert/konfiguriert wird. Der Einstieg hierfür ist playbook.yml
Hier definieren wir welche roles (Aufgaben/Tasks) ausgeführt werden sollen. Wir haben folgende definiert:
- vagrant_local (vagrant spezifische konfiguration)
- nginx
- mysql
- php
https://gitlab.com/fl0/ansible-tut/b...e/playbook.yml
Von Haus aus weiss Ansible nicht wie nginx installiert wird. Dafür müssen wir die Rolle selber beschreiben. Hierzu erstellen wir im Ordner roles den Ordner nginx. Hier finden wir handlers, tasks und templates.
Im Ordner tasks definieren wir die Aufgaben die Ansible zu erledigen hat. Im Fall von nginx sind die folgenden Aufgaben definiert:
- Installiere über apt das Packet nginx
- Kopiere das Template nach /etc/nginx/sites-available/default.
- Wenn der Kopiervorgang erfolgreich ist feuern wir das Event "restart nginx"
Wie der Ordername schon vermuten laesst sind im Ordner templates alle Templates fuer die Rolle nginx definiert. Ansible nutzt hier die Template engine Jinja2. Die variablen sind in vars/all.yml definiert.
Dann haben wir noch den Ordner handlers. Hier können wir Events definieren und was passieren soll wenn diese ausgelöst. Wie vorhin angesprochen feuern wir das event "restart nginx". Hier definieren das im Falle von "restart nginx" der Service nginx neugestartet werden muss. Duhhh
https://gitlab.com/fl0/ansible-tut/t...le/roles/nginx
Das gleiche Prinzip verwenden wir jetzt um die Rollen php und mysql zu definieren.
https://gitlab.com/fl0/ansible-tut/t...ible/roles/php
https://gitlab.com/fl0/ansible-tut/t...le/roles/mysql
Ansible bietet natürlich einen Haufen mehr als was ich jetzt in dem kurzen Tutorial erklären kann. Am besten schaut ihr euch mal in den Docs um http://docs.ansible.com/ansible/playbooks.html
Zu guter letzt wollen wir natürlich auch was sehen:
> git clone https://gitlab.com/fl0/ansible-tut.git
> cd ansible-tut
> vagrant up
Sobald der Befehl durchgelaufen ist könnt ihr 192.168.33.99 im Browser aufrufen.
Ihr könnt natürlich euch auch per ssh mit der VM verbinden
> vagrant ssh
Soooooo, das war es auch schon. Ich hoffe das hat dem ein oder anderen geholfen und natürlich freue Ich mich ueber Kritik und Vorschlägen.