![](/img/trans.png)
[英]how to mount the nginx docker container into host using Ansible Playbook?
[英]How to test Ansible playbook using Docker
我是ansible(和docker)的新手。 我想在任何临时/生产服务器上使用之前测试我的ansible playbook。
由于我无法访问空的远程服务器,我认为最简单的测试方法是使用Docker容器,然后以Docker容器作为主机运行我的playbook。
我有一个基本的DockerFile,可以创建一个标准的ubuntu容器。 我如何配置ansible主机以便在docker容器上运行它? 此外,我怀疑我需要“运行”docker容器以允许ansible连接到它。
关于这个有一个有效的例子: https : //github.com/William-Yeh/docker-ansible
首先,从以下列表中选择您要开始的基本图像:
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目录一起放入:
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中的角色williamyeh/nginx
还演示了如何对Travis CI的Ubuntu 12.04工作器实例上的各种Linux发行版进行简单的集成测试。
披露:我是wiliamyeh/nginx
docker-ansible
wiliamyeh/nginx
和wiliamyeh/nginx
项目的作者。
除非您的阶段和生产服务器也是Docker容器,否则在docker容器中运行playbook实际上可能不是最好的方法。 Docker ubuntu映像被剥离,与完整安装有一些区别。 更好的选择可能是在与您的登台和生产安装相匹配的Ubuntu VM中运行playbook。
也就是说,为了在容器中运行ansible playbook,你应该编写一个运行你的playbook的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
ansible库存文件看起来像
[local]
localhost
然后你就可以docker build .
(其中.
是您的Playbooks和Dockerfile所在目录的根目录),然后在生成的图像上docker run
docker。
我为这种不同的场景创建了一个角色: https : //github.com/chrismeyersfsu/provision_docker 。 轻松启动Docker容器并在您的角色或playbook中使用它们作为库存进行测试。
包括:
另请注意,这些示例都有一个.travis.yml
文件,用于使用Travis CI形成CI管道。
例子:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.