How to create custom facts in ansible with examples?

Create a ansible config file as ansible.cfg file in your project directory:

[defaults]  
inventory = hosts

Create a hosts file as hosts in the project directory

[webservers]
ansnode1 ansible_ssh_host=192.168.56.202 ansible_python_interpreter=/usr/bin/python   
ansnode2 ansible_ssh_host=192.168.56.203 ansible_python_interpreter=/usr/bin/python   

[webservers:vars]
ansible_port=22  
http_port=8080  


[dbservers]
ansnode3 ansible_ssh_host=192.168.56.204 ansible_python_interpreter=/usr/bin/python    
ansnode4 ansible_ssh_host=192.168.56.205 ansible_python_interpreter=/usr/bin/python   

[dev:children]
webservers  
dbservers   

Create a file named called as custom_facts_playbook.yml in your project directory

---
 # YAML documents begin with the document separator ---
 # The minus in YAML this indicates a list item. The Playbook contains a list
 # of plays, with each play being a dictionary
 - name: 'custom facts playbook'
   # Target: where our play will run and options it will run with
   hosts: ansmaster
   gather_facts: true
  # Task: the list of tasks that will be executed within the playbook
  tasks:
    - name: Show IP Address
      debug:
        msg: "{{ ansible_default_ipv4.address }}"
    - name: Show Custom facts 1
      debug:
        msg: "{{ ansible_local.getdate1.date }}"
    - name: Show Custom facts 2
      debug:
        msg: "{{ ansible_local.getdate2.date.date }}"
 # Three dots indicate the end of a YAML document
...

Source Code Available in Github: https://www.github.com/tamiltutera

Leave a Reply

Your email address will not be published. Required fields are marked *