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 
      
相关推荐
Hy行者勇哥1 天前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏3 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风14 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠23 天前
ansible编辑
网络·ansible
芳心粽伙饭23 天前
Ansible课后作业
ansible
烁34724 天前
Ansible初识
ansible
烁34724 天前
Ansible安装部署调试
ansible
烁34724 天前
Ansible命令
ansible
小义_25 天前
【Ansible】(三)基础配置与连接设置
云原生·ansible
炸炸鱼.1 个月前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible