docker_provisionning

arnaudblancher.docker_provisionning

Цель: взять инвентарь Ansible и создать один контейнер Docker для каждого перечисленного хоста.

После этого вы сможете развернуть свой любимый плейбук Ansible на этих инвентарях Docker и легко и безопасно провести полные тесты в новой и чистой среде без создания новых виртуальных машин.

После тестов просто уничтожьте эти контейнеры с помощью роли Ansible arnaudblancher.docker_unprovisonning.

Требования

  • docker-engine

Убедитесь, что у вас работает docker-engine, проверьте с помощью (вероятно, как root ...)

docker info

Если нужно, установите docker-engine

Здесь docker-engine 1.11 на Debian Jessie

apt-get remove docker.io python-docker
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo 'deb https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install docker-engine python-docker

На Ubuntu Trusty,

замените python-docker

на:

sudo apt-get install python-pip
sudo pip install docker-py

Переменные роли

пожалуйста, смотрите defaults/main.yml

Зависимости

Нет

Пример Плейбука

Пожалуйста, смотрите подпапку ./demo/

cat demo/docker-provisionning.yml

- name: "создать все образы и контейнеры Docker для всех хостов, перечисленных в инвентаре"
  hosts: localhost
  gather_facts: no

  roles:
    - { role : arnaudblancher.docker_provisionning,
      docker_provisionning_net: "ansible_myplateform" }

cat inventory/docker/000_hosts

[mysql]
# используйте образ docker_provisionning_image по умолчанию, настроенный в defaults/main.yml
dock_mysql

[apache]
# укажите конкретный образ docker_provisionning_image для этого контейнера
dock_apache docker_provisionning_image="ubuntu1604"

[jmeter]
# Необязательный docker_provisionning_dockerfile указывает альтернативный путь к dockerfile вне роли;
# путь должен быть относительным к roles/arnaudblancher.docker_provisionning/dockerfiles/
dock_jmeter docker_provisionning_image="jmeter2.13private"  docker_provisionning_dockerfile="../../../local_files/dockerfiles/jmeter2.13private"

[all:vars]
ansible_connection=docker

cat group_vars/all

# переопределите os из default/main.yml для docker_provisionning
docker_provisionning_image: "ubuntu1404"

cat inventory/docker/group_vars/all

# добавьте псевдонимы хостов для контейнеров
docker_provisionning_aliases:
  dock_mysql:
    - "bdd01"
    - "bdd02"
  dock_apache:
    - www01
    - www02
    - www03

вызовите:

ansible-playbook  -i inventory/docker/ docker-provisionning.yml

Лицензия

GPLv3

Информация об авторе

Арно Бланше

https://github.com/arnaudblancher/ansible-role-docker_provisionning

О проекте

Take an ansible inventory and create one docker container for each listed hosts. After you can deploy your favorite ansible playbook on theses docker-inventory and make easily and safely full tests in a new and clean environnement.

Установить
ansible-galaxy install arnaudblancher/ansible-role-docker_provisionning
Лицензия
Unknown
Загрузки
94
Владелец