YAML和Jinja快速了解(7)

  1. 系统初始化
  2. 功能模块
  3. 业务模块

一、YAML

1、缩进

YAML使用一个固定的缩进风格表示数据层结构关系。 Salt需要每个缩进级别由两个空格组成 不要使用tabs

2、冒号

表示键值对 冒号后面必须空格

3、短横杠

想要表示列表项,使用一个短横杠加一个空格。

多个项使用同样的缩进级别作为同一个列表的一部分。

每个短横杠后面必须有个空格。

my_dictionarty:
  - list_value_one
  - list_value_two
  - list_value_three

二、Jinja模板

Jinja是基于Python的模板引擎

如何区分是否为Jinja模板?

1、File状态使用template参数

- template: jinja ### 2、模板文件里面变量使用 ###

3、变量列表

- defaults:
PORT:8080

创建模板

/etc/resolv.conf:
  file.managed:
    - source: salt://files/resolv.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - defaults:
      DNS_SERVER: 192.168.1.6

修改files目录里的文件加变量

[root@node1-saltstack base]# cat files/resolv.conf
#hehe
nameserver 

启动执行

[root@node1-saltstack base]# salt ‘*’ state.highstate

node2-saltstack:
----------
          ID: /etc/resolv.conf
    Function: file.managed
      Result: True
     Comment: File /etc/resolv.conf updated
     Started: 12:28:35.269307
    Duration: 453.813 ms
     Changes:   
              ----------
              diff:
                  --- 
                  +++ 
                  @@ -1,2 +1,2 @@
                   #hehe
                  -nameserver 192.168.1.1
                  +nameserver 192.168.1.6
Summary
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1

验证是否应用变量

[root@node2-saltstack ~]# cat /etc/resolv.conf 
#hehe
nameserver 192.168.1.6

扩展: 应用grains

[root@node1-saltstack ~]# cat /srv/salt/base/files/resolv.conf 
#hehe
# 
nameserver 

[root@node2-saltstack ~]# cat /etc/resolv.conf 
#hehe
# ['192.168.1.14']
nameserver 192.168.1.1

Jinja可以使用:

  • 执行模块
  • Pillar:
  • grains:
  • if else
  • for 循环

Search

    Table of Contents