/ / ansible_default_ipv4.address indefinito nella finestra mobile ubuntu - docker, ansible, default, ipv4

ansible_default_ipv4.address indefinito in docker ubuntu - docker, ansible, default, ipv4

Sto cercando di eseguire una semplice operazione ansible che dovrebbe aggiornare una riga in / 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*$"

Quando eseguo questo in virtualbox con Ubuntu 16, funziona bene.

Quando lo eseguo nel mio contenitore Docker di ubuntu 16, ottengo:

fatale: [localhost]: FAILED! => {"failed": true, "msg": "il campo "args" ha un valore non valido, che sembra includere una variabile è indefinito. L'errore era: "ansible_default_ipv4" è undefinednn Sembra che l'errore sia stato presente "/home/user/ansible/manage-ansible-master.yml": riga 11, colonna 5, ma potrebbe non trovarsi altrove nel file a seconda della sintassi esatta problem.nnLa riga incriminata sembra essere: nn - nomehost: name = "{{master_host}}" n - name: aggiungi l'host principale a / etc / hostsn
^ heren "}

Dove è possibile cercare di estrarre l'ip locale e perché non lo si può fare nella finestra mobile?

BTW Ho installato net-tools nel mio contenitore docker e ha un eth0 ip.

Su virtualbox e nella finestra mobile ho una riga in / etc / hosts

ansible-master 127.0.1.1

AGGIORNARE:

io corro

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

su virtualbox ubuntu e Docker ubuntu.

Su Virtualbox ottengo molte informazioni relative alla rete che non riesco a trovare su Docker:

"ansible_facts": {
"ansible_all_ipv4_addresses": [
<ip>,
<another ip>
],
"ansible_all_ipv6_addresses": [
<ipv6>,
<another ipv6>
],

Anche in virtualbox ottengo

 "ansible_default_ipv4": {
"address": <value>,
"alias": <value>,
"broadcast": <value>,
"gateway": <value>,
"interface": <value>,
"macaddress": <value>,
"mtu": <value>,
"netmask": <value>,
"network": <value>,
"type": <value>
},

Nulla di ciò appare in Docker.

risposte:

2 per risposta № 1

Ho avuto un problema simile con la fedora; illa soluzione era installare il pacchetto che fornisce il comando "ip" (che è usato per generare il fatto che stai cercando). nel caso di fedora "dnf install iproute".


1 per risposta № 2

Usa flag hostname per inserire il nome host del contenitore locale in / etc / hosts:

finestra mobile run --hostname = my_hostname


0 per risposta № 3

Per Ubuntu, devi installare il iproutes2 pacchetto nel tuo pre_tasks. Non dimenticare di raccogliere di nuovo i fatti in un altro compito con - setup: