SaltStack入门(二)Grains、NoteGroup和State

执行命令时,忘记语法,可以使用sys.doc模块查询salt模块相关使用方法。
# salt \'*\' sys.doc disk
1、执行命令时,查找minion目标(targeting)常用有三种方式:

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、雅安服务器托管、营销软件、网站建设、泰和网站维护、网站推广。

salt ‘shell 正则’ 命令
例:# salt \'host*\' cmd.run \'df -h\'#我们主机ID是host加数字的
salt –E ‘perl 正则’命令 #--pcre,不会perl语言,也不举例了
salt –N group 命令 #--nodegroup,前提已经做好分组
例:# salt -N web cmd.run \'df -h\'
salt –L ‘host1,host2’ 命令 #--list
例:# salt -L \'host1,host2\' cmd.run \'df -h\'
salt –G ‘os.ubuntu’ 命令 #--grains

Grains是什么?
grains是minion启动时采集服务器系统信息,运行过程中数据不会发生变化,如操作系统、内核、网卡等一些静态的数据。
Grains相关命令:
列出grains相关模块
# salt \'*\' grains.ls
列出minion采集的grains静态数据
# salt \'*\' grains.items
列出某个grains信息
# salt \'*\' grains.item os
对grains有了初步了解,现在会用salt –G命令了吧!
# salt -G \'os.Ubuntu\' test.ping
2、NodeGroup(minion分组)

1
2
3
4
5
6
7
8
9
10
11
12
13

# vi /etc/salt/master #不用重启salt服务,修改后即生效
nodegroups:
web: \'host1\' #多个主机以逗点分割
db: \'host2\'

#测试分组后效果
# salt -N db test.ping
host2:
True

# salt -N web test.ping
host1:
True

3、States(配置管理)
要想启用配置管理功能,首先要对受控端进行设置,让minion以root用户接受主空端管理指令:

1
2
3
4
5
6
7

# vi /etc/salt/minion
user: root
开启主控端配置管理功能:
# vi /etc/salt/master
file_roots:
base:
- /srv/salt/ #默认存放管理指令和文件位置

手动创建目录和默认入口配置文件(top.sls)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# mkdir /srv/salt

# vi /srv/salt/top.sls #使用YAML语言格式定义
base: #默认的起点配置
\'*\': #匹配所有在线minion,指定组直接写组名
- web.httpd #web是默认/srv/salt下目录,http是state文件名字,以sls结尾

----------------------------
如果想使用分组定义,如下:
base:
web:
- match: nodegroup
- web.httpd
----------------------------

# vi /srv/salt/web/httpd.sls #创建目录或文件名根据自己情况定义
httpd: #说明
pkg: #包管理
-name: apache2 #包名称
- installed #包的状态,卸载是removed

注意:缩进是2个空格,冒号后门一个空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# salt \'*\' state.sls web.httpd #只执行/srv/salt/web/httpd.sls
# salt \'*\' state.highstate #执行所有top关联的slsl文件
host1:
----------
ID: httpd
Function: pkg.installed
Name: apache2
Result: True
Comment: The following packages were installed/updated: apache2.
Started: 11:30:40.994840
Duration: 103211.119 ms
Changes:
省略.....
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
host2:
----------
ID: httpd
Function: pkg.installed
Name: apache2
Result: True
Comment: The following packages were installed/updated: apache2.
Started: 11:30:41.458100
Duration: 122426.802 ms
Changes:
省略.....
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1

Apache已安装完毕并启动,然后将修改后的配置文件推送到minion(apache服务器),配置文件已修改好,位置在/srv/salt/web/httpd.conf,修改内容是添加个虚拟主机,在httpd.sls添加文件分发信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# vi httpd.sls
httpd:
pkg:
-name: apache2
-installed
service:
-name: apache2 #服务脚本名
-running #运行状态
-reload: True #如watch监控项发生变化,则重新加载配置
-watch: #监控文件变化
- file: /etc/apache2/httpd.conf
/etc/apache2/httpd.conf: #分发到minion位置
file.managed: #文件管理操作
-source: salt://web/httpd.conf#修改好的配置文件位置
-user: root
-group: root
-mode: 644

1

# salt \'*\' state.sls web.httpd #再执行下

使用下面命令查看minion服务器apache配置文件已经更新完成:

1

# salt \'*\' cmd.run \'cat /etc/apache2/httpd.conf\'


当前标题:SaltStack入门(二)Grains、NoteGroup和State
标题路径:http://ybzwz.com/article/cgsgge.html