繁体   English   中英

在 MAC 上的 docker 容器上运行 ansible playbook 的问题

[英]Issue with running ansible playbook on docker containers on MAC

我启动了 3 个 ubuntu 容器来练习 ansible playbook。 就像在 docker for MAC 中一样,我不能直接在容器 ip 上使用 ssh,必须通过端口转发路由遵循这个问题

docker run -d -p 2024:22 dockerReg/ubuntu-ssh-enabled
docker run -d -p 2023:22 dockerReg/ubuntu-ssh-enabled
docker run -d -p 2022:22 dockerReg/ubuntu-ssh-enabled

我当前的库存文件如下所示

MacBook-Pro:~$ cat inventory.txt
target1 ansible_host=172.17.0.2 ansible_ssh_pass=Passw0rd
target2 ansible_host=172.17.0.3 ansible_ssh_pass=Passw0rd
target3 ansible_host=172.17.0.4 ansible_ssh_pass=Passw0rd

我现在需要运行什么命令才能在我的清单文件中的所有目标上运行 ping 模块。 当然这行不通: ansible target* -m ping -i inventory.txt

解决此问题的最佳方法是什么,或者是否有任何简单的解决方法?

如果您正在启动 docker 容器,为什么不使用docker连接插件 我从未使用过任何 machintosh,所以我可能会错过一些东西,但我不明白为什么它不会按预期工作,只要您可以使用“正常”docker 命令与您的容器进行交互。

快速 POC 助您一臂之力。

库存inventories/docker-poc.yml

---
all:
  children:
    my_poc_hosts:
      vars:
        ansible_connection: docker
      hosts:
        target1:
        target2:
        target3:

如果你想保留 ini 格式,这是等效的:

[my_poc_hosts]
target1
target2
target3

[my_poc_hosts:vars]
ansible_connection=docker

启动测试容器

我使用了 python:3.8 图像(以确保安装了 python,因为它是 ansible 必需的)和一个长时间运行的自定义命令。

for i in {1..3} ; do docker run -d --rm --name target$i python:3.8 sh -c "while true; do sleep 20000; done"; done

使用临时 ping 进行快速测试

$ ansible -i inventories/docker-poc.yml my_poc_hosts -m ping
[WARNING]: Platform linux on host target1 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.

target1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
[WARNING]: Platform linux on host target3 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.

target3 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
[WARNING]: Platform linux on host target2 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.

target2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

清理

for i in {1..3}; do docker rm -f target$i; done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM