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 № 1Ho 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: