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'的情况下。