如何解决在docker主机上无法正常运行
我在ansible docker容器中遇到了一个奇怪的问题。 库存
el7_02 ansible_port=6000 ansible_user=user ansible_host=localhost
el7_03 ansible_port=6001 ansible_user=user ansible_host=localhost
剧本
- shell: hostname
register: x
- debug: msg="{{ x.stdout}},{{ansible_hostname}},{{ansible_user}},{{ansible_port}}"
输出
TASK [Gathering Facts] *************************************************************************************************
ok: [el7_03]
ok: [el7_02]
TASK [x : shell] *************************************************************************************************
changed: [el7_03]
changed: [el7_02]
TASK [x : debug] *************************************************************************************************
ok: [el7_03] => {
"msg": "el7_02,el7_02,user,6001"
}
ok: [el7_02] => {
"msg": "el7_02,6000"
}
由于某些原因,您看到的是容器el7_03的主机名不正确。虽然我希望在docker el7_03的调试任务中看到相同的主机名(即el7_03但不是el7_02)。为什么我会收到“错误的”输出?
在Docker中检查主机名
~/ $ ssh -p 6000 user@localhost 'hostname'
el7_02
~/ $ ssh -p 6001 user@localhost 'hostname'
el7_03
如果我切换到ansible_connection=docker
,那么我会得到期望的结果。但是,我无法使用它,因为当我不时(且经常)与笔记本电脑外部的任何东西(安装任何东西或从Internet下载)进行交互时,都会收到超时。也许有一种方法可以摆脱超时?
os:macos ansible:2.9.11 的Python:3.8.5 码头工人:19.0.3.8
谢谢
解决方法
您需要解决ansible通过主机名而不是通过hostname:port对查找主机的问题。
我针对此问题的解决方法如下:
$ grep pi. /etc/hosts
127.0.0.1 pi1
127.0.0.1 pi2
127.0.0.1 pi3
# inventory contents:
$ cat all_rpis.ini
pi1:3321
pi2:3322
pi3:3323
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。