Thanks a lot Jean-Yves. I have changed the mode to 0644 and ran the
playbook. It worked fine without any issues. I can't find good
documentation on custom facts. Thanks for your help.
- name: Create a custom facts file
hosts: database
become: true
become_user: root
gather_facts: true
tasks:
- name: Create a custom facts directory
file:
path: /etc/ansible/facts.d
state: directory
- name: Create a custom facts
template:
src: templates/custom.fact.j2
dest: /etc/ansible/facts.d/custom.fact
mode: 0644
- name: local facts
debug: var=ansible_local
notify:
- reload facts
- name: reload facts
setup: filter=ansible_local
[automation@workstation plays]$ ansible-playbook facts.yml
PLAY [Create a custom facts file]
**********************************************************************************************************************************************************************************************************
TASK [Gathering Facts]
*********************************************************************************************************************************************************************************************************************
ok: [ansible5]
TASK [Create a custom facts directory]
*****************************************************************************************************************************************************************************************************
ok: [ansible5]
TASK [Create a custom facts]
***************************************************************************************************************************************************************************************************************
ok: [ansible5]
TASK [local facts]
*************************************************************************************************************************************************************************************************************************
ok: [ansible5] => {
"ansible_local": {
"custom": {
"sample_exam": {
"server_role": "mysql"
}
}
}
}
TASK [reload facts]
************************************************************************************************************************************************************************************************************************
ok: [ansible5]
PLAY RECAP
*********************************************************************************************************************************************************************************************************************************
ansible5 : ok=5 changed=0 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0
On Sun, Apr 5, 2020 at 6:08 PM Jean-Yves LENHOF <[email protected]>
wrote:
> Hi,
>
> Your fact is simple INI file, not a script which give json output.
>
> Try removing the execution bit on your fact (644 for example)
>
> Info provided here with some 2 mn googling :
>
> https://groups.google.com/forum/#!topic/ansible-project/2JRR8a-K9_8
>
> Regards,
>
>
> Le 05/04/2020 à 08:22, Rajesh a écrit :
>
> Tried that but still not working. Thanks for your help.
>
> On Saturday, April 4, 2020 at 7:35:12 PM UTC+11, Jean-Yves LENHOF wrote:
>>
>> The first time you run it, files are not yet in place, so you probably
>> need to regather fact, no ? You can do it with setup:
>>
>> Regards,
>>
>>
>> Le 04/04/2020 à 10:18, Rajesh a écrit :
>>
>> Could someone help why I am still getting the below error?
>>
>> Thanks,
>> Rajesh
>>
>> On Thursday, April 2, 2020 at 5:38:27 PM UTC+11, Rajesh wrote:
>>>
>>> Thanks for that. I have modified the playbook as you suggested. The
>>> playbook creates the custom file, but still giving the below error.
>>>
>>> [automation@workstation plays]$ cat facts.yml
>>> - name: Create a custom facts file
>>> hosts: database
>>> become: true
>>> become_user: root
>>> gather_facts: true
>>> tasks:
>>> - name: Create a custom facts directory
>>> file:
>>> path: /etc/ansible/facts.d
>>> state: directory
>>>
>>> - name: Create a custom facts
>>> template:
>>> src: templates/custom.fact.j2
>>> dest: /etc/ansible/facts.d/custom.fact
>>> mode: 0755
>>>
>>> - name: Output our newly created static fact
>>> debug:
>>> msg: "{{ ansible_local.custom.sample_exam }}"
>>> [automation@workstation plays]$
>>>
>>> [automation@workstation plays]$ ansible-playbook facts.yml
>>>
>>> PLAY [Create a custom facts file]
>>> **********************************************************************************************************************************************************************************************************
>>>
>>> TASK [Gathering Facts]
>>> *********************************************************************************************************************************************************************************************************************
>>> ok: [ansible5]
>>>
>>> TASK [Create a custom facts directory]
>>> *****************************************************************************************************************************************************************************************************
>>> ok: [ansible5]
>>>
>>> TASK [Create a custom facts]
>>> ***************************************************************************************************************************************************************************************************************
>>> changed: [ansible5]
>>>
>>> TASK [Output our newly created static fact]
>>> ************************************************************************************************************************************************************************************************
>>> fatal: [ansible5]: FAILED! => {"msg": "The task includes an option with
>>> an undefined variable. The error was: 'dict object' has no attribute
>>> 'custom'\n\nThe error appears to be in '/home/automation/plays/facts.yml':
>>> line 18, column 7, but may\nbe elsewhere in the file depending on the exact
>>> syntax problem.\n\nThe offending line appears to be:\n\n\n - name:
>>> Output our newly created static fact\n ^ here\n"}
>>>
>>> PLAY RECAP
>>> *********************************************************************************************************************************************************************************************************************************
>>> ansible5 : ok=3 changed=1 unreachable=0
>>> failed=1 skipped=0 rescued=0 ignored=0
>>>
>>> [automation@workstation plays]$
>>>
>>>
>>> On Thursday, April 2, 2020 at 4:46:20 PM UTC+11, Stefan Hornburg (Racke)
>>> wrote:
>>>>
>>>> On 4/2/20 4:16 AM, Rajesh wrote:
>>>> > Hi All,
>>>> >
>>>> > I created a custom facts playbook. But I am getting an error when I
>>>> run. I could not figure out why?
>>>>
>>>> Hello Rajesh,
>>>>
>>>> if /etc/ansible/facts.d/custom.fact is supposed to be a script it needs
>>>> executable permissions:
>>>>
>>>> - name: Create a custom facts
>>>> template:
>>>> src: templates/custom.fact.j2
>>>> dest: /etc/ansible/facts.d/custom.fact
>>>> mode: 0755
>>>>
>>>> Regards
>>>> Racke
>>>>
>>>> >
>>>> > *_Playbook_*
>>>> >
>>>> > - name: Create a custom facts file
>>>> > hosts: database
>>>> > become: true
>>>> > become_user: root
>>>> > gather_facts: true
>>>> > tasks:
>>>> > - name: Create a custom facts directory
>>>> > file:
>>>> > path: /etc/ansible/facts.d
>>>> > state: directory
>>>> >
>>>> > - name: Create a custom facts
>>>> > template:
>>>> > src: templates/custom.fact.j2
>>>> > dest: /etc/ansible/facts.d/custom.fact
>>>> >
>>>> > - name: Print ansible_local
>>>> > debug: var=ansible_local
>>>> > - name: Print the custom facts value
>>>> > debug:
>>>> > msg: "{{ ansible_local.custom.sample_exam }}"
>>>> >
>>>> > _*Template file*_
>>>> >
>>>> > [automation@workstation plays]$ cat templates/server_list.j2
>>>> > {% for host in groups['all'] %}
>>>> > {{ hostvars[host]['ansible_facts']['fqdn'] }}
>>>> > {% endfor %}
>>>> >
>>>> > [automation@workstation plays]$
>>>> >
>>>> > [automation@workstation plays]$ ansible-playbook facts.yml
>>>> >
>>>> > PLAY [Create a custom facts file]
>>>> >
>>>> **********************************************************************************************************************************************************************************************************
>>>>
>>>> >
>>>> > TASK [Gathering Facts]
>>>> >
>>>> *********************************************************************************************************************************************************************************************************************
>>>>
>>>> > fatal: [ansible5]: FAILED! => {"ansible_facts": {}, "changed": false,
>>>> "failed_modules": {"setup": {"ansible_facts":
>>>> > {"discovered_interpreter_python": "/usr/libexec/platform-python"},
>>>> "cmd": "/etc/ansible/facts.d/custom.fact", "failed":
>>>> > true, "invocation": {"module_args": {"fact_path":
>>>> "/etc/ansible/facts.d", "filter": "*", "gather_subset": ["all"],
>>>> > "gather_timeout": 10}}, "msg": "[Errno 8] Exec format error:
>>>> b'/etc/ansible/facts.d/custom.fact'", "rc": 8}}, "msg":
>>>> > "The following modules failed to execute: setup\n"}
>>>> >
>>>> > PLAY RECAP
>>>> >
>>>> *********************************************************************************************************************************************************************************************************************************
>>>>
>>>> > ansible5 : ok=0 changed=0 unreachable=0
>>>> failed=1 skipped=0 rescued=0 ignored=0
>>>> >
>>>> > [automation@workstation plays]$
>>>> >
>>>> > --
>>>> > You received this message because you are subscribed to the Google
>>>> Groups "Ansible Project" group.
>>>> > To unsubscribe from this group and stop receiving emails from it,
>>>> send an email to
>>>> > [email protected] <mailto:
>>>> [email protected]>.
>>>> > To view this discussion on the web visit
>>>> >
>>>> https://groups.google.com/d/msgid/ansible-project/5b9d27a2-cc4e-40b1-9429-284adf50524d%40googlegroups.com
>>>> > <
>>>> https://groups.google.com/d/msgid/ansible-project/5b9d27a2-cc4e-40b1-9429-284adf50524d%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>>>
>>>>
>>>>
>>>> --
>>>> Ecommerce and Linux consulting + Perl and web application programming.
>>>> Debian and Sympa administration. Provisioning with Ansible.
>>>>
>>>> --
>> You received this message because you are subscribed to the Google Groups
>> "Ansible Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ansible-project/01148e2a-5846-447b-857a-4dcecdad6e63%40googlegroups.com
>> <https://groups.google.com/d/msgid/ansible-project/01148e2a-5846-447b-857a-4dcecdad6e63%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/5000fa54-3f67-4d99-8f2c-6d1a33cb6b58%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/5000fa54-3f67-4d99-8f2c-6d1a33cb6b58%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/cbe78936-1a55-4e2a-4047-ec8afd377a6c%40lenhof.eu.org
> <https://groups.google.com/d/msgid/ansible-project/cbe78936-1a55-4e2a-4047-ec8afd377a6c%40lenhof.eu.org?utm_medium=email&utm_source=footer>
> .
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CAGt19Nu5JXV%2Boi1mq5XEZGNZd4G9nN-8y_dz%2BQDetPSvkWksEA%40mail.gmail.com.