docker ubuntu中未定义的ansible_default_ipv4.address
我正在尝试运行一个简单的操作,它应该更新/ etc / hosts中的一行:
- hosts: localhost become: true vars: master_host: "ansible-master" tasks: - hostname: name="{{master_host}}" - name: Add master host to /etc/hosts lineinfile: dest=/etc/hosts line="{{ ansible_default_ipv4.address}} {{master_host}}" regexp=".*{{master_host}}\s*$"
当我使用Ubuntu 16在virtualbox中运行它时,它工作正常。
当我在我的Ubuntu 16 Docker容器中运行它时,我得到:
致命的:[localhost]:失败! =“{”failed“:true,”msg“:”字段'args'有一个无效的值,其中包含一个未定义的variables,错误是:'ansible_default_ipv4'未定义\ n \ n错误似乎是已经在'/home/user/ansible/manage-ansible-master.yml':第11行,第5列,但可能\ n在文件中的其他地方取决于确切的语法问题。\ n \ n违规行似乎是:\ n \ n – hostname:name = \“{{master_host}} \”\ n – name:将主控主机添加到/ etc / hosts \ n
^这里\ n“}
在哪里是可靠的试图拉本地IP为什么不能这样做在docker?
顺便说一句,我已经在我的docker集装箱安装networking工具,它有一个eth0 IP。
在virtualbox和docker中,我在/ etc / hosts中有一行
安全主人127.0.1.1
更新:
我跑
ansible all --connection=local -m setup | less
在virtualbox Ubuntu和Docker Ubuntu上。
在Virtualbox上,我得到了许多与Docker无关的networking相关信息:
"ansible_facts": { "ansible_all_ipv4_addresses": [ <ip>, <another ip> ], "ansible_all_ipv6_addresses": [ <ipv6>, <another ipv6> ],
也在virtualbox我得到
"ansible_default_ipv4": { "address": <value>, "alias": <value>, "broadcast": <value>, "gateway": <value>, "interface": <value>, "macaddress": <value>, "mtu": <value>, "netmask": <value>, "network": <value>, "type": <value> },
这在Docker中都不会出现。
使用主机名标志将您的本地容器主机名放在/ etc / hosts中:
docker运行–hostname = my_hostname
我有一个与Fedora类似的问题; 解决方法是安装提供'ip'命令的包(用于生成您要查找的事实)。 在Fedora的'dnf安装iproute'的情况下。