Saltstack

Saltstack


基本原理

 Saltstack采用C/S模式,
 Minion端在第一次启动时,会在/etc/salt/pki/minion/目录下生成自己的公钥和私钥。并将公钥发送给master。

[root@minion ~]# ls /etc/salt/pki/minion/
minion.pem  minion.pub

 Master端接收到minion的key值后会放在/etc/salt/pki/master/minions_pre/,当使用salt-key -a 命令认证该minion后,会将key转移到/etc/salt/pki/master/minions目录

[root@master ~]# ls /etc/salt/pki/master/minions_pre/
sate01
[root@master ~]# salt-key -a sate01
The following keys are going to be accepted:
Unaccepted Keys:
sate01
Proceed? [n/Y] y
Key for minion sate01 accepted
[root@master ~]# ls /etc/salt/pki/master/minions
sate01

Master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受消息的。
具体步骤如下:
1. Salt stack的Master与Minion之间通过ZeroMq进行消息传递,使用了ZeroMq的发布-订阅模式,连接方式包括tcp,ipc
2. salt命令,将cmd.run ls命令从salt.client.LocalClient.cmd_cli发布到master,获取一个Jodid,根据jobid获取命令执行结果。
3. master接收到命令后,将要执行的命令发送给客户端minion。
4. minion从消息总线上接收到要处理的命令,交给minion._handle_aes处理
5. minion._handle_aes发起一个本地线程调用cmdmod执行ls命令。线程执行完ls后,调用minion._return_pub方法,将执行结果通过消息总线返回给master
6. master接收到客户端返回的结果,调用master._handle_aes方法,将结果写的文件中
7. salt.client.LocalClient.cmd_cli通过轮询获取Job执行结果,将结果输出到终端。

salt按照操作模式可以分为实时管理和配置管理:
远程执行,也可以称为实时管理: 通过执行命令来完成管理任务,优点就是实时性高,缺点就是无法跟踪,保存配置状 态;
配置管理,也可以称为状态管理: 通过编写特定的文件用来记录目标系统的配置状态,然后将这些受控主机会定期同步 这些配置状态信息;

基本使用&常用命令

salt

salt命令是最常用到的。Salt命令允许执行海量的函数库,并且可以针对特殊的minions和minions组为目标执行,包含命令选项,目标说明,要执行的函数,和函数的参数。

Usage: salt [options] '<target>' <function> [arguments]
例:
[root@master ~]# salt sate01 test.ping

[root@master ~]# salt sate01 cmd.run 'df -h'

[root@master ~]# salt '*' pkg.install vim

[root@master ~]# salt '*' network.interfaces

[root@master ~]# salt '*' sys.doc 查看所有函数

salt-run
是用于管理虚拟机的命令

Usage: salt-run [options]
salt-run manage.status   ##查看所有minion状态
salt-run manage.down     ##查看所有没在线minion
salt-run manged.up       ##查看所有在线minion

salt-key
salt-key 密钥管理,通常在master端执行

salt-key [options]
salt-key -L              ##查看所有minion-key
salt-key -a <key-name>   ##接受某个minion-key
salt-key -d <key-name>   ##删除某个minion-key
salt-key -A              ##接受所有的minion-key
salt-key -D              ##删除所有的minion-key

salt-cp
salt-cp 分发文件到minion上,不支持目录分发,通常在master运行

salt-cp [options] '<target>' SOURCE DEST
salt-cp '*' testfile.html /tmp
salt-cp 'test*' index.html /tmp/a.html

salt-master
salt-master master运行命令

salt-master [options]
salt-master            ##前台运行master
salt-master -d         ##后台运行master
salt-master -l debug   ##前台debug输出

salt-minion

salt-minion minion运行命令
salt-minion [options]
salt-minion            ##前台运行
salt-minion -d         ##后台运行
salt-minion -l debug   ##前台debug输出

salt-call
salt-call 该命令通常在minion上执行,minion自己执行可执行模块,不是通过master下发job

salt-call [options] <function> [arguments]
salt-call test.ping           ##自己执行test.ping命令
salt-call cmd.run 'ifconfig'  ##自己执行cmd.run函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值