首页 > 代码库 > SaltStack初探---学习重点在:salt-api、salt-sls、salt-run、pillar--2017年4月21日和24日

SaltStack初探---学习重点在:salt-api、salt-sls、salt-run、pillar--2017年4月21日和24日

官网文档链接: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中都可用
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

SaltStack初探---学习重点在:salt-api、salt-sls、salt-run、pillar--2017年4月21日和24日