1.jinja2渲染NginxProxy配置文件

  • jinja2

    • 房屋建筑设计固定的?
  • jinja2模板与Ansible关系

  • Ansible如何使用jinja2模板

    • template模块 拷贝文件?
    • template copy 区别?
      • template会解析配置文件中的变量
      • copy 不会解析任何的变量,只会拷贝文件

Ansible允许jinja2模板中使用判断 循环,但是jinja判断循环语法不允许在playbook中使用。

注意: 不是每个管理员都需要这个特性,但是有些时候jinja2模板能大大提高效率。

1.jinja模板基本语法1)要想在配置文件中使用jinj2,playbook中的tasks 必须使用template模块

2)模板配置文件里面使用变量,比如 {{ PORT }} 或使用 {{ facts 变量 }}

2.jinja模板逻辑关系{% for i in EXPR %}...{% endfor%} 作为循环表达式

{% if EXPR %}...{% elif EXPR %}...{% endif%} 作为条件判断

{# COMMENT #} 表示注释

{% for i in range(1,10)%}server 172.16.1.{{i}};
{% endfor %}#判断
{% if ansible_fqdn == "web01" %}echo 123
{% elif ansible_fqdn == "web02" %}echo 456
{% else %}echo 789
{% endif %}

nginxproxy配置文件

[root@manager jinja2]# cat j_nginx.yml
- hosts: lbserverstasks:#安装nginx- name: Installed nginx Serveryum: name: nginxstate: present#配置nginx vhosts- name: Configure nginx Servertemplate:src: ./file/proxy_kod.oldxu.com.conf.j2dest: /etc/nginx/conf.d/proxy_kod.oldxu.com.confnotify: Restart Nginx Server#启动Nginx- name: Systemd Nginx Serversystemd:name: nginxstate: startedenabled: yes handlers:- name: Restart Nginx Serversystemd: name: nginxstate: restarted# nginx组变量
[root@manager jinja2]# cat group_vars/all
kod_http_port: 80
kod_server_name: kod.oldxu.com
kod_web_site: /code/kod#nginx proxy配置文件渲染
[root@manager jinja2]# cat file/proxy_kod.oldxu.com.conf.j2
upstream {{ kod_server_name }} {{% for host in groups['webservers'] %}server {{host}}:{{kod_http_port}};{% endfor %}
}server {listen {{ kod_http_port }};server_name  {{ kod_server_name }};location / {proxy_pass http://{{ kod_server_name }};proxy_set_header Host $http_hosts;}
}[root@manager jinja2]# cat ../hosts
[webservers]
172.16.1.7
172.16.1.8

2.Keepalived配置文件 master slave

​ 1.准备多个配置文件 master backup

[root@manager jinja2]# cat j_keepalived.yml
- hosts: lbserverstasks:- name: Installed Keepalived Serveryum:name: keepalivedstate: present- name: Configure Keepalived Mastercopy:src: ./file/keepalived-master.conf.j2dest: /etc/keepalived/keepalived.confwhen: ( ansible_hostname == "lb01" )notify: Restart Keepalived Server- name: Configure Keepalived Backupcopy:src: ./file/keepalived-backup.conf.j2dest: /etc/keepalived/keepalived.confwhen: ( ansible_hostname == "lb02" )notify: Restart Keepalived Server- name: Systemd Keepalived Serversystemd:name: keepalivedstate: startedenabled: yeshandlers:- name: Restart Keepalived Serversystemd:name: keepalivedstate: restarted

​ 2.设定host_vars变量 5和6设定相同的变量,不同的值

#1.准备一份keepalived配置文件
#2.需要在keepalived配置文件中使用变量方式  ---> jinja[root@manager jinja2]# cat ./file/keepalived-vars.conf.j2
global_defs {     router_id {{ ansible_hostname }}
}vrrp_instance VI_1 {state  {{ state }}priority {{ priority }}interface eth0virtual_router_id 50advert_int 1authentication {auth_type PASSauth_pass 1111
}virtual_ipaddress {10.0.0.3}
}[root@manager jinja2]# cat host_vars/172.16.1.5
state: MASTER
priority: 200
[root@manager jinja2]# cat host_vars/172.16.1.6
state: BACKUP
priority: 99[root@manager jinja2]# cat var_keepalived.yml
- hosts: lbserverstasks:- name: Installed Keepalived Serveryum:name: keepalivedstate: present- name: Configure Keepalived Mastertemplate:src: ./file/keepalived-vars.conf.j2dest: /etc/keepalived/keepalived.confnotify: Restart Keepalived Server- name: Systemd Keepalived Serversystemd:name: keepalivedstate: startedenabled: yeshandlers:- name: Restart Keepalived Serversystemd:name: keepalivedstate: restarted#为不同的主机设定相同的变量,  只不过值不一样.

3.jinja2判断方式

[root@manager jinja2]# cat jinja_keepalived.yml
- hosts: lbserverstasks:- name: Installed Keepalived Serveryum:name: keepalivedstate: present- name: Configure Keepalived Mastertemplate:src: ./file/keepalived.conf.j2dest: /etc/keepalived/keepalived.confnotify: Restart Keepalived Server- name: Systemd Keepalived Serversystemd:name: keepalivedstate: startedenabled: yeshandlers:- name: Restart Keepalived Serversystemd:name: keepalivedstate: restarted[root@manager jinja2]# cat file/keepalived.conf.j2
global_defs {     router_id {{ ansible_hostname }}
}vrrp_instance VI_1 {
{% if ansible_hostname == "lb01" %}state  MASTERpriority 150
{% elif ansible_hostname == "lb02" %}state  BACKUPpriority 100
{% endif %}
#########################相同的内容interface eth0virtual_router_id 50advert_int 1authentication {auth_type PASSauth_pass 1111
}virtual_ipaddress {10.0.0.3}
}

Ansible Jinja2 模板相关推荐

  1. ansible之when条件语法、处理任务失败、jinja2模板和项目管理

    目录 一.item---loop 1.给定数据如下: 使用loop来输出 My name is zhangsan/lisi My age is 18/20 2.给定数据Services,要求使用loo ...

  2. ansible jinja2详解

    文章目录 1. 简介 2. 语法 3. {{ }}方法 3.1 输出变量 3.2 比较表达式 3.3 逻辑运算 3.4 算数运算 3.5 成员运算 3.6 数据类型显示 3.7 过滤器upper运用 ...

  3. ansible jinjia模板、委派与角色

    文章目录 一.Ansible delegate 1.1 什么是Task委派 1.2 TASK委派实践 1.3 创建普通用户管理ansible 1.4 ansible + haproxy实现代码滚动发布 ...

  4. Django模板之jinja2模板和CSRF

    二.Django使用jinja2模板 2.1 jinja2介绍 Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎 ...

  5. Python之 jinja2模板浅析

    目录 前言 1. jinja2介绍 1.1 jinja2的优点 1.2 安装jinja2 2. jinja2语法 2.1 基本语法 2.2 jinja2变量 2.3 jinja2中的过滤器 3. ji ...

  6. SaltStack实战之配置管理-Jinja2模板

    1. Salt yaml配置文件使用Jinja2模板介绍 jinja2官方网站:  http://jinja.pocoo.org/ 1.1 File状态使用template参数 - template: ...

  7. 【Flask】Jinja2模板的使用及控制语句

    Jinja2模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的 ...

  8. 【django】配置Jinja2模板引擎【2】

    1.安装Jinja2扩展包 pip install Jinja2 2.创建Jinja2模板引擎环境 在项⽬包⽬录-->utils⽬录中创建jinja2_env.py⽂件 from jinja2 ...

  9. 如何查看jinja2模板的上級_如何使用Python的Flask和谷歌app Engine来构建一个web app...

    前言 如果您想在很短的时间内使用Python构建web应用程序,那么Flask是一个非常好的选择.Flask是一个小而强大的web框架.它也很容易学习和简单的代码. 在本教程中,我将向您展示如何使用A ...

最新文章

  1. NYOJ 16 矩形嵌套(动态规划)
  2. python3列表_Python3列表
  3. c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘
  4. JavaScript 误区
  5. [leetcode]229. 求众数 II
  6. 高中信息技术—Python常见关键字及函数中英文对照
  7. win10找回win7的windows照片查看器
  8. 用html做mfc的界面,课程设计(MFC)“界面”“使用”“心得”
  9. 【51单片机】单片机仿真软件Proteus 8.7破解和汉化教程(附下载地址)
  10. 使用显卡+hashcat破解握手包
  11. 线程Signaled nonsignaled状态的意思
  12. android隐藏虚拟按键的几种方式
  13. 16大类31种好看的可视化图表,图表控们快收藏!
  14. 简谈CPU、MCU、FPGA、SoC这些芯片异同之处
  15. 二战暨南大学网络空间安全经验贴,纯干货!
  16. 最新版傻妞及Web安装教程-2022.12.5
  17. Python基于keras训练简单微笑识别
  18. 创建 EA 交易优化的自定义标准
  19. 电商项目实战第五节: CSS3+HTML5+JS 设计案例【考拉海购网站】之【商品栏及右侧垂直导航】
  20. Acp含金量是否很高?如何快速通过Acp认证

热门文章

  1. git rebase -i 中edit和fixup的简单使用
  2. Chebyshev:切比雪夫不等式的理解与应用
  3. xp系统怎么启动任务计划服务器,WinXP系统如何设置计划任务?
  4. Spring注解驱动开发(二)
  5. 半导体物理实验 03 - | 高频光电导法测少子寿命
  6. 数字鸿沟——你身边的成功案例
  7. linux MMC framework(3) - sdhci-pltfm
  8. “which” 和 “,which”的区别
  9. c语言which函数的用法,2.8.3 选择函数which()
  10. 2005年最具发展潜力的十大职业