从Docker容器中运行Ansible Playbook并部署到主机上

4

我希望能够使用从Docker容器中的ansible运行playbook在我的本地机器上。以下是我的Ansible Dockerfile:

FROM alpine:3.6

WORKDIR /ansible

RUN apk update \
    && apk add ansible

ENTRYPOINT ["ansible-playbook"]

playbook.yml:

---
- hosts: localhost
  roles:
  - osx

roles/osx/tasks/main.yml

---
- name: Welcome
  shell: echo "Hello"
  when: ansible_distribution == 'MacOSX'

我用以下命令运行它:

docker build -t ansible_image:latest .
docker run --rm --network host \
-v $(pwd):/ansible \
ansible_image:latest ansible/playbook.yml

我的主机操作系统是OS X。我希望osx角色会被执行,但似乎playbook在alpine容器上运行。我想问如何指示ansible在docker中部署东西到我的本地机器?


1
安装Ansible将变得非常容易。在这个设置中,Ansible-in-a-container需要一个路径来远程执行主机上的管理命令,这可能意味着像ssh连接到host.docker.internal这样的东西,这又意味着在主机上运行sshd并将有效的密钥对推入容器中。试图嵌入一个工具来管理Docker容器使一切变得比必要的困难。 - David Maze
是的,这样会更容易。但是我想让我的环境独立于除了Docker之外的其他工具,并学习如何做这样的事情 :) 谢谢,Dave。 - Persi
1
你能让它工作吗?也许使用net=host? - FuzzyAmi
1个回答

7
你的手册针对 localhost
---
- hosts: localhost
  roles:
  - osx

这意味着当运行playbook时,Ansible将针对本地计算机(也就是您的Ansible容器)进行操作。Ansible旨在将playbook应用于远程计算机,通常通过使用ssh连接到远程计算机。假设从您的Ansible容器可以使用ssh连接到主机,则只需创建适当的清单文件,然后相应地定位您的playbook即可:
---
- hosts: my_osx_host
  roles:
  - osx

如果你刚开始使用Ansible,你可能想从入门指南开始,并从那里逐步学习。你会在网站上找到相关文档,帮助你完成创建清单文件的过程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接