Zum Inhalt

Vagrant und Ansible – von der Basebox zur fertigen VM Pt. III

Ging es in Part I und Part II bisher um eine Vorstellung von Vagrant und Ansible sowie die Grundeinrichtung der Vagrant Machine, möchte ich euch jetzt die Integration bzw. Provisionierung via Ansible zeigen.

Für den Start brauchen wir eine Ansible Rolle bzw. ein Playbook. Dazu erstellen wir im gleichen Ordner wo bereits das Vagrantfile liegt einen Ordner Namens „ansible“ zum Beispiel via mkdir ansible. Danach wechseln wir via cd ansible in den neu erstellen Ordner. In diesem Ordner legen wir dann folgendes an:

  1. Die Datei „site.yml“ (zum Beispiel via touch site.yml
  2. Einen Ordner mit Namen „roles“
    1. Einen Unterordner „example“ unter „roles“
      1. Einen Unterordner „task“ unter „example“
        1. Die Datei „main.yml“ unter „task“

Wenn die Ordner und Dateien angelegt sind, müssen wir in der Datei ansible/site.yml ein paar Parameter für unser „Play“ angeben. Wir öffnen die Datei ansible/site.yml zum Beispiel via nano ansible/site.yml und kopieren den folgenden Inhalt ein:

---

- hosts: all
  gather_facts: False
  tasks:
    - name: install prerequisites on remote machine
      raw: sudo apt update && sudo apt install -y python-minimal ansible


Dieser Teil sorgt dafür, dass auf dem Zielsystem python und ansible installiert wird. Für die Nutzung von Ansible ist Python auf dem zu provisionierenden System vorhanden sein, bei der von mir gewählten BaseBox ist dies leider nicht der Fall, daher muss es nachinstalliert werden.

Direkt darunter müssen wir dann folgenden Inhalt kopieren:


- name: Vagrant und Ansible – von der Basebox zur fertigen VM Pt. III
  hosts: all
  become: yes
  become_method: sudo
  roles:
    - example

In der site.yml werden verschiedene Parameter definiert. Der Parameter name gibt an, welchen Namen unser Playbook haben wird. Über hosts werden die zu provisionierenden Hosts definiert. In der hier skizzierten Umgebung reicht es, wenn man „all“ einträgt, dann werden automatisch alle Vagrant Machines provisioniert. Die Parameter become und become_method weisen Ansible an, via sudo erhöhte Rechte zu bekommen um zum Beispiel Software installieren zu können. Mit roles werden die Rollen definiert die Teil des Playbooks sein sollen. Wir haben das Verzeichnis „example“ erstellt und anhand des Namen der Rolle, „weiß“ Ansible, in welchem Unterverzeichnis es nachschauen muss.

Aktuell hat die Rolle example jedoch noch keinen Inhalt, bzw. führt noch keine Befehle aus. Um dies zu ändern, bearbeiten wir die Datei ansible/roles/example/tasks/main.yml und fügen folgendes ein:

---

- name: install midnight commander
  apt: pkg=mc state=installed

Mit name wird der Name des Tasks angegeben, in unserem Fall installieren wir den Midnight Commander. In der folgenden Zeile wird das zu benutztende Ansible Modul angegeben (http://docs.ansible.com/ansible/latest/modules_by_category.html). Mit pkg wird das zu installierende Paket angegeben und via state=installed, dass es installiert werden/sein soll.

Wenn soweit alles geklappt hat, müssen wir im Vagrantfile noch ansible als Provisioner angeben. Dies können wir mit den folgenden Zeilen erreichen: (dieser Part muss vor dem abschließenden „end“ eingefügt werden)

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "ansible/site.yml"
  end

Wenn soweit alles fertig ist, können wir via vagrant up die VM neu erstellen. Ihr solltet dann in etwas folgende Ausgabe bekommen (nur ohne die Kühe 😉 )

Damit hätten wir unsere erste VM mit Vagrant erstellt und via Ansible provisioniert. Ich hoffe, dass mein kleines Tutorial verständlich war und ihr daraus ein paar grundlegende Informationen mitnehmen konntet.

Published inAllgemein

Schreibe den ersten Kommentar

    Schreibe einen Kommentar

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