2017-01-04 10 views
2

Я пытаюсь запустить простой анзибль операцию, которая должна обновить строку в/и т.д./хостах:ansible_default_ipv4.address неопределенный в Докер убунту

- 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*$" 

Когда я запускаю это в VirtualBox с Ubuntu 16, он отлично работает ,

Когда я запускаю его в моем убунту 16 Докер контейнер, я получаю:

фатальным: [локальный]: FAILED! => {"failed": true, "msg": "в поле " args "имеет недопустимое значение, которое, как представляется, содержит переменную, которая не определена . Ошибка: 'ansible_default_ipv4' равно undefined \ n \ nThe ошибка, по-видимому, была в '/home/user/ansible/manage-ansible-master.yml': строка 11, столбец 5, но может \ nbe в другом месте в файле в зависимости от точного синтаксиса проблема. \ n \ Строка оскорбления выглядит следующим образом: \ n \ n - имя хоста: name = \ "{{master_host}} \" \ n - name: Добавить главный хост в/etc/hosts \ n
^ here \ n "}

Где можно устранить попытку локального ip из d почему он не может это делать в докер?

BTW Я установил сетевые инструменты в контейнере для докеров и имеет eth0 ip.

На VirtualBox и в докер у меня есть строки в/и т.д./хосты

анзибль-мастер 127.0.1.1

UPDATE:

Я бегу

ansible all --connection=local -m setup | less 

на виртуальный бокс ubuntu и докер ubuntu.

На Virtualbox я получаю много связанных с сетью информации, что я не получаю на Докер:

"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> 
     }, 

Ничего из этого не появляется в Докер.

+0

Когда я делаю ansible all -m setup --tree/tmp/факсы Я получаю сообщение «msg»: «Не удалось подключиться к хосту через ssh: ssh: подключиться к хосту с доступом-мастер-портом 22: соединение отклонено \ r \ n ", поэтому это заставляет меня думать, что мне нужно установить ssh. – nettie

+0

Добавить ['connection: local'] (https://docs.ansible.com/ansible/playbooks_delegation.html # local-playbooks) – techraf

+0

Любая помощь будет очень оценена. Вопрос в том, как настроить Docker, чтобы Ansible мог найти 'ansible_default_ipv4'. Спасибо!! – nettie

ответ

1

Используйте флаг имя хоста поставить локальный контейнер имя хоста в/и т.д./хостов:

докер пробег --hostname = my_hostname

2

У меня была аналогичная проблема с фетровой шляпе; решение заключалось в установке пакета, который предоставляет команду «ip» (которая используется для генерации факта, который вы ищете). в случае с fedora 'dnf install iproute'.