I am writing a playbook to automate assigning an IP address to a set of hosts, however, I am stuck at pulling IP details from vars_files. below is the code, any pointers will be much helpful to me. thank you.
[root@dljdaprdqmc1v commvault]# cat check_ip.yml
---
- hosts: all
remote_user: root
vars_files:
- host_ip.yml
tasks:
- shell: ip a s | grep DOWN | /bin/awk -F":" '{$2=$2;print}' | /bin/awk '{print $2}'
register: nic
ignore_errors: yes
- stat: path=/etc/sysconfig/network-scripts/ifcfg-{{nic.stdout}}
register: nicfile
ignore_errors: yes
- lineinfile: path=/tmp/ifcfg-{{nic.stdout}} line={{item}} create=yes
with_items:
- TYPE=Ethernet
- BOOTPROTO=static
- DEFROUTE=yes
- PEERDNS=yes
- PEERROUTES=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=no
- IPV6_AUTOCONF=no
- IPV6_DEFROUTE=no
- IPV6_PEERDNS=no
- IPV6_PEERROUTES=no
- IPV6_FAILURE_FATAL=no
- NAME={{nic.stdout}}
- DEVICE={{nic.stdout}}
- ONBOOT=yes
- IPADDR="{{ansible_hostname}}" <== here i need to get value from host_ip.yml which allocate that host
- NETMASK=255.255.252.0
when: nicfile.stat.exists == false
[root@dljdaprdqmc1v commvault]#
[root@dljdaprdqmc1v commvault]# ansible-playbook -i list_test check_ip.yml
PLAY [all] ********************************************************
TASK [Gathering Facts] ****************************************************
ok: [dlabcpdtmdb1v]
TASK [command] ******************************************************
changed: [dlabcpdtmdb1v]
TASK [stat] *******************************************************
ok: [dlabcpdtmdb1v]
TASK [lineinfile] *****************************************************
ok: [dlabcpdtmdb1v] => (item=TYPE=Ethernet)
ok: [dlabcpdtmdb1v] => (item=BOOTPROTO=static)
ok: [dlabcpdtmdb1v] => (item=DEFROUTE=yes)
ok: [dlabcpdtmdb1v] => (item=PEERDNS=yes)
ok: [dlabcpdtmdb1v] => (item=PEERROUTES=yes)
ok: [dlabcpdtmdb1v] => (item=IPV4_FAILURE_FATAL=no)
ok: [dlabcpdtmdb1v] => (item=IPV6INIT=no)
ok: [dlabcpdtmdb1v] => (item=IPV6_AUTOCONF=no)
ok: [dlabcpdtmdb1v] => (item=IPV6_DEFROUTE=no)
ok: [dlabcpdtmdb1v] => (item=IPV6_PEERDNS=no)
ok: [dlabcpdtmdb1v] => (item=IPV6_PEERROUTES=no)
ok: [dlabcpdtmdb1v] => (item=IPV6_FAILURE_FATAL=no)
ok: [dlabcpdtmdb1v] => (item=NAME=eth2)
ok: [dlabcpdtmdb1v] => (item=DEVICE=eth2)
ok: [dlabcpdtmdb1v] => (item=ONBOOT=yes)
changed: [dlabcpdtmdb1v] => (item=IPADDR=dlabcpdtmdb1v)
ok: [dlabcpdtmdb1v] => (item=NETMASK=255.255.252.0)
PLAY RECAP ********************************************************
dlabcpdtmdb1v : ok=4 changed=2 unreachable=0 failed=0
[root@dljdaprdqmc1v commvault]#