chrismeyersfsu.provision_docker
provision_docker
Rola Ansible, która pomaga w testowaniu twoich ról. Automatycznie tworzy kontenery docker dla każdego hosta z twojego inwentarza. Użyj swojego pliku inwentarza produkcyjnego, aby stworzyć kontenery docker do rozwoju i testów.

Zasób | Opis |
---|---|
Post na blogu | Przykłady użycia provision_docker |
.travis.yml | Przykład TravisCI |
Dockerfiles | Opracowane obrazy Docker z systemem inicjalizacji (aby moduł service działał) i demonem ssh. chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 |
test/playbook_*.yml role-install_mongod role-ansible_deps role-iptables |
Przykład projektów i użycia provision-docker . |
NOWOŚĆ docker_connection
Działa z docker dla Mac, VirtualBox, VMware Fusion, docker native. Używanie docker_connection nie wymaga żadnych reguł routingu.
# inwentarz
[robots]
optimus image="chrismeyers/ubuntu12.04"
bumblebee image="ubuntu-upstart:14.04"
# test.yml
- name: Uruchomienie kontenerów docker dla interfejsu inwentarza docker connection
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: "Powitaj moje nowe kontenery"
ping:
parametr | wymagany | domyślny | wybory | komentarze |
---|---|---|---|---|
provision_docker_image | nie | chrismeyers/centos6 | chrismeyers/centos6, chrismeyers/centos7, chrismeyers/ubuntu12.04, ubuntu-upstart:14.04, inne | Obraz Docker do użycia podczas uruchamiania kontenera. Wymienione kontenery są specjalne. System inicjalizacji i ssh zostały uruchomione. Umożliwia to uruchomienie/zatrzymanie usługi za pomocą modułu service oraz ssh. |
provision_docker_privileged | nie | true | true/false | Uruchamia kontener Docker w trybie uprzywilejowanym. |
provision_docker_inventory_group | nie | Lista nazw hostów, które znajdują się w inwentarzu, dla których należy uruchomić kontener Docker. Należy pamiętać, że obraz Docker, który chcesz uruchomić, powinien być powiązany z nazwą hosta. | ||
provision_docker_inventory | nie | Lista par <nazwa, obraz>, dla których należy uruchomić kontener Docker. | ||
provision_docker_use_docker_connection | nie | false | true/false | Użyj wtyczki docker_connection do połączenia z kontenerami Docker zamiast domyślnego ssh. |
provision_docker_network | nie | Jakakolwiek nazwa z dostępnych sieci wymienionych przy $ docker network ls | Określa sieć, do której kontener Docker powinien się podłączyć. | |
provision_docker_volumes | nie | Lista woluminów do zamontowania w kontenerze. | Użyj składni w stylu CLI docker: /host:/container[:tryb]. | |
provision_docker_volumes_from | nie | Lista nazw kontenerów do pobrania woluminów. |
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
opiera się na możliwości ssh do kontenerów. Dlatego adres IP kontenera musi być dostępny (musi istnieć trasa). Jeśli używasz docker toolbox na OS X + virtualbox, kontenery nie są routowane do hosta. Uruchom poniższe polecenia, aby dodać trasę do kontenerów w maszynie gościa.
/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)
Trasa nie jest zachowywana po ponownym uruchomieniu. Aby utrzymać zmiany, edytuj /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>
<!-- Musisz dostosować vboxnet0 do interfejsu, który pasuje do twojego ustawienia, użyj ifconfig, aby to znaleźć -->
<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>
Ekspozycja i publikacja portów
Ustaw listy expose
i ports
w swoim inwentarzu dla każdego kontenera. Zobacz moduł docker_container Ansible jako odniesienie.
Podobne prace
- 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
Projekty korzystające z provision_docker
- 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