- 系统初始化
- 功能模块
- 业务模块
一、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 循环