# ansible\_hostname in with\_items

**URL:** <https://forum.ansible.com/t/ansible-hostname-in-with-items/27883>\
**Category:** Ansible Project\
**Created:** [June 27, 2018, 11:03am UTC](https://forum.ansible.com/t/ansible-hostname-in-with-items/27883 "2018-06-27T11:03:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bachu\_Prathap](https://avatars.discourse-cdn.com/v4/letter/b/6a8cbe/32.png) [@Bachu\_Prathap](https://forum.ansible.com/u/Bachu_Prathap)\
**Post date:** [June 27, 2018, 11:03am UTC](https://forum.ansible.com/t/ansible-hostname-in-with-items/27883/1 "2018-06-27T11:03:55Z")

</div>

Hi Team

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.

vars\_files:

[root@dljdaprdqmc1v commvault]# cat host\_ip.yml  
dlabcpdtmdb1v: 172.20.0.63  
[root@dljdaprdqmc1v commvault]#

[root@dljdaprdqmc1v commvault]# cat check\_ip.yml

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [June 30, 2018, 10:48am UTC](https://forum.ansible.com/t/ansible-hostname-in-with-items/27883/2 "2018-06-30T10:48:32Z")

</div>

> vars\_files:
> 
> [root@dljdaprdqmc1v commvault]# cat host\_ip.yml  
> dlabcpdtmdb1v: 172.20.0.63  
> [root@dljdaprdqmc1v commvault]#
> 
> [root@dljdaprdqmc1v commvault]# cat check\_ip.yml  
> ---  
> - hosts: all  
> &nbsp;&nbsp;remote\_user: root  
> &nbsp;&nbsp;vars\_files:  
> &nbsp;&nbsp;- host\_ip.yml  
> &nbsp;&nbsp;tasks:  
> &nbsp;&nbsp;- shell: ip a s | grep DOWN | /bin/awk -F":" '{$2=$2;print}' | /bin/awk  
> '{print $2}'  
> &nbsp;&nbsp;&nbsp;&nbsp;register: nic  
> &nbsp;&nbsp;&nbsp;&nbsp;ignore\_errors: yes  
> &nbsp;&nbsp;- stat: path=/etc/sysconfig/network-scripts/ifcfg-{{nic.stdout}}  
> &nbsp;&nbsp;&nbsp;&nbsp;register: nicfile  
> &nbsp;&nbsp;&nbsp;&nbsp;ignore\_errors: yes  
> &nbsp;&nbsp;- lineinfile: path=/tmp/ifcfg-{{nic.stdout}} line={{item}} create=yes  
> &nbsp;&nbsp;&nbsp;&nbsp;with\_items:  
> &nbsp;&nbsp;&nbsp;&nbsp;- TYPE=Ethernet  
> &nbsp;&nbsp;&nbsp;&nbsp;- BOOTPROTO=static  
> &nbsp;&nbsp;&nbsp;&nbsp;- DEFROUTE=yes  
> &nbsp;&nbsp;&nbsp;&nbsp;- PEERDNS=yes  
> &nbsp;&nbsp;&nbsp;&nbsp;- PEERROUTES=yes  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPV4\_FAILURE\_FATAL=no  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPV6INIT=no  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPV6\_AUTOCONF=no  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPV6\_DEFROUTE=no  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPV6\_PEERDNS=no  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPV6\_PEERROUTES=no  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPV6\_FAILURE\_FATAL=no  
> &nbsp;&nbsp;&nbsp;&nbsp;- NAME={{nic.stdout}}  
> &nbsp;&nbsp;&nbsp;&nbsp;- DEVICE={{nic.stdout}}  
> &nbsp;&nbsp;&nbsp;&nbsp;- ONBOOT=yes  
> &nbsp;&nbsp;&nbsp;&nbsp;- IPADDR="{{ansible\_hostname}}" \<== here i need to get value from host\_ip.yml which allocate that host

\<snip /\>

> changed: [dlabcpdtmdb1v] =\> (item=IPADDR=dlabcpdtmdb1v)  
> ok: [dlabcpdtmdb1v] =\> (item=NETMASK=255.255.252.0)

as you see IP becomes the hostname, since you need the content of the variable with the same name as the host you need to use vars/hostvars/lookup vars.

So {{ vars[ansible\_hostname] }} would give you that, but vars is not a documented feature that is schedule for removal.

So you are left with more unreadable code like

{{ hostvars[inventory\_hostname][ansible\_hostname] }}

or

{{ lookup('vars', ansible\_hostname }}

---

<div class="post-metadata">

**Author:** ![Bachu\_Prathap](https://avatars.discourse-cdn.com/v4/letter/b/6a8cbe/32.png) [@Bachu\_Prathap](https://forum.ansible.com/u/Bachu_Prathap)\
**Post date:** [July 9, 2018, 3:39am UTC](https://forum.ansible.com/t/ansible-hostname-in-with-items/27883/3 "2018-07-09T03:39:53Z")

</div>

Thanks a lot Kai Stian, it worked well.
