Salt命令由三个主要部分构成:
salt '<target>' <function> [arguments]
模拟执行(Dry run):
salt '*' state.highstate test=True -v
目标匹配有以下几种方法
-E, –pcre 正则匹配
salt -E 'Min*' test.ping
-L, –list 列表匹配
salt -L Minion,Minion1 test.ping
-G, –grain grains匹配
salt -G 'os:MacOS' test.ping
–grain-pcre grains加正则匹配
-N, –nodegroup 组匹配(groups是我们在master配置文件
中定义的组名称。)
salt -N groups test.ping
-R, –range 范围匹配
-C, –compound 综合匹配(指定多个匹配)
salt -C 'G@os:MacOS or L@Minion1'
-I, –pillar pillar值匹配
salt -I 'key:value' test.ping
-S, –ipcidr minions网段地址匹配
salt -S '192.168.1.0/24' test.ping
grains
查看系统grains
salt 'Minion' sys.list_functions grains
通过Minion配置文件定义Grains
SaltStack@Minion: cat /etc/minion.d/grains.conf
grains:
roles:
- webserver
- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15
重启后去master上查看
salt 'Minion' grains.item roles
配置管理从这里开始
States是SaltStack中的配置语言,states sls文件使用YAML语法。
语法规则:
- 两个空格缩进,不要使用tabs
- 想要表示列表项,使用一个短横杠加一个空格
- 冒号后面都有一个空格(表示路径的除外)
在srv/salt中编写,位置取决于file_roots配置
基本示例
创建一个目录
create my_new_directory:
file.directory:
- name: /opt/my_new_directory
- user: root
- group: root
- mode: 755
执行,.sls不要写,如果在目录下,将目录与文件用’.’隔开,如: 将httpd/apache.sls 写为httpd.apache
[root@slave1] /srv/salt$ salt '*' state.sls directory
初始化
目录结构
[root@slave1] /srv/salt/base$ tree
.
├── init
│ ├── dns.sls
│ ├── env_init.sls
│ ├── files
│ │ └── resolv.conf
│ ├── history.sls
│ └── sysctl.sls
└── top.sls
dns.sls:
[root@slave1] /srv/salt/base/init$ cat dns.sls
/etc/resolv.conf:
file.managed:
- source: salt://init/files/resolv.conf
- user: root
- group: root
- mode: 644
files/resolv.conf
[root@slave1] /srv/salt/base/init$ cat files/resolv.conf
# Generated by NetworkManager
search hanli.com
nameserver 119.29.29.29
history.sls
[root@slave1] /srv/salt/base/init$ cat history.sls
/etc/profile:
file.append:
- text:
- export HISTTIMEFORMAT="%F %T `whoami` "
sysctl.sls
[root@slave1] /srv/salt/base/init$ cat sysctl.sls
net.ipv4.ip_local_port_range:
sysctl.present:
- value: 10000 65000
fs.file-max:
sysctl.present:
- value: 2000000
net.ipv4.ip_forward:
sysctl.present:
- value: 0
vm.swappiness:
sysctl.present:
- value: 0
env_init.sls
[root@slave1] /srv/salt/base/init$ cat env_init.sls
include:
- init.dns
- init.history
- init.sysctl
top.sls
[root@slave1] /srv/salt/base$ cat top.sls
base:
'*':
- init.env_init
执行
salt '*' state.highstate test=True -v