Ansible 看不到 docker 容器

问题描述 投票:0回答:1

当我执行此命令时

ansible all -m ping
。 Ansible 给我这个

client-1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 172.17.0.2 port 22: Connection refused",
    "unreachable": true
}
client-2 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 172.17.0.3 port 22: Connection refused",
    "unreachable": true
}

我的 /etc/ansible/hosts 文件:

client-1 ansible_host=172.17.0.2 ansible_user=root ansible_password=ptest
client-2 ansible_host=172.17.0.3 ansible_user=utest ansible_password=ptest

和 /etc/ansible/ansible.cfg 文件

[default]
inventory = /etc/ansible/hosts
host_key_checking = false

我尝试在两个容器中安装 python3-pip 。 我尝试使用

docker network
命令将它们放在同一个网络中,但这不起作用。我尝试在网络中查看相同的问题,并发现了一些东西,但这仍然对我没有帮助。

请帮我解决这个问题。

docker ansible
1个回答
0
投票

容器中不需要有 SSH 守护进程,因为 Ansible 可以使用 Docker 连接插件(类似于

docker exec
)。如果您使用 ansible 社区,则包含此 docker 连接插件。如果没有那就
ansible-galaxy collection install community.docker

现在您的清单主机文件,将容器名称写入“hosts”,并指定其 ansible_connection:

[containers]
client-1
client-2
[containers:vars]
ansible_connection=community.docker.docker

那就试试

ansible containers -m ping

注意:您应该是 sudo、root 或在 docker 组中才能连接。

© www.soinside.com 2019 - 2024. All rights reserved.