官网文档链接:https://docs.saltstack.com
远程执行:在远程系统上执行命令是Salt的核心功能,Salt可以在秒级内在成千上万个系统上执行命令。
事件驱动架构:可以在架构中的系统中驱动响应式配置和管理
配置管理:Salt有一套健壮且灵活的配置管理框架,该框架使得同时配置成千上万套系统毫不费力
Salt的基本组件和概念
Grains
grains interface获取底层系统信息的接口。Grains收集操作系统,域名,IP,内核,OS类型,内存和其他系统属性
grains interface使得Salt的模块和组件可用,因此正确的salt minion命令可以自动化的在正确的系统上执行
Grain数据是相对静态的,即使操作系统信息改变,grain data可以自动更新
Pillar
Pillar是Salt的接口,Pillar是Salt用来分发全局变量到所有minions的一个接口
Pillar data处理方式类似Salt State Tree
Pillar data在主上编译,只有在pillar配置中指定的minion才可以获取pillar data,这使它为特定的minion存储敏感数据非常有用.
Targeting
Targeting minions是定义哪个minion应该执行命令,或者通过匹配主机名、系统信息、或者自定义组、甚至组合,来执行状态。
Runners
Salt Runners类似于Salt execution modules,但是他们是在master(不是在远端minions)上执行
YAML
SLS文件是YAML renderer渲染器的默认渲染器,YAML是一种标记语言,有许多强大的功能。Salt使用YAML的一个小子集包含常用的数据结构,例如list和dictionaries。YAML renderer的工作是将YAML 数据结构编译成python数据结构,让Salt使用。
salt-api:用于远程连接salt master的接口
--version 打印正在运行Salt的版本
--versions-report 输出程序依赖者和版本号,然后退出
-h, --help
-c CONFIG_DIR, --config-dir=CONFIG_dir Salt配置目录的位置,这个目录包含Salt manager和minions的配置文件,默认位置是/etc/salt
-d, --daemon 后台运行salt-api
--pid-file=PIDFILE 指定pidfile的位置,默认位置/var/run/salt-api.pid
-l LOG_LEVEL, --log-level=LOG_LEVEL 控制台日志的日志级别:all, garbage, trace, debug, info, warning, error, quiet. 默认: warning.
--log-file=LOG_FILE 日志文件的位置,默认/var/log/salt/api
--log-file-level=LOG_LEVEL_LOGFILE 日志文件的日志级别,默认warning
salt sls
规则一: 缩进
Salt需要每个缩进级别由两个空格组成
规则二: 冒号
字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。Values的表现形式冒号下面的每一行,用一个空格隔开
my_key: my_value
规则三: 短横杠
想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。
my_dictionary:
- list_value_one
- list_value_two
- list_value_three
salt cmd.run:执行一个salt run
--version
--versions-report
-h, --help
-c CONFIG_DIR, --config-dir=CONFIG_dir
-t TIMEOUT, --timeout=TIMEOUT 等待从Minion返回的超时时间,以秒为单位。超时时间说明了命令行客户端查询minion,然后检查运行任务会等待多长时间。默认 1
--hard-crash 抛出原始异常,默认False
-d, --doc, --documentation 显示runners的文档,仅查看特定模块或者runner的文档
pillar
声明master pillar
Salt master server包含pillar_roots设置,pillar_roots选项从环境映射到目录,pillar data基于top.sls文件中的匹配器映射到minions。
pillar_roots:
base:
- /srv/pillar
基础环境在/srv/pillar目录下
/srv/pillar/top.sls
base:
‘*‘:
- packages
‘web*‘:
- vim
/srv/pillar/packages.sls匹配所有minion
以web开头的minion匹配/srv/pillar/packages.sls file 和 /srv/pillar/vim.sls
dev:
‘os:Debian‘:
- match: grain
- servers
传递特殊配置到指定minion
pillar的namespace
pillar的字典合并
包含其他Pillars
include:
- users:
defaults:
sudo: [‘bob‘, ‘paul‘]
key: users
In-Memory Pillar Data vs. On-Demand Pillar Data
主从上的pillar data会同步,in-memory pillar data 是由 pillar.item, pillar.get, and pillar.raw 方法返回的
saltutil.refresh_pillar.刷新方式
Pillar环境如何处理
pillarenv使minion只考虑从单一环境中获取配置文件
查看pillar data
pillar.item :在in-memory pillar data中检索
pillar.items:编译一个新的pillar字典并返回,和in-memory pillar data无关
pillar.raw:返回in-memory pillar data中整个pillar字典
pillar.get 方法
在命令行设置Pillar Data
salt ‘*‘ state.apply pillar=‘{"cheese": "spam"}‘
Pillar 中Master配置
pillar_opts: True master的配置在所有minion中都可用