上篇文章说的是salt的安装和配置,在做好之后那么就需要来测试一下是不是可以正常运行。
一、master给minion签发证书
master端和minion端是需要通过签证通信的,即minion端在启动后会链接master端,并请求master为其签发证书,待签证后完成后,代表了master端信任了minion,并且他们之间的通信是加密的。
可以使用salt-key来检查查看管理minion秘钥。
查看master和minion之间的状态:salt-key -L
[root@master ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
minion
Rejected Keys:
这种状态是可以看到master和minion已经可以通信了,并且已经获得了minion的公钥,但是master还没有接受minion的秘钥,属于不能接受的key.下面就需要master给minion进行签证。
首先需要查看master端的minion秘钥和minion端的秘钥是否一致,秘钥不一致不能签证。
master端查看:salt-key -f minion
[root@master ~]# salt-key -f minion
Unaccepted Keys:
minion: 8b:54:bb:a5:e0:c7:ba:30:64:d4:88:8e:29:b0:0c:04
minion端查看:salt-call –local key.finger
[root@minion ~]# salt-call --local key.finger
local:
8b:54:bb:a5:e0:c7:ba:30:64:d4:88:8e:29:b0:0c:04
上述的秘钥是一致的,那么master接受minion的秘钥,可以给minion签证。
在master端使用:salt-key -a minion
[root@master ~]# salt-key -a minion
The following keys are going to be accepted:
Unaccepted Keys:
minion
Proceed? [n/Y] Y
Key for minion minion accepted.
[root@master ~]# salt-key -L
Accepted Keys:
minion
Denied Keys:
Unaccepted Keys:
Rejected Keys:
签证完成。
上述过程是一个签发证书的过程,注意防火墙的阻拦。如果想要自动签发证书,那么需要在master的配置文件(/etc/salt/master)里,找到下面的自动接受,将#去掉。
#auto_accept: true
二、签证成功,那么可以进行简单的测试:
[root@master ~]# salt '*' test.ping
minion:
True
[root@master ~]# salt 'minion' test.ping
minion:
True
这是一个简单测试ping的命令,返回true说明可以ping通。
三、常用命令参数
salt的语法格式由五部分组成: salt+参数+’对象或者目标字符串’+模块函数+执行函数的参数
如:salt –summary ‘*’ cmd.run “uptime”
常用参数
(1)-v或者–verbose 显示命令的运行详细过程
(2)–summary
显示一条salt命令的概要
(3)–out 运行输出的格式结果
如:salt –out=yaml 以yaml格式输出结果 salt –out=yaml “minion” cmd.run_all “echo my salt”
[root@master ~]# salt --out=yaml "minion" cmd.run_all "echo my salt"
minion:
pid: 2086
retcode: 0
stderr: ''
stdout: my salt
(4)salt –help 查看salt的命令帮助
(5)-E 可以匹配正则表达式 如 salt -E “正则” …….
(6)-L 列表匹配,指定多个主机 salt -L “minion-one,minion-two,minion-three” test.ping
(7)-N 匹配主机组 salt -N “qunzu” test.ping
(8)查看模块包含哪些函数 salt “minion” sys.list_functions cmd #加cmd只匹配出带有cmd的模块
[root@master ~]# salt “minion” sys.list_functions cmd
minion:
– cmd.exec_code
– cmd.exec_code_all
– cmd.has_exec
– cmd.retcode
– cmd.run
– cmd.run_all
– cmd.run_chroot
– cmd.run_stderr
– cmd.run_stdout
– cmd.script
– cmd.script_retcode
– cmd.shell
– cmd.shells
– cmd.tty
– cmd.which
– cmd.which_bin
(9)查看某个函数的用法 salt “minion” sys.doc test.echo
(10)使用某个函数 salt “minion” tes.echo “hello world” #输出hello world
其他命令:
1> 从master拷贝文件到minion端
cp.get_file 拷贝文件 如: salt ‘*’ cp.get_file salt://test/1.txt /tmp/2.txt ###拷贝/srv/salt/test目录下的1.txt到minion端下的/tmp下并修改命名2.txt
cp.get_dir 拷贝目录
##salt://相当于/srv/salt/
2> salt-run manage.up 查看有哪些minion存活
3>cmd.script 执行master上的shell脚本
(11)以下转载
1> grains文件 是 机器属性的静态数据,例如:服务器的系统版本、内存大小等.属一种key-value类型的数据
列出所有Grains数据
salt 'minion-one' grains.items
[root@master ~]# salt "minion" grains.items
minion:
----------
SSDs:
biosreleasedate:
07/02/2015
biosversion:
6.00
cpu_flags:
- fpu
- vme
- de
查询某个grains数据,如查看os的版本
salt 'minion-one' grains.item os
-G参数对Grains数据进行匹配
如:匹配系统是centos
的主机,而其他们版本的服务器不进行匹配
salt -G 'os:CentOS' test.ping
自定义Grains,grains.setval自定义设置数据
salt 'node' grains.setval cpu_num 8 #这样就给minion端设置cpu的数量是8,这个数据记录在minion端的/etc/salt/grains下,删除这个文件重启minion可恢复。
复杂一些
salt 'node' grains.setval cpu_info '['intel','xenon','8']' #设置使用json语法
2> pillars和grains类似,可以一种key-values类型的存储数据
列出全部信息
salt 'node' pillars.items
3> 几种管理:安装包管理、服务管理、用户管理、文件管理、远程命令管理
安装包管理
pkg模块,如pkg.install,pkg.remove
salt "minion" pkg.install "mysql" ##以下类似
服务管理模块
service 如service.start ,service.stop, service.status
用户管理模块
user 如user.add
文件管理模块
file模块 如file.chown 增加权限等等
远程命令执行模块
cmd.run salt 'minion' cmd.run 'ls'