arnaudblancher.docker_provisionning
arnaudblancher.docker_provisionning
Cel: wziąć inwentarz ansible i stworzyć jeden kontener docker dla każdego wymienionego hosta.
Po tym możesz wdrożyć ulubiony skrypt ansible na tych kontenerach docker i łatwo oraz bezpiecznie przeprowadzić pełne testy w nowym, czystym środowisku bez tworzenia nowych wirtualnych maszyn.
Po testach wystarczy zniszczyć te kontenery za pomocą roli ansible arnaudblancher.docker_unprovisonning.
Wymagania
- docker-engine
Upewnij się, że masz działający docker-engine, przetestuj za pomocą (prawdopodobnie jako root ...)
docker info
Jeśli potrzebujesz, zainstaluj docker-engine
Tutaj docker-engine 1.11 na 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
Na Ubuntu Trusty,
zamień python-docker
na:
sudo apt-get install python-pip
sudo pip install docker-py
Zmienne roli
zobacz defaults/main.yml
Zależności
Brak
Przykładowy skrypt
Zobacz podkatalog ./demo/
cat demo/docker-provisionning.yml
- name: "stwórz wszystkie obrazy docker i kontenery dla wszystkich hostów wymienionych w inwentarzu"
hosts: localhost
gather_facts: no
roles:
- { role : arnaudblancher.docker_provisionning,
docker_provisionning_net: "ansible_myplateform" }
cat inventory/docker/000_hosts
[mysql]
# użyj domyślnego docker_provisionning_image skonfigurowanego w defaults/main.yml
dock_mysql
[apache]
# określ konkretny docker_provisionning_image dla tego kontenera
dock_apache docker_provisionning_image="ubuntu1604"
[jmeter]
# Opcjonalnie, docker_provisionning_dockerfile określa alternatywną ścieżkę do dockerfile poza rolą;
# ścieżka musi być względna do 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
# nadpisz domyślne/main.yml os dla docker_provisionning
docker_provisionning_image: "ubuntu1404"
cat inventory/docker/group_vars/all
# dodaj aliasy hostów dla kontenerów
docker_provisionning_aliases:
dock_mysql:
- "bdd01"
- "bdd02"
dock_apache:
- www01
- www02
- www03
wywołaj :
ansible-playbook -i inventory/docker/ docker-provisionning.yml
Licencja
GPLv3
Informacje o autorze
Arnaud Blancher
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.docker_provisionning