templates是ansible的一个模块,其功能是根据模版文件动态生成配置文件,templates文件必须存放于templates目录下,且命名为.js结尾,yaml/yml文件需要和templates目录平级,这样我们在yml文件中调用模版的时候,就不需要写模版文件的路径,否则需要描述模版文件的路径,应为template模版会自动去找template目录下的模版文件。
编写templates模版
vi templates/postgresql.conf.j2
autovacuum_naptime = {{autovacuum_naptime}}
max_files_per_process = {{max_files_per_process}}
wal_keep_size = {{wal_keep_size}}
wal_log_hints={{wal_log_hints}}
port = {{port}}
application_name = {{application_name}}
编写生成config文件Task
vi 2.1.yml
执行脚本
ansible-playbook -i ./hosts 2.1.yml -v
PLAY [all] **********************************************************************************************************************************************************************************************
TASK [create postgres config file] **********************************************************************************************************************************************************************
changed: [172.23.51.8] => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "997fb3be27548fbe969359137e6ad8d34f0d764c", "dest": "/home/postgres/data/postgresql.conf", "gid": 26, "group": "postgres", "md5sum": "8fd116b720aa6560e0d032973396003f", "mode": "0644", "owner": "postgres", "secontext": "unconfined_u:object_r:user_home_t:s0", "size": 27616, "src": "/home/postgres/.ansible/tmp/ansible-tmp-1663595136.15-25047-91312860667012/source", "state": "file", "uid": 26}
changed: [172.23.51.7] => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "997fb3be27548fbe969359137e6ad8d34f0d764c", "dest": "/home/postgres/data/postgresql.conf", "gid": 26, "group": "postgres", "md5sum": "8fd116b720aa6560e0d032973396003f", "mode": "0644", "owner": "postgres", "secontext": "unconfined_u:object_r:user_home_t:s0", "size": 27616, "src": "/home/postgres/.ansible/tmp/ansible-tmp-1663595136.13-25045-30802466220075/source", "state": "file", "uid": 26}
changed: [172.23.51.3] => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "997fb3be27548fbe969359137e6ad8d34f0d764c", "dest": "/home/postgres/data/postgresql.conf", "gid": 26, "group": "postgres", "md5sum": "8fd116b720aa6560e0d032973396003f", "mode": "0644", "owner": "postgres", "size": 27616, "src": "/home/postgres/.ansible/tmp/ansible-tmp-1663595135.89-25044-161306747051950/source", "state": "file", "uid": 26}
PLAY RECAP **********************************************************************************************************************************************************************************************
172.23.51.3 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.23.51.7 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.23.51.8 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
在远程主机查看执行结果
ansible -i ./hosts all -m shell -a "ls /home/postgres/data/postgres*"
172.23.51.7 | CHANGED | rc=0 >>
/home/postgres/data/postgresql.conf
172.23.51.8 | CHANGED | rc=0 >>
/home/postgres/data/postgresql.conf
172.23.51.3 | CHANGED | rc=0 >>
/home/postgres/data/postgresql.conf