Ansible Jinjia2模块

Ansible Template使用jinjia2格式。

还可以使用jinjia2的filter来实现跟进一步的功能扩展:

  | to_json  | to_nice_json  | to_yaml  | to_nice_yaml

 

基本语法:

复制代码
{% 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 %}
复制代码

 

template模块

    - name: Configure nginx Server
      template:
        src: /etc/conf.j2
        dest: /etc/test.conf

 

jinjia2模板

# jinjia2可以直接使用Ansible的魔法变量:hostvars  groups  inventory_hostname  group_names
# jinjia2也可以直接使用Ansible Facts的变量

{% for host in hosts %} {{ host }} {% endfor %}

 

示例1 生成host文件

yaml文件

复制代码
---
- name: tempalte
  hosts: all
  tasks:
    - name: Create hosts
      template:
        src: template/hosts.j2
        dest: /tmp/hosts
      when: '"dev" in group_names'  # 只有dev组的才执行
复制代码

template文件

{% for host in groups['all'] %}
{{ hostvars[host]['ansible_facts']['default_ipv4']['address'] }}  {{ hostvars[host]['ansible_facts']['fqdn'] }}  {{ hostvars[host]['ansible_facts']['hostname'] }}
{% endfor %}

 

 

 

官网链接:

filters: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html

posted @   Vincen_shen  阅读(936)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2018-03-29 Grafana连接Prometheus监控Docker平台
点击右上角即可分享
微信分享提示