salt的链接、简单测试和常用命令

  • Post author:
  • Post category:其他



上篇文章说的是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.removesalt "minion" pkg.install "mysql"    ##以下类似


服务管理模块

service  如service.start  ,service.stop,   service.status


用户管理模块

user  如user.add
文件管理模块file模块  如file.chown  增加权限等等
远程命令执行模块cmd.run  salt 'minion' cmd.run 'ls'



版权声明:本文为wzqzhq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。