ansible 模版 templates
模板templates
- 文本文件,嵌套有脚本(使用模板编程语言编写)
- Jinja2 言,使用字面量,有下面形式
字符串:使用单引号或双引号
数字:整数,浮点数
列表:[tem1, item2, ...]
元组:(item1, item2, ...)
字典:{key1: value1, key2: value2, ...}
布尔型:true/ false - 算术运算:+, -, *, ノ/%,
- 比较操作:==,! =,>,> =, <,
- 逻辑运算:and, or, not
- 流表达式:For If When
例子
# cat yml/nginx.yml
---
- hosts: web
remote_user: ec2-user
become: yes
become_method: sudo
become_user: root
tasks:
- name: install nginx package
yum: name=nginx
- name: copy template
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: start service
service: name=nginx state=started enabled=yes
handlers:
- name: restart nginx
service: name=nginx state=restarted
# more yml/templates/nginx.conf.j2
#user nobody;
worker_processes {{ansible_processor_vcpus**2}};
......
# ansible-playbook yml/nginx.yml
模板中for用法
cat testfor.yml
---
- hosts: web
remote_user: ec2-user
become: yes
become_method: sudo
become_user: root
vars:
ports:
- web1:
port: 80
name: web1.xxx.com
rootdir: /tmp/dir1
- web2:
port: 82
name: web2.xxx.com
rootdir: /tmp/dir2
# - 80
# - 81
# - 82
# - listen_port: 80
# - listen_port: 81
# - listen_port: 82
tasks:
- name: copy conf
template: src=for1.conf.j2 dest=/tmp/for1.conf
cat templates/for1.conf.j2
{% for p in ports %}
server {
listen {{ p.port }}
servername {{ p.name }}
documentroot {{ p.rootdir }}
{# listen {{ port }};#}
{# listen {{ port.listen_port }};#}
}
{% endfor %}
for 中嵌套 if
cat testfor.yml
---
- hosts: web
remote_user: ec2-user
become: yes
become_method: sudo
become_user: root
vars:
ports:
- web1:
port: 80
# name: web1.xxx.com
rootdir: /tmp/dir1
- web2:
port: 82
name: web2.xxx.com
rootdir: /tmp/dir2
# - 80
# - 81
# - 82
# - listen_port: 80
# - listen_port: 81
# - listen_port: 82
tasks:
- name: copy conf
template: src=for1.conf.j2 dest=/tmp/for1.conf
cat templates/for1.conf.j2
{% for p in ports %}
server {
listen {{ p.port }}
{% if p.name is defined %}
servername {{ p.name }}
{% endif %}
documentroot {{ p.rootdir }}
{# listen {{ port }};#}
{# listen {{ port.listen_port }};#}
}
{% endfor %}
本文来自博客园, 作者:Star-Hitian, 转载请注明原文链接:https://www.cnblogs.com/Star-Haitian/articles/15234697.html

浙公网安备 33010602011771号