provision_docker
provision_docker
Роль Ansible, которая помогает вам тестировать ваши роли. Автоматически создайте контейнеры Docker для каждого вашего хоста в инвентаре. Используйте ваш файл инвентаря для production, чтобы создать контейнеры Docker для разработки и тестирования.
Ресурс | Описание |
---|---|
Блог | Примеры использования provision_docker |
.travis.yml | Пример TravisCI |
Dockerfiles | Подобранные образы Docker с системой инициализации (чтобы работал модуль service ) и SSH-демон. chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 |
test/playbook_*.yml role-install_mongod role-ansible_deps role-iptables |
Примеры проектов и использований provision-docker . |
НОВИНКА docker_connection
Работает с Docker для Mac, VirtualBox, VMware Fusion, Docker Native. Использование docker_connection не требует правил маршрутизации.
# инвентарь
[роботы]
оптимус image="chrismeyers/ubuntu12.04"
бамблби image="ubuntu-upstart:14.04"
# test.yml
- name: Запустить контейнеры Docker для инвентаря с 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: роботы
tasks:
- name: "Поздоровайтесь с моими новыми контейнерами"
ping:
Параметр | Обязательно | По умолчанию | Выборы | Комментарии |
---|---|---|---|---|
provision_docker_image | нет | chrismeyers/centos6 | chrismeyers/centos6 chrismeyers/centos7 chrismeyers/ubuntu12.04 ubuntu-upstart:14.04 другой | Образ Docker, который будет использоваться при запуске контейнера. Контейнеры, указанные слева, специальны. Система инициализации возвращается, и SSH запускается. Это позволяет запускать/останавливать сервисы через модуль service , а также использовать SSH. |
provision_docker_privileged | нет | true | true/false | Запуск контейнера Docker в привилегированном режиме. |
provision_docker_inventory_group | нет | Список имен хостов, которые есть в инвентаре, для которых нужно запустить контейнер Docker. Обратите внимание, что образ Docker, который вы хотите запустить, должен быть переменной хоста, связанной с именем хоста. | ||
provision_docker_inventory | нет | Список пар <имя, образ>, для которых нужно запустить контейнер Docker. | ||
provision_docker_use_docker_connection | нет | false | true/false | Используйте плагин docker_connection для подключения к контейнерам Docker вместо стандартного SSH. |
provision_docker_network | нет | Какое-либо имя из доступных сетей, перечисленных с помощью $ docker network ls |
Укажите сеть, к которой должен подключаться контейнер Docker. | |
provision_docker_volumes | нет | Список томов для монтирования внутри контейнера. | Используйте синтаксис, подобный docker CLI: /host:/container[:mode]. | |
provision_docker_volumes_from | нет | Список имен контейнеров или откуда получить тома. |
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
зависит от возможности SSH подключения к контейнерам. Таким образом, IP-адрес контейнера должен быть доступен (должен существовать маршрут). Если вы используете Docker Toolbox на OS X + VirtualBox, контейнеры не маршрутизируются к хосту. Выполните следующие команды, чтобы добавить маршрут к контейнерам в гостевой ВМ.
/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)
Маршрут не сохраняется после перезагрузки. Чтобы сохранить изменения, отредактируйте /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>
<!-- Вам нужно адаптировать vboxnet0 к интерфейсу, который соответствует вашей настройке, используйте ifconfig, чтобы найти его -->
<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>
Открытие и публикация портов
Установите списки expose
и ports
в вашем инвентаре для каждого контейнера. Проверьте модуль docker_container Ansible для справки.
Схожие работы
- 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
Проекты, использующие 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