# How to specify host file via playbook?

**URL:** <https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544>\
**Category:** Ansible Project\
**Tags:** ansible-project\
**Created:** [March 20, 2013, 2:54pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544 "2013-03-20T14:54:40Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![benno\_joy](https://avatars.discourse-cdn.com/v4/letter/b/73ab20/32.png) [@benno\_joy](https://forum.ansible.com/u/benno_joy)\
**Post date:** [March 20, 2013, 2:54pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/1 "2013-03-20T14:54:40Z")

</div>

Hi Samnang,

You can use ansible-playbook -i hosts abc.yml to specify your inventory file.

you can also have a look at [https://github.com/ansible/ansible-examples](https://github.com/ansible/ansible-examples) for some examples.

---

<div class="post-metadata">

**Author:** ![Brian\_Coca1](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@Brian\_Coca1](https://forum.ansible.com/u/Brian_Coca1)\
**Post date:** [March 20, 2013, 3:08pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/2 "2013-03-20T15:08:29Z")

</div>

I actually use a shebang on my playbooks

#!/usr/bin/env ansible-playbook -i ../hosts

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [March 20, 2013, 3:15pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/3 "2013-03-20T15:15:06Z")

</div>

All good answers -- also never thought of that, Brian!

FYI -- It's also configurable in /etc/ansible/ansible.cfg or ~/.ansible.cfg

---

<div class="post-metadata">

**Author:** ![Timothy\_Gerla](https://avatars.discourse-cdn.com/v4/letter/t/977dab/32.png) [@Timothy\_Gerla](https://forum.ansible.com/u/Timothy_Gerla)\
**Post date:** [March 20, 2013, 3:28pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/4 "2013-03-20T15:28:30Z")

</div>

And finally, you can set the ANSIBLE\_HOSTS shell variable:

export ANSIBLE\_HOSTS=/home/ansible/my-hosts  
ansible-playbook site.yml

-Tim

---

<div class="post-metadata">

**Author:** ![Marco\_Vito\_Moscarito](https://avatars.discourse-cdn.com/v4/letter/m/97f17d/32.png) [@Marco\_Vito\_Moscarito](https://forum.ansible.com/u/Marco_Vito_Moscarito)\
**Post date:** [March 20, 2013, 4:22pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/5 "2013-03-20T16:22:53Z")

</div>

I also use PROJECT\_FOLDER/ansible.cfg

[defaults]  
hostfile = ./etc/hosts  
remote\_tmp = $HOME/.ansible/tmp  
pattern = \*  
forks=5  
timeout=10  
transport=ssh  
remote\_port=112233  
remote\_user=xxxxxx

[ssh\_connection]  
ssh\_args=-o PasswordAuthentication=no -o ControlMaster=auto -o  
ControlPersist=60s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r  
scp\_if\_ssh=True

---

<div class="post-metadata">

**Author:** ![anatoly\_techtonik](https://avatars.discourse-cdn.com/v4/letter/a/c67d28/32.png) [@anatoly\_techtonik](https://forum.ansible.com/u/anatoly_techtonik)\
**Post date:** [December 1, 2013, 11:44am UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/6 "2013-12-01T11:44:03Z")

</div>

That’s awesome. Thanks.

More info: [http://www.ansibleworks.com/docs/intro\_configuration.html](http://www.ansibleworks.com/docs/intro_configuration.html)

---

<div class="post-metadata">

**Author:** ![anatoly\_techtonik](https://avatars.discourse-cdn.com/v4/letter/a/c67d28/32.png) [@anatoly\_techtonik](https://forum.ansible.com/u/anatoly_techtonik)\
**Post date:** [December 1, 2013, 5:53pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/7 "2013-12-01T17:53:18Z")

</div>

It appears that look up from playbook’s directory is broken. The command above will  
point to hosts file from the current directory and not from playbook’s dir. I filled an issue here:  
[https://github.com/ansible/ansible/issues/5115](https://github.com/ansible/ansible/issues/5115)

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [December 1, 2013, 5:55pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/8 "2013-12-01T17:55:07Z")

</div>

We will look into docs but it works correctly.

– Michael

---

<div class="post-metadata">

**Author:** ![anatoly\_techtonik](https://avatars.discourse-cdn.com/v4/letter/a/c67d28/32.png) [@anatoly\_techtonik](https://forum.ansible.com/u/anatoly_techtonik)\
**Post date:** [December 1, 2013, 6:07pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/9 "2013-12-01T18:07:52Z")

</div>

I prefer if it worked as described in docs - independent of current user position  
in directory tree hierarchy. I execute ansible playbooks using relative paths, from  
different dirs, and if my current dir will happen to contain ansible.cfg from another  
project - this may lead to disaster. For me reading configuration pieces implicitly  
from CWD is an anti-pattern.

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [December 1, 2013, 6:16pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/10 "2013-12-01T18:16:46Z")

</div>

Don’t do that then 🙂

– Michael

---

<div class="post-metadata">

**Author:** ![anatoly\_techtonik](https://avatars.discourse-cdn.com/v4/letter/a/c67d28/32.png) [@anatoly\_techtonik](https://forum.ansible.com/u/anatoly_techtonik)\
**Post date:** [December 1, 2013, 7:45pm UTC](https://forum.ansible.com/t/how-to-specify-host-file-via-playbook/12544/11 "2013-12-01T19:45:06Z")

</div>

To be honest, the main usercase is to avoid typing `-i hosts` every time for bootstrap  
of config from github checkout. There is only one localhost and if I can just place  
ansible.cfg in repository together with playbook - it will solve all my problems. =)

git clone myworkstation /tmp/a  
ansible-playbook /tmp/a/playbook.yml
