Default custom fact directory on the target host is - /etc/ansible/facts.d
Custom facts file name extension should be ".fact"
facts file follows INI format.
# Example custom fact file:
[package]
web_package: httpd
db_package: mariadb-server
Custom facts file name extension should be ".fact"
facts file follows INI format.
# Example custom fact file:
[package]
web_package: httpd
db_package: mariadb-server
Playbook to transfer above custom fact file to target/remote host
# copy from here:
---
- name: Custom Facts
hosts: node11
vars:
remote_directory: /etc/ansible/facts.d ## default directory for Ansible facts
facts_file: custom.fact ## fact file must have .fact extention
tasks:
- name: Create remote direcotry to trasfer custorm facts file
file:
path: "{{ remote_directory }}"
state: directory
recurse: yes
- name: copy custome fact file to remote server
copy:
src: "{{ facts_file }}"
dest: "{{ remote_directory }}"
...
Playbook to use above custom facts
# Copy from here
---
- name: Use custom defined facts
hosts: node11
tasks:
- name: Install web package using facts
yum:
name:
- "{{ ansible_local.custom.package.web_package }}"
- "{{ ansible_local.custom.package.db_package }}"
state: latest
register: result
- name: Display the results on controller
debug:
var: result
...
Playbook outcome:
# ansible-playbook playbook.yml
PLAY [Use custom defined facts] ************************************************
TASK [setup] *******************************************************************
ok: [node11]
TASK [Install web package using facts] *****************************************
ok: [node11]
TASK [Display the results on controller] ***************************************
ok: [node11] => {
"result": {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"All packages providing httpd are up to date",
"All packages providing mariadb-server are up to date",
""
]
}
}
PLAY RECAP *********************************************************************
node11 : ok=3 changed=0 unreachable=0 failed=0
Playbook outcome:
# ansible-playbook playbook.yml
PLAY [Use custom defined facts] ************************************************
TASK [setup] *******************************************************************
ok: [node11]
TASK [Install web package using facts] *****************************************
ok: [node11]
TASK [Display the results on controller] ***************************************
ok: [node11] => {
"result": {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"All packages providing httpd are up to date",
"All packages providing mariadb-server are up to date",
""
]
}
}
PLAY RECAP *********************************************************************
node11 : ok=3 changed=0 unreachable=0 failed=0
1 comment:
Useful post, thanks for sharing.
DevOps Online Training
Post a Comment