【发布时间】:2018-11-03 17:46:31
【问题描述】:
我想使用 docker 容器中的 ansible 在我的本地机器上运行 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 角色能够执行, 然而,剧本似乎是在高山容器上运行的。 我想问一下如何在docker中指示ansible在我的本地机器上部署东西?
【问题讨论】:
-
brew install ansible会容易得多。在此设置中,Ansible-in-a-container 需要一个路径来远程执行主机上的管理命令,这可能意味着类似于与host.docker.internal的 ssh 连接,这反过来意味着在主机上运行 sshd 并推送有效密钥配对到容器中。尝试在 Docker 容器中嵌入一个管理主机的工具会使一切变得比实际需要的困难得多。 -
是的,这会更容易。但是我想让我的环境独立于除 docker 之外的其他工具,并学习如何做这样的事情:) 谢谢你,Dave。
-
你能让这个工作吗?也许用 net=host?