第 9 章 模板(jinja2)

第 9 章 模板(jinja2)

该部分分成两块:

1.条件和循环     #通过jinjia渲染出相关配置文件

2.案例:管理Nginx配置文件

1.条件和循环

条件使用跟bash shell 的if语法差不多,也就多了个{% %} 包裹,需要输出部分不使用{% %}包裹就可以了

循环也是使用跟bash shell 的for语法差不多,也就多了个{% %} 包裹,需要输出部分不使用{% %}包裹就可以了

模块template使用跟copy模块差不多,指定模块文件和输出位置即可,模板文件会自动生成你所需要配置文件在输出到你指定的位置。

示例如下,playbook脚本:

#jinja2.yml
---
- hosts: web
  gather_facts: no
  remote_user: root
  vars:
    hello: ansible
  tasks:
    - template: src=f1.j2 dest=/tmp/f1.j2

模板文件:

#f1.j2
{% set list=['one','two','three'] %}     #遍历数组
{% for i in list %}
  {% if i == 'two' %}     #根据if条件输出
    -> 2
  {% elif i == 'three' %}
    -> 3
  {% endif %}
  {{hello}}   #显示playbook脚本传参数值
{% endfor %}
{% set dict={'zhangshan':26,'lisi':25 } %}    #遍历字典
{% for key,value in dict.iteritems() %}
  {{key}} -> {{value}}
{% endfor %}

2.案例:管理Nginx配置文件

完整案例playbook文件:

# cat nginx1.yml
---
- hosts: web
  gather_facts: no
  remote_user: root
  vars:
    hello: ansible
    http_port: 80
    server_name: test.ctnrs.com
  tasks:
  - name: Add repo
    yum_repository:
      name: nginx
      description: nginx repo
      baseurl: http://nginx.org/packages/centos/7/$basearch/
      gpgcheck: no
      enabled: 1
    tags: addrepo
  - name: Install nginx
    yum:
      name: nginx
      state: latest
    tags: install
  - name: copy nginx config file
    template: src=site1.j2 dest=/etc/nginx/conf.d/site1.conf
    notify: restarted nginx
    tags: copyconfig
  - name: Create wwwroot directory
    file:
      dest: /var/www/html
      state: directory
  - name: Create test page index.html
    #debug: msg="123 {{ansible_hostname}}"
    shell: echo "hello {{hello}}" > /var/www/html/index.html
    tags: test
  - name: firewall 80
    service: name=firewalld state=stopped
  handlers:
  - name: restarted nginx
    service: name=nginx state=restarted

模板文件:

# cat site1.j2
server {
    listen {{http_port}};
    server_name {{server_name}};
    location / {
        root  /var/www/html;
        index index.html;
    }
}

管理机测试文件:

curl 192.168.3.74 -H "Host:test.ctnrs.com"

版权声明:
作者:WaterBear
链接:https://l-t.top/2027.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录