当我执行此命令时
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
命令将它们放在同一个网络中,但这不起作用。我尝试在网络中查看相同的问题,并发现了一些东西,但这仍然对我没有帮助。
请帮我解决这个问题。
容器中不需要有 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 组中才能连接。