使用jinja2模板部署自定义文件
jinja2简介
Ansible将jinja2模板系统用于模板文件。Ansible还使用jinja2语法来引用playbook中的变量
构建jinja2模板
jinja2模板由多个元素组成:数据、变量和表达式。在呈现jinja2模板时,这些变量和表达式被替换为对应的值。模板中使用的变量可以在playbook的vars部分中指定。可以将受管主机的事实用作模板中的变量。
[root@control book]# cat test/test.yml
---
- name: "模板"
hosts: server4
tasks:
- name: test
template:
src: /opt/book/test/hosts
dest: /etc/hosts
//查看本机上的hosts文件
[root@control book]# cat test/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{#这是一个注释#}
{
{ ansible_facts['default_ipv4']['address'] }} {
{ ansible_facts['hostname'] }}
//执行
[root@control book]# ansible-playbook test/test.yml
PLAY [模板] **********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.56.133]
TASK [test] ********************************************************************
changed: [192.168.56.133]
PLAY RECAP *********************************************************************
192.168.56.133 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
//查看结果
calhost6.localdomain6
[root@server4 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.133 server4
包含jinja2模板的文件不需要有任何特定的文件扩展名(如.j2)。但是,提供此类文件扩展名会让你更容易记住它是模板文件。
部署jinja2模板
jinja2模板是功能强大的工具,可用于自定义要在受管主机上部署的配置文件。创建了适用于配置文件的jinja2模板后,它可以通过templ