Eu quero tornar o ip dinâmico atribuído a vm permanente adicionando-o ao seu arquivo ifcfg-eth0, estou tendo problemas ao usar o register: eth0
valor que é o endereço IP real e colocá-lo na última linha line: "IPADDR=register.stdout"
---
- hosts: all
become: yes
tasks:
- name: getting ip address of eth0
shell: ip r l | grep -e eth0 | grep default | grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
register: eth0
- shell: rm -f /etc/sysconfig/network-scripts/ifcfg-eth0
- file: path="/etc/sysconfig/network-scripts/ifcfg-eth0" state=touch
- blockinfile:
dest: "/etc/sysconfig/network-scripts/ifcfg-eth0"
block: |
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
TYPE=Ethernet
IPADDR=
NETMASK=255.255.255.0
GATEWAY=
- name: adding ip in ifcfg-eth0
lineinfile:
dest: "/etc/sysconfig/network-scripts/ifcfg-eth0"
regexp: "IPADDR="
line: "IPADDR=register.stdout"
erro:
[tempuser@testing ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
# BEGIN ANSIBLE MANAGED BLOCK
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
TYPE=Ethernet
IPADDR=register.stdout
NETMASK=255.255.255.0
GATEWAY=
# END ANSIBLE MANAGED BLOCK[tempuser@testing ~]$
Responder1
Você está acessando a variável de registro eth0 tentando usar o nome "registro" que não existe.
Ao registrar uma variável no ansible, você também informa ao ansible o nome da variável como deseja registrá-la - no seu caso, eth0:
register: eth0
Então, para acessá-lo posteriormente, você teria que usar o nome eth0 assim:
IPADDR={{ eth0.stdout }}
Agora, se você me permitir resolver o que acredito ser um problema XY seu - em vez de usar grep para analisar o endereço IP da sua interface, por que não tentar usar fatos ansible? Se você souber o nome da interface no host, poderá simplesmente fazer algo assim:
IPADDR={{ ansible_eth0.ipv4.address }}
Se, por outro lado, você não sabe o nome da interface (ou eles são diferentes em todos os seus hosts) - mas você sabe que cada host tem apenas uma interface viável, então você pode usar algo como o seguinte:
IPADDR={{ ansible_default_ipv4.address }}
Para ver todos os fatos que o ansible coleta em um sistema, use o seguinte comando:
ansible <hosts> -m setup