Wie um zu testen, Ansible playbook mit Docker
Ich bin neu auf ansible (und Andockfenster). Ich würde gerne testen, meine ansible playbook, bevor Sie es auf jede staging - /production-Server.
Da ich keinen Zugriff auf eine leere remote-server, ich dachte, die einfachste Art zu testen wäre, um Docker-container und dann nur mein playbook mit dem Docker-container als host.
Habe ich eine grundlegende DockerFile erstellt, die standard-ubuntu-container. Wie kann ich das konfigurieren das ansible-hosts, um zu führen Sie es gegen die docker-container? Auch vermute ich, dass ich brauchen würde, um "run" der docker-container zu ermöglichen, ansible, um eine Verbindung herzustellen.
- Molekül ist die offizielle Test-framework: jeffgeerling.com/blog/2018/testing-your-ansible-roles-molecule
Du musst angemeldet sein, um einen Kommentar abzugeben.
Läuft das playbook in einem docker-container kann eigentlich nicht der beste Ansatz sein, es sei denn, Ihre Bühne-und Produktions-Server sind auch Docker-Container. Das Andockfenster ubuntu-image ist zerlegt und wird einige Unterschiede von einer vollständigen installation. Eine bessere option sein könnte, um zu laufen, das playbook in eine Ubuntu-VM, die mit Ihrem staging-und Produktions-Anlagen.
Sagte, dass, um das ansible-playbook in den container, Sie sollten schreiben ein Dockerfile, das läuft, das playbook. Hier ist ein Beispiel Dockerfile:
Den ansible Inventar-Datei Aussehen würde,
Dann kann man nur
docker build .
(wo.
ist die Wurzel des Verzeichnisses, in dem Sie Ihre playbooks und Dockerfile live), danndocker run
auf das resultierende Bild.Michael DeHaan, der CTO von Ansible, hat einen informativen blog-Beitrag zu diesem Thema.
Gibt es ein funktionierendes Beispiel zu diesem: https://github.com/William-Yeh/docker-ansible
Wählen Sie zunächst das Basis-image, das Sie beginnen möchten aus der folgenden Liste:
williamyeh/ansible:debian8-onbuild
williamyeh/ansible:debian7-onbuild
williamyeh/ansible:ubuntu14.04-onbuild
williamyeh/ansible:ubuntu12.04-onbuild
williamyeh/ansible:centos7-onbuild
williamyeh/ansible:centos6-onbuild
Zweitens setzen Sie die folgenden
Dockerfile
zusammen mit Ihrem playbook Verzeichnis:Dritten
docker build .
... Für erweiterte Anwendung, die Rolle in Ansible Galaxy
williamyeh/nginx
auch veranschaulicht, wie eine einfache integration-test für eine Vielzahl von Linux-Distributionen auf Travis CI's Ubuntu 12.04 worker-Instanzen.Offenlegung: ich bin der Autor des
docker-ansible
undwiliamyeh/nginx
Projekte.Ich habe eine Rolle angelegt, die für diese variieren Szenario: https://github.com/chrismeyersfsu/provision_docker. Einfach start Docker-Container und verwenden Sie Sie in Ihrer Rolle oder playbook, als Bestand, zum testen.
Umfasst:
Beachten Sie auch die Beispiele haben alle einen
.travis.yml
- Datei zu bilden, ein CI-pipeline mit Travis CI.Beispiele:
Abgesehen von der Bereitstellung von localhost (die Maschine, wo Sie haben Ansible installiert), man kann auch sagen, Ansible zu:
Damit dies funktioniert, müssen Sie eine solche
hosts.yaml
Datei:solche
playbook.yaml
Datei:und anderen playbook-Datei:
destroy.yaml
zur Vernichtung der container:Erstellen auch eine einfache Rolle:
roles/simple/taksks/main.yaml
Und nun einen container erstellen und bereitstellen, es führen:
Stellen Sie sicher, dass container bereitgestellt wurde (die Datei erstellt wurde):
Zu zerstören, die container laufen:
Gibt es natürlich auch Nachteile:
pip3 install docker
)Ich wurde inspiriert von diesem blog-post: https://medium.com/@andreilhicas/provision-docker-containers-with-ansible-30cc5ee6d950