Ansible-Jinja2模板

文章目录

一、Jinja2介绍

什么是

Python的模板引擎,有自带的模板语法

Jinja2与Ansible关系

二、Ansible如何使用Jinja2

使用template模板

Jinja2文件中使用判断和循环

Jinja2文件中使用判断

*shell判断:

语法
jinja2 复制代码
{% if 条件1 %}
动作1
{% elif 条件2 %}
动作2
{% else %}
动作3
{% endif %}

解释:

如果满足条件1,执行动作1,如果不满足条件1,但满足条件2,则执行动作2;

如果条件1、2都不满足,那么执行动作3

示例

Jinja2文件中使用循环

语法
jinja2 复制代码
{% for n in 条件 %}
动作
{% endfor %}
示例

案例:Ansible使用Jinja2模板生成keepalived配置文件

已知:主机清单有如下配置:

ini 复制代码
[lb_servers]
lb01		ansible_ssh_host=172.16.1.5
lb02		ansible_ssh_host=172.16.1.6

编写keepalived.j2文件

jinja2 复制代码
global_defs {
	router_id {{ansible_hostname}}
}

vrrp_instance VI_lb {
	<% if ansible_hostname == 'lb01' %>
		state MASTER
		priority 100
	<% else %>
		state BACKUP
		priority 99
	<% endif %>	
	
	virtual_router_id 43
	authentication {
		auth_type PASS
		auth_pass 1234
	}
	virtual_ipaddress {
		10.0.0.43/32
	}
	...
}

编写ansible playbook文件

yaml 复制代码
---
- name: the play1
  hosts: lb_servers
  become: no
  tasks:
    - name: 安装keepalived
    - name: 配置keepalived
      template:
        src: keeplived.j2
        dest: /etc/keeplived/keepalive.conf
      notify: restart_keepalived
  handlers:
    - name: restart_keepalived
      service:
        name: keepalived
        state: restarted 

案例:Ansible使用Jinja2生成负载均衡Nginx配置文件

编写xxx.j2文件

jinja2 复制代码
upstream backend {
<% for n in range(1,11) %>
server 172.16.1.{{n}};
<% endfor %>
}

server{
	listen 80;
	server_name xxx.com;
	location /{
		proxy_pass http://backend;
	}
}

编写ansible playbook文件

yaml 复制代码
---
- name: the play1
  hosts: all
  become: no
  tasks:
    - name: the task1
      template:
        src: xxx.j2
        dest: /etc/nginx/conf.d/xxx.conf 
      
相关推荐
Cloud Traveler2 天前
Ansible+cpolar:NAS 远程自动化运维方案
ansible
陈桴浮海2 天前
【Linux&Ansible】学习笔记合集七
linux·学习·ansible
only_Klein4 天前
Ansible自动化部署Kubernetes
kubernetes·自动化·ansible
陈桴浮海4 天前
【Linux&Ansible】学习笔记合集五
linux·云原生·ansible
喵手4 天前
Python爬虫实战:数据质量的最后一道防线 - 基于 Jinja2 的爬虫数据抽样可视化验收报告!
爬虫·python·爬虫实战·数据质量·jinja2·零基础python爬虫教学·爬虫数据抽样可视化验收报告
杨了个杨89825 天前
Ansible Playbook 的常用模板
java·服务器·ansible
陈桴浮海5 天前
【Linux&Ansible】学习笔记合集四
linux·学习·ansible
杨了个杨89826 天前
Ansible的常见用法
ansible
曲幽6 天前
FastAPI不止于API:手把手教你用Jinja2打造动态Web页面
python·fastapi·backend·jinja2·full stack·template engine·web development
陈桴浮海6 天前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible