Playbook模板(jinja2 语法渲染)
将jinja2语法的文件,生成对应的生产文本。
[root@centos7 demo-jinjia2]# cat f.j2
{% set list=['one','two','three'] %}
{% for i in list %}
{{i}}
{% endfor %}
{{hello}}
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# cat /etc/ansible/hosts
[webservers]
192.168.0.12 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=123
192.168.0.13 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=123
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# cat jinja2.yml
---
- hosts: webservers
gather_facts: no
vars:
hello: ansible
tasks:
- template: src=f.j2 dest=/tmp/j2
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# ansible-playbook jinja2.yml --syntax-check
playbook: jinja2.yml
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# ansible-playbook jinja2.yml
PLAY [webservers] ********************************************************************************************************************************************************************************
TASK [template] **********************************************************************************************************************************************************************************
changed: [192.168.0.12]
changed: [192.168.0.13]
PLAY RECAP ***************************************************************************************************************************************************************************************
192.168.0.12 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.0.13 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@centos7 demo-jinjia2]#
登陆目标主机查看:
[root@centos7 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.12 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::573d:3f45:8bb8:5050 prefixlen 64 scopeid 0x20<link>
inet6 fe80::63aa:b68b:9d82:1610 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6e:52:df txqueuelen 1000 (Ethernet)
RX packets 565 bytes 312209 (304.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 409 bytes 48667 (47.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 8 bytes 536 (536.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 536 (536.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@centos7 ~]# cat /tmp/j2
one
two
three
ansible
[root@centos7 ~]#
管理nginx配置文件:
[root@centos7 demo-jinjia2]# cat ../hosts
[webservers]
192.168.0.12 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=123
192.168.0.13 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=123
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# cat site.j2
server {
listen {{http_port}};
server_name {{server_name}};
location / {
root /var/www/html;
index index.html;
}
}
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# cat jinj2.yml
---
- hosts: webservers
gather_facts: no
vars:
server_name: ansible
http_port: 88888
tasks:
- template: src=site.j2 dest=/tmp/site.conf
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# ansible-playbook jinj2.yml --syntax-check
playbook: jinj2.yml
[root@centos7 demo-jinjia2]#
[root@centos7 demo-jinjia2]# ansible-playbook jinj2.yml
PLAY [webservers] ********************************************************************************************************************************************************************************
TASK [template] **********************************************************************************************************************************************************************************
changed: [192.168.0.13]
changed: [192.168.0.12]
PLAY RECAP ***************************************************************************************************************************************************************************************
192.168.0.12 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.0.13 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@centos7 demo-jinjia2]#
登陆目标主机查看:
[root@centos7 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.12 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::573d:3f45:8bb8:5050 prefixlen 64 scopeid 0x20<link>
inet6 fe80::63aa:b68b:9d82:1610 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6e:52:df txqueuelen 1000 (Ethernet)
RX packets 968 bytes 523980 (511.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 648 bytes 77784 (75.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 8 bytes 536 (536.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 536 (536.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@centos7 ~]#
[root@centos7 ~]# cat /tmp/site.conf
server {
listen 88888;
server_name ansible;
location / {
root /var/www/html;
index index.html;
}
}
[root@centos7 ~]#