arnaudblancher.docker_provisionning

arnaudblancher.docker_provisionning

目标:使用 Ansible 清单为每个列出的主机创建一个 Docker 容器。

之后,您可以在这些 Docker 清单上部署您喜欢的 Ansible 剧本,并在一个新的、干净的环境中轻松、安全地进行全面测试,而无需新的虚拟机。

测试完成后,只需使用 Ansible 角色 arnaudblancher.docker_unprovisonning 销毁这些 Docker 容器。

要求

  • docker-engine

确保您正在运行 docker-engine,可以使用以下命令进行测试(可能需要以 root 身份运行……)

docker info

如果需要,请安装 docker-engine

这里以 Debian Jessie 为例安装 docker-engine 1.11

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]
# 使用 defaults/main.yml 中配置的默认 docker_provisionning_image
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

# 为 docker_provisionning 覆盖默认的 main.yml
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

作者信息

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
许可证
Unknown
下载
111
拥有者