【发布时间】:2019-10-31 11:30:06
【问题描述】:
我正在尝试针对使用相同名称运行容器的多个主机运行 ansible playbook。有 3 台主机,每台主机都运行一个名为“web”的容器。我正在尝试使用 docker 连接。
我正在使用 hosts 文件的典型模式,该模式适用于在主机上运行 ansible 模块。
- name: Ping
ping:
- name: Add web container to inventory
add_host:
name: web
ansible_connection: docker
ansible_docker_extra_args: "-H=tcp://{{ ansible_host }}:2375"
ansible_user: root
changed_when: false
- name: Remove old logging directory
delegate_to: web
file:
state: absent
path: /var/log/old_logs
它仅适用于hosts 文件中的第一个主机
PLAY [all]
TASK [Gathering Facts]
ok: [web1]
ok: [web2]
ok: [web3]
TASK [web-playbook : Ping]
ok: [web1]
ok: [web2]
ok: [web3]
TASK [web-playbook : Add sensor container to inventory]
ok: [web1]
PLAY RECAP
web1 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
web2 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
web3 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
我尝试将name 设置为web_{{ ansible_host }} 以使其在主机之间唯一,但随后它会尝试连接到web_web1。我一直在使用sudo docker exec web rm -rf /var/log/old_logs 运行命令,这当然可以,但我希望能够直接在 docker 容器中使用 ansible 模块。
【问题讨论】:
标签: ansible