如何使用DockertestingAnsible playbook

我是新的ansible(和docker工人)。 我想在任何舞台/制作服务器上使用它之前,先testing我的剧本。

由于我没有访问一个空的远程服务器,我认为最简单的testing方法是使用Docker容器,然后运行Docker容器作为主机的Playbook。

我有一个基本的DockerFile创build一个标准的Ubuntu容器。 我将如何configuration可靠的主机才能在docker集装箱上运行? 此外,我怀疑我需要“运行”docker集装箱,以允许连接到它。

在Docker容器中运行剧本可能不是最好的方法,除非您的舞台和生产服务器也是Docker容器。 Docker的ubuntu映像被剥离下来,并且与完整的安装有一些区别。 更好的select可能是在Ubuntu虚拟机中运行与您的分段和生产安装相匹配的剧本。

也就是说,为了在容器中运行可靠的手册,你应该写一个运行你的手册的Dockerfile。 这里是一个示例Dockerfile:

# Start with the ubuntu image FROM ubuntu # Update apt cache RUN apt-get -y update # Install ansible dependencies RUN apt-get install -y python-yaml python-jinja2 git # Clone ansible repo (could also add the ansible PPA and do an apt-get install instead) RUN git clone http://github.com/ansible/ansible.git /tmp/ansible # Set variables for ansible WORKDIR /tmp/ansible ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin ENV ANSIBLE_LIBRARY /tmp/ansible/library ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH # add playbooks to the image. This might be a git repo instead ADD playbooks/ /etc/ansible/ ADD inventory /etc/ansible/hosts WORKDIR /etc/ansible # Run ansible using the site.yml playbook RUN ansible-playbook /etc/ansible/site.yml -c local 

可靠的库存文件看起来像

 [local] localhost 

那么你可以只是docker build . (其中.是您的playbooks和Dockerfile所在目录的根目录),然后docker docker run在生成的图像上。

Ansible的首席技术官Michael DeHaan 在这个主题上发表了一篇博文 。

有一个有关这个工作的例子: https : //github.com/William-Yeh/docker-ansible

首先,从以下列表中select您想要开始的基本图像:

  • williamyeh/ansible:debian8-onbuild
  • williamyeh/ansible:debian7-onbuild
  • williamyeh/ansible:ubuntu14.04-onbuild
  • williamyeh/ansible:ubuntu12.04-onbuild
  • williamyeh/ansible:centos7-onbuild
  • williamyeh/ansible:centos6-onbuild

其次,把下面的Dockerfile和你的playbook目录Dockerfile一起:

 FROM williamyeh/ansible:ubuntu14.04-onbuild # ==> Specify playbook filename; default = "playbook.yml" #ENV PLAYBOOK playbook.yml # ==> Specify inventory filename; default = "/etc/ansible/hosts" #ENV INVENTORY inventory.ini # ==> Executing Ansible... RUN ansible-playbook-wrapper 

三, docker build .

对于更高级的用法,Ansible Galaxy中的angular色williamyeh/nginx也演示了如何在Travis CI的Ubuntu 12.04 worker实例上对各种Linux发行版进行简单的集成testing。

披露:我是wiliamyeh/nginx docker-ansible wiliamyeh/nginxwiliamyeh/nginx项目的作者。

我为这个不同的场景创build了一个angular色: https : //github.com/chrismeyersfsu/provision_docker 。 轻松启动Docker容器,并将其用于angular色或剧本,作为库存,以进行testing。

包括:

  • 用于Ubuntu 12.04和14.04的精心devise的Dockerfile,以及放回发行版的init系统中的CentOS 6和7
  • 启动ssh

还要注意,所有的例子都有一个.travis.yml文件,用Travis CI来形成一个CIpipe道。

例子:

  • 简单: https : //github.com/chrismeyersfsu/provision_docker/tree/master/test
  • 简单: https : //github.com/chrismeyersfsu/role-iptables/tree/master/test
  • 高级: https : //github.com/chrismeyersfsu/role-install_mongod/tree/master/test