文章目录

  • 一、jinja模板讲解
    • 1.1 jinja引入
    • 1.2 什么是jinja
    • 1.3 jinja使用归纳为三个地方
    • 1.4 jinjia语法

一、jinja模板讲解

1.1 jinja引入

对于同一文件,推送到不同主机上时,需要改动的内容不一定相同。比如web中我们需要监听对应minion端自己的一个网卡IP、某个端口,就不可以直接配置文件指定IP,需要涉及到一些变量进行获取后更改操作。现在Saltstack使用Jinja模板进行文件管理,在jinja中使用grains、pillar等标识并加上一些变量,就可以实现上述操作,同时可以使得文件管理更灵活,使用jinja可以减少人为操作,提升工作效率。

1.2 什么是jinja

jinja是state(即.sls)文件中默认模版语言,基于python
用来定义类似变量或者表达式
state文件中使用 “- template:jinjia” 声明

1.3 jinja使用归纳为三个地方

(1)- file状态使用template参数

– template:jinja

(2)模板文件里边使用变量名称{{ 变量 }} 。比如 {{ HOST }} {{PORT}}

(3)变量列表(变量列表和default对齐):

如果使用模板,用户定义的模板变量,必须通过defaults或者context参数,才能传递给source中定义的文件。就是说source文件必须通过defaults或者context参数传递模板变量,才可以在文件中使用

– default:http_host: {{ grains['ipv4'][-1]}}   http_port: 80

例:在apache/install.sls文件中定义变量列表

  file.managed:- name: /etc/httpd/conf/httpd.conf- source: salt://files/httpd.conf- template: jinja- defaults:http_port: 80http_host: {{ grains['ipv4'][-1]}}

1.4 jinjia语法

【1】jinja取变量使用{{ 变量 }},表达式使用{% 表达式 %}

设置变量
{% set var = 'good' %}
取变量值
{{ var }}
{{ grains['id'] }}

【2】判断语句

{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache:apache2
{% endif %}

【3】for 循环

{% for user in users%}{{ user }}
{{ endfor }}

云计算自动化运维——saltstack之jinja模块详解相关推荐

  1. 企业运维实战--自动化运维Saltstack(上)之saltstack的安装部署、远程执行、grains和pillar详解以及Jinja模板的使用

    企业运维实战--自动化运维Saltstack(上) 前言 一.Saltstack安装部署 二.sls文件远程执行 saltstack安装httpd并启动 saltstack源码编译安装nginx 启动 ...

  2. 自动化运维—saltstack

    2019独角兽企业重金招聘Python工程师标准>>> 自动化运维--saltstack .ansible 一.自动化运维介绍 传统运维:传统运维效率低,大多工作需要人工完成,工作繁 ...

  3. 自动化运维saltstack(资源)

    2019独角兽企业重金招聘Python工程师标准>>> 简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp ...

  4. 运维程序员入门指南:运维职责和分类划分详解

    很多人傻傻分不清楚运维具体是干什么的?有哪些分类?这很正常,孔子曰:术业有专攻,如是而已.还有一些新人小白想要进入这个行业,但是很懵懂,在刚刚接触,心里就打退堂鼓了,害怕自己学不会搞不定弄不懂.千锋广 ...

  5. jq中查找上级_云计算自动化运维之linux-工作中常用命令总结(上)

    ***想看完整版请看(上).(中).(下)三篇文章*** ls 命令,英文单词list的缩写,用于列出目录或者文件 查看帮助,ls --help 查看帮助 2.列出以"."开头的文 ...

  6. easyui中的datetimebox 只显示年月日_云计算自动化运维之linux-工作中常用命令总结(中)...

    ***想看完整版请看(上).(中).(下)三篇文章*** date命令,显示系统时间 直接输入date 2.date 命令打印年月日,使用命令date +%F或者是date +%Y-%m-%d 3.d ...

  7. linux mkdir命令用法,常用Linux运维命令 - mkdir命令用法详解

    mkdir命令我们在操作Linux运维管理和网站部署的时候使用的还是比较多的,主要是用来创建指定的目录文件夹.比如老蒋在之前有博客文章中提到挂载数据硬盘的时候,我们需要创建home或者www目录文件夹 ...

  8. Linux运维10:scp命令详解

    系列专题:Linux运维入门教程 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的. ...

  9. Linux运维07:free命令详解

    系列专题:Linux运维入门教程 free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之一 ...

最新文章

  1. change python是什么意思_回溯是什么意思?
  2. Nowcoder 提高组练习赛-R3
  3. golang中的big.Int
  4. Leetcode 349. 两个数组的交集 解题思路及C++实现
  5. @ngrx入坑angular的schema,爽的一逼!
  6. 【java】静态代码块
  7. PHP中操作MySQL的一些要注意的问题
  8. 搭建eureka注册中心
  9. flutter ios打包_使用 Travis CI 为 Flutter 项目打包 Android/iOS 应用
  10. matlab中LMI工具箱函数feasp的用法
  11. 《高翔视觉slam十四讲》学习笔记 第六讲 非线性优化
  12. Mac软件卸载:安全彻底地卸载Microsoft Outlook
  13. python——实例详细弄懂if __name__ == ‘__main__‘用法
  14. 【转】右键菜单大揭密
  15. 多边形画椭圆算法java_运用椭圆画法,45行代码画出任意正多边形
  16. 公交来了 1.3.0 发布
  17. 转载】泡MM与GOF的23种模式(看着挺有意思)
  18. 数字电子技术基础——第一章 绪论(笔记)
  19. linux vim拷贝if tab,vim文本编辑器
  20. 在C++中实现foreach循环,比for_each更简洁!

热门文章

  1. Word 里公式编辑有黑色圆圈显示不出
  2. Burpsuite主动扫描New Scan详细解析
  3. python求方程组近似解_使用python的sympy解符号方程组后,如何将结果带入之后的符号表达式...
  4. 数值积分的龙贝格(Romberg)算法和梯形变步长算法的对比
  5. bjdctf_2020_babystack2
  6. Win7打开文件安全警告取消方法
  7. Filter Solutions入门
  8. App性能优化——内存、CPU、耗电、启动时间指标获取分析
  9. 手把手教你制作自己的ttylinux
  10. 40w粉拿下900w播放!这个UP主在B站发起1元买水挑战!