SaltStack配置管理
配置管理
修改master配置文件并重启
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
test:
- /srv/salt/test
prod:
- /srv/salt/prod
[root@swt ~]# systemctl restart salt-master.service
[root@swt ~]# mkdir -p /srv/salt/{base,dev,test,prod}
[root@swt ~]# tree /srv/
/srv/
└── salt
├── base
├── dev
├── prod
└── test
编写apache的YAML文件
* salt有两种模块,一种远程执行模块(cmd),一种是状态管理模块(pkg)
[root@swt base]# mkdir web
[root@swt base]# cd web/
[root@swt ~]# cat nfs.sls
nfs_install: //id 唯一标识符
pkg.installed:
- name: nfs-utils
nfs_servicer:
service.running:
- name: nfs-utils
- enable: True
执行
[root@swt ~]# salt 'lizihan123' state.sls web.nfs //默认base环境下
lizihan123:
----------
ID: nfs_install
Function: pkg.installed
Name: nfs-utils
Result: True
Comment: The following packages were installed/updated: nfs-utils
Started: 16:42:31.051099
Duration: 17579.944 ms
Changes:
----------
nfs-utils:
----------
new:
1:1.3.0-0.61.el7
old:
----------
ID: nfs_servicer
Function: service.running
Name: nfs-utils
Result: True
Comment: Service nfs-utils is already enabled, and is running
Started: 16:42:50.181451
Duration: 233.893 ms
Changes:
----------
nfs-utils:
True
Summary for lizihan123
------------
Succeeded: 2 (changed=2)
Failed: 0
------------
Total states run: 2
Total run time: 17.814 s
如果想不同的主机应用不同的配置,则需要使用到salt高级状态模块
# 当使用salt命令执行高级状态,会将topfile当作入口文件,进行调用
# 将高级状态应用到所有主机
编写topfile文件,必须在base目录下
[root@swt ~]# cd /srv/salt/base/
[root@swt base]# cat top.sls
base:
'lizihan123':
- web.nfs
'swt':
- web.vsftp
[root@swt ~]# salt '*' state.highstate //让所有minion工作,但是工作内容在topfile里,topfile没有指定minion工作则不工作
lizihan123:
----------
ID: nfs_install
Function: pkg.installed
Name: nfs-utils
Result: True
Comment: The following packages were installed/updated: nfs-utils
Started: 16:47:37.761194
Duration: 12846.796 ms
Changes:
----------
nfs-utils:
----------
new:
1:1.3.0-0.61.el7
old:
----------
ID: nfs_servicer
Function: service.running
Name: nfs-utils
Result: True
Comment: Service nfs-utils is already enabled, and is running
Started: 16:47:52.728963
Duration: 128.549 ms
Changes:
----------
nfs-utils:
True
Summary for lizihan123
------------
Succeeded: 2 (changed=2)
Failed: 0
------------
Total states run: 2
Total run time: 12.975 s
swt:
----------
ID: vsftpd_install
Function: pkg.installed
Name: vsftpd
Result: True
Comment: The following packages were installed/updated: vsftpd
Started: 16:47:38.171488
Duration: 14386.016 ms
Changes:
----------
vsftpd:
----------
new:
3.0.2-25.el7
old:
----------
ID: vsftpd_servicer
Function: service.running
Name: vsftpd
Result: True
Comment: Service vsftpd has been enabled, and is running
Started: 16:47:54.520855
Duration: 292.769 ms
Changes:
----------
vsftpd:
True
Summary for swt
------------
Succeeded: 2 (changed=2)
Failed: 0
------------
Total states run: 2
Total run time: 14.679 s
[root@swt ~]# salt '*' state.highstate test=True //检测能不能启动
Grains
Grains
:salt的一个组件,salt-minions
启动时收集的信息。(资产管理)
//获取信息
[root@swt ~]# salt '*' grains.items //获取minions信息
[root@swt ~]# salt '*' grains.get saltversion //获取salt的版本
lizihan123:
2019.2.0
swt:
2019.2.0
[root@swt ~]# salt '*' grains.get ip4_interfaces:eth0 //查询所有minion的eth0的ip地址
lizihan123:
- 172.17.26.52
swt:
- 172.16.23.247
//目标匹配
[root@swt ~]# salt -G 'os:CentOS' cmd.run 'uptime' //让所有centos的系统下执行命令
lizihan123:
17:12:24 up 34 days, 7:52, 1 user, load average: 0.03, 0.06, 0.05
swt:
17:12:24 up 58 days, 2:16, 2 users, load average: 0.02, 0.05, 0.05
//在topfile文件里写入grains匹配规则
[root@swt ~]# cat /srv/salt/base/top.sls
base:
'os:CentOS':
- match: grain //定义匹配方法
- web.vsftp
[root@swt ~]# salt '*' state.highstate test=True
lizihan123:
----------
ID: vsftpd_install
Function: pkg.installed
Name: vsftpd
Result: None
Comment: The following packages would be installed/updated: vsftpd
Started: 17:20:20.590014
Duration: 963.08 ms
Changes:
----------
ID: vsftpd_servicer
Function: service.running
Name: vsftpd
Result: None
Comment: Service vsftpd not present; if created in this state run, it would have been started
Started: 17:20:21.554117
Duration: 20.578 ms
Changes:
Summary for lizihan123
------------
Succeeded: 2 (unchanged=2)
Failed: 0
------------
Total states run: 2
Total run time: 983.658 ms
swt:
----------
ID: vsftpd_install
Function: pkg.installed
Name: vsftpd
Result: None
Comment: The following packages would be installed/updated: vsftpd
Started: 17:20:20.904796
Duration: 2027.936 ms
Changes:
----------
ID: vsftpd_servicer
Function: service.running
Name: vsftpd
Result: None
Comment: Service vsftpd not present; if created in this state run, it would have been started
Started: 17:20:22.933834
Duration: 26.139 ms
Changes:
Summary for swt
------------
Succeeded: 2 (unchanged=2)
Failed: 0
------------
Total states run: 2
Total run time: 2.054 s
//可以使用配合模板来做判断
······
自定义grains
第一种修改/etc/salt/minion的配置文件(不建议)
第二种在minion端写grains文件
[root@swt ~]# cat /etc/salt/grains
test-grains: swt
[root@swt ~]# salt '*' grains.get test-grains
lizihan123:
swt:
[root@swt ~]# systemctl restart salt-master.service //需要重启客户端
[root@swt ~]# salt '*' grains.get test-grains
lizihan123:
swt:
swt
[root@lizihan123 ~]# cat /etc/salt/grains
bbq: qqb
[root@swt ~]# salt '*' saltutil.sync_grains //执行这条,不需要重启
swt:
lizihan123:
[root@swt ~]# salt '*' grains.get bbq
lizihan123:
qqb
swt:
[root@swt ~]# cat /srv/salt/base/top.sls //编写topfile文件
base:
'bbq:qqb':
- match: grain
- web.vsftp