企业 Saltstack中salt-ssh、salt-syndic、salt-api

本文详细介绍SaltStack的salt-ssh、salt-syndic和salt-api组件。salt-ssh用于无minion环境下的远程操作,salt-syndic作为代理隔离master与minion,salt-api提供RESTful API接口。
摘要由CSDN通过智能技术生成

salt-ssh

salt-ssh可以独立运行的,不需要minion端。
salt-ssh 用的是sshpass进行密码交互的。
以串行模式工作,性能下降。

安装
[root@server1 ~]# yum install -y salt-ssh

salt-ssh 安装完成后配置roster文件在:/etc/salt/roster

[root@server1 ~]# vim /etc/salt/roster 
server2:
  host: 172.25.254.2
  user:root
  password: redhat

server3:
  host: 172.25.254.3
  user: root
  password: redhat
测试

因为salt-ssh是不需要minion节点的,所以可以关闭server2、server3上的salt-minion

[root@server2 ~]# systemctl stop salt-minion.service 

[root@server3 ~]# systemctl stop salt-minion.service

然后就可以直接使用salt-ssh去连接,第一连接会有密码验证

[root@server1 ~]# salt-ssh '*' test.ping
Permission denied for host server3, do you want to deploy the salt-ssh key? (password required):
[Y/n] y
Password for root@server3: 
server3:
    True
Permission denied for host server2, do you want to deploy the salt-ssh key? (password required):
[Y/n] y
Password for root@server2: 
server2:
    True

这样的方式可以执行远程操作,相对于之前的salt执行方式都是一样的

[root@server1 ~]# salt-ssh server2 cmd.run hostname
server2:
    server2

salt-syndic

syndic其实就是个代理,类似zabbix proxy,隔离master与minion。
Syndic必须要运行在master上,再连接到另一个topmaster上。
Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。
syndic与topmaster的file_roots和pillar_roots的目录要保持一致。

简单来说就是在执行操作命令时,由topmaster去下发指令给下面的sydic节点,而syndic节点就是在普通的master主机上,控制master节点再去下发指令给minion节点最后执行。

安装配置Top master

这里需要配置另一台主机作为topmaster节点server4,同样配置yum源,安装salt-master

[root@server4 ~]# yum install -y salt-master
[root@server4 ~]# systemctl enable --now salt-master

编辑配置文件,开启顶级master的选项

[root@server4 ~]# vim /etc/salt/master
order_masters: True
[root@server4 ~]# systemctl restart salt-master

在下级的master里需要安装salt-syndic

[root@server1 ~]# yum install -y salt-syndic

修改配置,在syndic_master指向top master

[root@server1 ~]# vim /etc/salt/master
syndic_master: 172.25.254.4

[root@server1 ~]# systemctl restart salt-master.service 	#重启master服务
[root@server1 ~]# systemctl start salt-syndic.service 	#开启syndic

server1上的salt-syndic启动后就会去主动向top master发送请求,需要在server4上允许它的连接

[root@server4 ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
server1
Rejected Keys:
[root@server4 ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
server1
Proceed? [n/Y] y
Key for minion server1 accepted.
测试

当在top master上去发送执行命令,还是去下发给下级的master后,下级master让它下面的minion去执行命令

[root@server4 ~]# salt '*' test.ping
server2:
    True
server3:
    True

salt-api

SaltStack 官方提供有REST API格式的 salt-api 项目,使用 CherryPy 来实现 restful 的 api,将使Salt与第三方系统集成变得尤为简单。
官方提供了三种api模块:
rest_cherrypy
rest_tornado
rest_wsgi

在master节点或top master上安装salt-api

[root@server1 ~]# yum install -y salt-api	#会自动安装python-cherrypy依赖性

然后需要生成CA证书

[root@server1 ~]# cd /etc/pki/tls/private/	#在此目录下生成私钥
[root@server1 private]# openssl genrsa 2048 > localhost.key	#生成一个2048位的加密钥
[root@server1 private]# cd /etc/pki/tls/certs/
[root@server1 certs]# make testcert	#创建证书

创建认证用户和认证文件

[root@server1 certs]# useradd -s /sbin/nologin saltapi
[root@server1 certs]# echo saltapi | passwd --stdin saltapi
[root@server1 certs]# vim /etc/salt/master.d/aush.conf
external_auth:
  pam:
    saltapi:
      - .*	#这里写的是允许的权限,“.*”表示所有
      - '@wheel'
      - '@runner'
      - '@jobs'

还需配置证书,还是在master.d 目录下,创建的文件名字随意,必须后缀是.conf

[root@server1 certs]# vim /etc/salt/master.d/api.conf
rest_cherrypy:
  port: 8000			#监听端口
  ssl_crt: /etc/pki/tls/certs/localhost.crt	#指定刚才生的证书路径
  ssl_key: /etc/pki/tls/private/localhost.key	#指定刚才生成的key路径

[root@server1 certs]# systemctl restart salt-master.service 	#重启master服务
[root@server1 certs]# systemctl start salt-api	#启动api

开启后就会开启8000端口,用来作为远程访问端口
测试获取认证token:

[root@server1 certs]# curl -sSk https://172.25.254.1:8000/login \	#指定端口登陆
> -H 'Accept: application/x-yaml' \
> -d username=saltapi \	#指定登陆用户
> -d password=saltapi \	#密码
> -d eauth=pam	#指定认证方式,上面编写认证文件是指定的
return:	#执行成功后的返回值
- eauth: pam
  expire: 1591757830.849775
  perms:
  - .*
  - '@wheel'
  - '@runner'
  - '@jobs'
  start: 1591714630.849774
  token: 15e36adb5b4e0c41f7f511aeee749074ef814e1a
  user: saltapi

获取到token后就可以使用它直接去连接api执行推送任务

[root@server1 certs]# curl -sSk https://172.25.254.1:8000 \
> -H 'Accept: application/x-yaml' \
> -H 'X-Auth-Token: 	15e36adb5b4e0c41f7f511aeee749074ef814e1a' \	#使用上面获取到的token值
> -d client=local \	#指定客户端是本机
> -d tgt='*' \	#指定操作对象
> -d fun=test.ping	#操作命令
return:	#获取到的值
- server2: true
  server3: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Howei__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值