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

时间:2018-11-03 17:46:31

标签: docker ansible

我想在本地计算机上使用docker容器中的ansible运行ansible剧本。 这是我的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

我的主机操作系统是OSX。我希望osx角色能够执行, 但是,似乎剧本是在高山容器上运行的。 我想问一下如何在docker中指示是否可以在本地计算机上部署内容?

1 个答案:

答案 0 :(得分:4)

您的剧本定位到localhost

---
- hosts: localhost
  roles:
  - osx

这意味着Ansible将定位到本地计算机(即 比方说,您在运行剧本时的Ansible容器)。 Ansible是 旨在将剧本也应用于远程计算机,通常是通过 使用ssh连接到他们。假设有可能 使用ssh从Ansible容器连接到主机,您 可以只创建一个合适的库存文件,然后定位您的 适当的剧本:

---
- hosts: my_osx_host
  roles:
  - osx

如果您刚开始使用Ansible,则可能要开始 Getting Started文档,然后从那里开始。您会在该站点上找到文档,这些文档将引导您完成创建清单文件的过程。