实验环境以及基础安装
操作系统:
Salt master:
Ubuntu 16.04.2 LTS
Three minions:
Both CentOS Linux release 7.3.1611 (Core)
还有salt-master本身也可以作为minion.
安装很简单,yum,apt-get 等等即可.简单配置minion的/etc/salt/minion文件中的salt master为master的hostname,启动minion上的salt-minion service。然后在salt-master端,使用命令salt-key -L 查看cache的minion keys以及salt-key -a key1 或者salt-key -A直接接受所有的minion key,这样初始环境就搭建好了。
Salt 基础命令介绍
salt 命令的结构:
salt [options] '<target>' <function> [arguments]
options,salt-master端的操作,target是要操作的minion,func是指salt的模块函数,arguments是指minion上面运行的命令。
- target的匹配。比如'*' 代表所有的minion.salt '*' cmd.run 'echo hello',这条命的意思是在所有的('*'匹配所有)minions上面执行命令‘echo hello’,cmd.run是salt的一个函数,cmd是一个module.结果为
- centser1:
hello
ubunser1:
hello
centser2:
hello - 通过正则表达式子匹配,命令方式为salt -E 'pattern' mod.func args.正则表达式下面的全局匹配为salt -E '.*' test.ping,test.ping一般用于在salt-key 命令之后测试master与minion是否联通的命令
- 列表匹配salt -L 'centser1,ubunser1,centser2' test.ping,
Grains:
usage: webserver
new1: bar
new2:
- one
- two
JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
Pillars
'centser1':
- centser1_key
'centser2':
- centser2_key
----------
private_key:
key1
案例1:使用Jinja模板动态下发配置文件
file.managed:
- source: salt://test.j2
- name: /tmp/test.conf
- user: root
- group: root
- template: jinja
mem_total = {{ grains['mem_total'] }}
hostname = {{ grains['host'] }}
cpu_num = 1
mem_total = 740
hostname = centser2
info = some data
cpu_num = 1
mem_total = 740
hostname = centser2
info = some data