chrismeyersfsu.provision_docker
provision_docker
Eine Ansible-Rolle, die Ihnen hilft, Ihre Rollen zu testen. Automatisch Docker-Container für jeden Ihrer Inventar-Hosts erstellen. Verwenden Sie Ihre Produktionsinventardatei, um Docker-Container für Entwicklung und Tests zu erstellen.

Ressource | Beschreibung |
---|---|
Blog-Beitrag | Beispiel für die Verwendung von provision_docker |
.travis.yml | Beispiel TravisCI |
Dockerfiles | Kuratierte Docker-Images mit Init-System (damit das service -Modul funktioniert) und SSH-Daemon.chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 |
test/playbook_*.yml role-install_mongod role-ansible_deps role-iptables |
Beispielprojekte und Verwendungen für provision_docker . |
NEU docker_connection
Funktioniert mit Docker für Mac, VirtualBox, VMware Fusion, Docker nativ. Die Verwendung von docker_connection erfordert keine Routing-Regeln.
# inventory
[robots]
optimus image="chrismeyers/ubuntu12.04"
bumblebee image="ubuntu-upstart:14.04"
# test.yml
- name: Docker-Container für Docker-Verbindungsinventar-Schnittstelle starten
hosts: localhost
roles:
- role: provision_docker
provision_docker_privileged: true,
provision_docker_inventory_group: "{{ groups['robots'] }}"
provision_docker_use_docker_connection: true
- hosts: robots
tasks:
- name: "Hallo zu meinen neuen Containern sagen"
ping:
| Parameter | erforderlich | Standard | Optionen | Kommentare |
|---------------------------------------- |------------- |--------------------- |-------------------------------------------------------------------------------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| provision_docker_image | nein | chrismeyers/centos6 | chrismeyers/centos6, chrismeyers/centos7, chrismeyers/ubuntu12.04, ubuntu-upstart:14.04, andere | Docker-Image, das beim Starten des Containers verwendet wird. Die auf der linken Seite aufgelisteten Container sind speziell. Das Init-System wird wiederhergestellt und SSH wird gestartet. Dies ermöglicht das Starten/Stopp von Diensten über das service
-Modul sowie SSH. |
| provision_docker_privileged | nein | true | true/false | Docker-Container im privilegierten Modus starten. |
| provision_docker_inventory_group | nein | | | Liste der Hostnamen, die im Inventar stehen und für die ein Docker-Container gestartet werden soll. Beachten Sie, dass das Docker-Image, das Sie starten möchten, eine Hostvariable sein sollte, die mit dem Hostnamen verknüpft ist. |
| provision_docker_inventory | nein | | | Liste von <Name, Image> Paaren, für die ein Docker-Container gestartet werden soll. |
| provision_docker_use_docker_connection | nein | false | true/false | Verwenden Sie das docker_connection-Plugin, um sich mit Docker-Containern zu verbinden, anstelle des standardmäßigen SSH. |
| provision_docker_network | nein | | Ein Name aus den verfügbaren Netzwerken, wie mit $ docker network ls
aufgelistet. | Geben Sie das Netzwerk an, mit dem der Docker-Container verbunden werden soll. |
| provision_docker_volumes | nein | | Liste der Volumes, die im Container gemountet werden sollen. | Verwenden Sie die Docker-CLI-ähnliche Syntax: /host:/container[:mode]. |
| provision_docker_volumes_from | nein | | Liste der Container, von denen Volumes genommen werden. | |
Mac OS X + docker-machine + VMware Fusion
sudo /sbin/route -n add -net 172.17.0.0 -netmask 255.255.0.0 -gateway $(docker-machine ip default)
Mac OS X + docker-machine + VirtualBox
provision_docker
ist darauf angewiesen, dass SSH zu Containern möglich ist. Daher muss die IP des Containers zugänglich sein (eine Route muss vorhanden sein). Wenn Sie Docker Toolbox unter macOS + VirtualBox verwenden, sind die Container nicht mit dem Host verbunden. Führen Sie die folgenden Befehle aus, um eine Route zu den Containern im Gast-VM hinzuzufügen.
/usr/sbin/scutil -w State:/Network/Interface/vboxnet0/IPv4 -t 0
sudo /sbin/route -n add -net 172.17.0.0 -netmask 255.255.0.0 -gateway $(docker-machine ip)
Die Route bleibt bei Neustarts nicht bestehen. Um die Änderungen dauerhaft zu machen, bearbeiten Sie /Library/LaunchDaemons/com.docker.route.plist
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<plist version='1.0'>
<dict>
<key>Label</key>
<string>com.docker.route</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<!-- Sie müssen vboxnet0 an die passende Schnittstelle anpassen, verwenden Sie ifconfig, um sie zu finden -->
<string>/usr/sbin/scutil -w State:/Network/Interface/vboxnet0/IPv4 -t 0;sudo /sbin/route -n add -net 172.17.0.0 -netmask 255.255.0.0 -gateway 192.168.99.100</string>
</array>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<true/>
<key>LaunchOnlyOnce</key>
<true/>
</dict>
</plist>
Ports freigeben und veröffentlichen
Setzen Sie die Listen expose
und ports
in Ihrem Inventar pro Container. Schauen Sie sich das docker_container Ansible-Modul zur Referenz an.
Ähnliche Arbeiten
- https://github.com/metacloud/molecule
- https://github.com/AerisCloud/ansible-role-test
- http://www.jeffgeerling.com/blog/testing-ansible-roles-travis-ci-github
- https://github.com/geerlingguy/ansible-role-apache
- https://github.com/neillturner/kitchen-ansible
Projekte, die provision_docker verwenden
- https://github.com/mbreisch/ssh-role
- https://github.com/mbreisch/ufw-role
- https://github.com/mbreisch/ssmtp-role
- https://github.com/mbreisch/deploy-user-role
- https://github.com/mbreisch/s3cmd-role
- https://github.com/mbreisch/unattended-upgrades-role/tree/master/tests
- https://github.com/Maarc/ansible-role-redhat-jboss-common
- https://github.com/sderen/ansible-grafana
- https://github.com/sderen/ansible-nginxgunicorn
- https://github.com/Maarc/ansible-role-redhat-jboss-web-server-httpd
- https://github.com/Maarc/ansible-role-redhat-jboss-web-server-tomcat
- https://github.com/Maarc/ansible-role-redhat-jboss-eap
- https://github.com/rhtconsulting/jboss_fuse
- https://github.com/rhtconsulting/jboss_bxms
- https://github.com/mlanin/ansible-laravel5/tree/master/roles/carlosbuenosvinos.ansistrano-deploy
- https://github.com/Maarc/ansible-role-redhat-jboss-common
- https://github.com/turkenh/ansible-role-parse-mongodb
- https://github.com/tomashavlas/ansible-role-users_profiles
- https://github.com/tomashavlas/ansible-role-system_users
- https://github.com/tomashavlas/ansible-role-authorized_keys
- https://github.com/tomashavlas/ansible-role-sudo
- https://github.com/tomashavlas/ansible-role-system_groups
- https://github.com/rhevm-qe-automation/ovirt-ansible
- https://github.com/rhevm-qe-automation/ansible-role-seal
Provision docker containers using inventory.
ansible-galaxy install chrismeyersfsu.provision_docker