如何使用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/nginx
和wiliamyeh/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