Ansible Jinja2 模板
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 模板相关推荐
- ansible之when条件语法、处理任务失败、jinja2模板和项目管理
目录 一.item---loop 1.给定数据如下: 使用loop来输出 My name is zhangsan/lisi My age is 18/20 2.给定数据Services,要求使用loo ...
- ansible jinja2详解
文章目录 1. 简介 2. 语法 3. {{ }}方法 3.1 输出变量 3.2 比较表达式 3.3 逻辑运算 3.4 算数运算 3.5 成员运算 3.6 数据类型显示 3.7 过滤器upper运用 ...
- ansible jinjia模板、委派与角色
文章目录 一.Ansible delegate 1.1 什么是Task委派 1.2 TASK委派实践 1.3 创建普通用户管理ansible 1.4 ansible + haproxy实现代码滚动发布 ...
- Django模板之jinja2模板和CSRF
二.Django使用jinja2模板 2.1 jinja2介绍 Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎 ...
- Python之 jinja2模板浅析
目录 前言 1. jinja2介绍 1.1 jinja2的优点 1.2 安装jinja2 2. jinja2语法 2.1 基本语法 2.2 jinja2变量 2.3 jinja2中的过滤器 3. ji ...
- SaltStack实战之配置管理-Jinja2模板
1. Salt yaml配置文件使用Jinja2模板介绍 jinja2官方网站: http://jinja.pocoo.org/ 1.1 File状态使用template参数 - template: ...
- 【Flask】Jinja2模板的使用及控制语句
Jinja2模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的 ...
- 【django】配置Jinja2模板引擎【2】
1.安装Jinja2扩展包 pip install Jinja2 2.创建Jinja2模板引擎环境 在项⽬包⽬录-->utils⽬录中创建jinja2_env.py⽂件 from jinja2 ...
- 如何查看jinja2模板的上級_如何使用Python的Flask和谷歌app Engine来构建一个web app...
前言 如果您想在很短的时间内使用Python构建web应用程序,那么Flask是一个非常好的选择.Flask是一个小而强大的web框架.它也很容易学习和简单的代码. 在本教程中,我将向您展示如何使用A ...
最新文章
- NYOJ 16 矩形嵌套(动态规划)
- python3列表_Python3列表
- c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘
- JavaScript 误区
- [leetcode]229. 求众数 II
- 高中信息技术—Python常见关键字及函数中英文对照
- win10找回win7的windows照片查看器
- 用html做mfc的界面,课程设计(MFC)“界面”“使用”“心得”
- 【51单片机】单片机仿真软件Proteus 8.7破解和汉化教程(附下载地址)
- 使用显卡+hashcat破解握手包
- 线程Signaled nonsignaled状态的意思
- android隐藏虚拟按键的几种方式
- 16大类31种好看的可视化图表,图表控们快收藏!
- 简谈CPU、MCU、FPGA、SoC这些芯片异同之处
- 二战暨南大学网络空间安全经验贴,纯干货!
- 最新版傻妞及Web安装教程-2022.12.5
- Python基于keras训练简单微笑识别
- 创建 EA 交易优化的自定义标准
- 电商项目实战第五节: CSS3+HTML5+JS 设计案例【考拉海购网站】之【商品栏及右侧垂直导航】
- Acp含金量是否很高?如何快速通过Acp认证
热门文章
- git rebase -i 中edit和fixup的简单使用
- Chebyshev:切比雪夫不等式的理解与应用
- xp系统怎么启动任务计划服务器,WinXP系统如何设置计划任务?
- Spring注解驱动开发(二)
- 半导体物理实验 03 - | 高频光电导法测少子寿命
- 数字鸿沟——你身边的成功案例
- linux MMC framework(3) - sdhci-pltfm
- “which” 和 “,which”的区别
- c语言which函数的用法,2.8.3 选择函数which()
- 2005年最具发展潜力的十大职业