Kurztipp: Ansible-Rolle über Vagrant verteilen

Wer größere Aufgaben in Ansible umsetzt, wird früher oder später an den Punkt kommen, seine eigene Ansible-Rolle zu schreiben. Hier kann das ansible-galaxy-Kommando helfen:

$ ansible-galaxy init my-role
- my-role was created successfully

Neben Handlern, Variablen und Metadaten wird auch ein Test-Task erstellt – mit diesem kann die Rolle bequem auf einen Host angewendet werden:

$ cat my-role/tests/test.yml
---
- hosts: localhost
remote_user: root
roles:
- my-role

Dieser Task lässt sich komfortabel mit Vagrant verknüpfen, um ein bereitgestelltes System zu konfigurieren:

config.vm.provision "ansible_local" do |ansible|
  ansible.install_mode = "default"
  ansible.playbook = "my-role/tests/test.yml"
end

Wird nun Vagrant ausgeführt, ist es sehr wahrscheinlich, dass Ansible keine passenden Hosts findet:

$ vagrant up
...
PLAY [localhost] ***************************************************************
skipping: no hosts matched

PLAY RECAP *********************************************************************

Abhilfe schafft hier das ersetzen von localhost durch all im Test-Task:

$ sed -i "s/localhost/all/g" my-role/tests/test.yml

Anschließend funktioniert die Konfiguration:

$ vagrant up --provision
...
PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [default]
...
PLAY RECAP *********************************************************************
default                    : ok=10   changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Sharing is caring

Schreibe einen Kommentar