我想使用来自 docker 容器的 ansible 在我的本地机器上运行 ansible playbook。这是我的 Ansible Dockerfile 的样子:
FROM alpine:3.6
WORKDIR /ansible
RUN apk update \
&& apk add ansible
ENTRYPOINT ["ansible-playbook"]
Run Code Online (Sandbox Code Playgroud)
剧本.yml:
---
- hosts: localhost
roles:
- osx
Run Code Online (Sandbox Code Playgroud)
角色/osx/tasks/main.yml
---
- name: Welcome
shell: echo "Hello"
when: ansible_distribution == 'MacOSX'
Run Code Online (Sandbox Code Playgroud)
然后我运行它:
docker build -t ansible_image:latest .
docker run --rm --network host \
-v $(pwd):/ansible \
ansible_image:latest ansible/playbook.yml
Run Code Online (Sandbox Code Playgroud)
我的主机操作系统是 OS X。我希望 osx 角色会执行,但似乎 playbook 是在 alpine 容器上运行的。我想问一下如何在docker中指示ansible在我的本地机器上部署东西?
您的剧本针对localhost:
---
- hosts: localhost
roles:
- osx
Run Code Online (Sandbox Code Playgroud)
这意味着 Ansible 将在运行 playbook 时以本地机器(即您的 Ansible 容器)为目标。Ansible 旨在将 playbook 也应用于远程机器,通常通过使用ssh. 假设可以使用 连接从您的 Ansible 容器到您的主机ssh,您只需创建一个适当的清单文件,然后适当地定位您的剧本:
---
- hosts: my_osx_host
roles:
- osx
Run Code Online (Sandbox Code Playgroud)
如果您刚开始使用 Ansible,您可能希望从入门文档开始,然后从那里开始。您会在该站点上找到应该引导您完成创建清单文件的过程的文档。
| 归档时间: |
|
| 查看次数: |
3353 次 |
| 最近记录: |