# ansible fact availability

**URL:** <https://forum.ansible.com/t/ansible-fact-availability/16947>\
**Category:** Ansible Project\
**Created:** [December 3, 2014, 11:34am UTC](https://forum.ansible.com/t/ansible-fact-availability/16947 "2014-12-03T11:34:32Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Steve\_Kieu](https://avatars.discourse-cdn.com/v4/letter/s/41988e/32.png) [@Steve\_Kieu](https://forum.ansible.com/u/Steve_Kieu)\
**Post date:** [December 3, 2014, 11:34am UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/1 "2014-12-03T11:34:32Z")

</div>

Hi all,

I have in my hosts file

COUNTRY\_SUFFIX=“{{ansible\_hostname}}”

It works fine when I use ansible-playbook and play the book with some roles. But if I run as adhoc command like this

ansible -i hosts hostname -u user -k -mdebug -a’msg={{COUNTRY\_SUFFIX}}’

then asible says ansible\_hostname is not defined.  
anybody knows why?

thanks

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [December 3, 2014, 1:06pm UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/2 "2014-12-03T13:06:34Z")

</div>

ad hoc commands do not gather facts, which is what sets  
ansible\_hostname, this is an expected result

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [December 3, 2014, 4:15pm UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/3 "2014-12-03T16:15:27Z")

</div>

Sounds like he’s discussing a variable in his inventory file and not a fact, though.

However, it’s more apt to say that template expressions are not evaluated in ad-hoc commands.

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [December 3, 2014, 4:36pm UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/4 "2014-12-03T16:36:52Z")

</div>

Nevermind, this is indeed ansible\_hostname, which is not available because it’s a fact – sorry!

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [December 3, 2014, 4:55pm UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/5 "2014-12-03T16:55:15Z")

</div>

micheal's other point still stands, ad-hoc does not do any templating,  
so even if you had the var it would not work.

---

<div class="post-metadata">

**Author:** ![Steve\_Kieu](https://avatars.discourse-cdn.com/v4/letter/s/41988e/32.png) [@Steve\_Kieu](https://forum.ansible.com/u/Steve_Kieu)\
**Post date:** [December 3, 2014, 11:09pm UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/6 "2014-12-03T23:09:46Z")

</div>

It is not true.  
If I run adhoc command and using variable defined in inventory it works fine.

So ansible does not get facts only, but these variable defiend in hosts and host\_vars and magic var like inventory\_hostname works.

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [December 3, 2014, 11:19pm UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/7 "2014-12-03T23:19:51Z")

</div>

Yeah I think I remember the template commit.

(But it’s not going to gather facts first, because facts are a playbook concept)

The v2/ tree effort is essentially going to make “in memory” playbooks for ad hoc commands so might make this easy with a --gather-facts switch in the future or something like that.

---

<div class="post-metadata">

**Author:** ![Steve\_Kieu](https://avatars.discourse-cdn.com/v4/letter/s/41988e/32.png) [@Steve\_Kieu](https://forum.ansible.com/u/Steve_Kieu)\
**Post date:** [December 3, 2014, 11:30pm UTC](https://forum.ansible.com/t/ansible-fact-availability/16947/8 "2014-12-03T23:30:18Z")

</div>

Thank you all for helping …

Yeah it would be great if it gather facts too, but currently I switch to use magic vars which works as well.

cheers
