SaltStack中salt-ssh、salt-syndic与salt-api的使用

目录

一、salt-ssh

二、salt-syndic

三、salt-api


一、salt-ssh

        salt-ssh用来在一些主机上无法实现minion的安装时,我们临时采用的一种替代方式。所以salt-ssh可以独立运行的,不需要minion端,交互时使用的是sshpass进行密码交互,以串行模式工作,故性能也有些许下降。

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

##设置配置文件:/etc/salt/roster:
 10 server2:
 11   host: 192.168.1.12
 12   user: root
 13   passwd: 123456

##进行连接测试
[root@server1 salt]# salt-ssh '*' test.ping -i
[root@server1 salt]# salt-ssh '*' cmd.run hostname -i
SaltStack中salt-ssh、salt-syndic与salt-api的使用
图1 调用结果

二、salt-syndic

        作用:syndic是salt中的一个代理服务器,用于隔离master与minion。主要用于集群部署。

        特点:Syndic必须要运行在master上,再连接到另一个topmaster上。

        过程:Topmaster 下发送状态通过syndic来传递给下级master,minion传递给master的数据同样由syndic传递给topmaster。topmaster并不知道有多少个minion。但要求:syndic与topmaster的file_roots和pillar_roots的目录要保持一致。

SaltStack中salt-ssh、salt-syndic与salt-api的使用
图2 syndic结构

         服务配置:

##master端
##安装salt-syndic
[root@server1 salt]# yum install -y salt-syndic

##配置主配置文件
[root@server1 salt]# vim /etc/salt/master

##文件内容:
syndic_master: 192.168.1.14    ##指定topmaster

##重启服务

[root@server1 salt]# systemctl restart salt-master.service
[root@server1 salt]# systemctl start salt-syndic.service


##topmsater端
##安装msater
[root@server4 salt]# yum insatall -y salt-master

##编辑配置文件:
[root@server4 salt]# vim /etc/salt/master

##配置文件内容:
order_masters: true        ##开启topmaster服务

##重启master服务
[root@server4 salt]# systemctl restart salt-master.service

##内容检测
[root@server4 salt]# salt-key -L    ##查看列表
[root@server4 salt]# salt-key -A    ##设置权限
[root@server4 salt]# salt '*' test.ping    ##测试
SaltStack中salt-ssh、salt-syndic与salt-api的使用
图3 测试结果

 【说明】在上述结果中,我们可以看到,在server4(topmaster)中的列表只有li647,但是在进行信息测试时,得到的的反馈结果是server2 、server3的,该结果就证明lib64在这里类似于一个代理服务器proxy一样,最终的管依然是从topmaster发出的。

三、salt-api

        为了实现程序开发以及第三方系统集成,SaltStack 官方提供了REST API格式的 salt-api 项目,使Salt与第三方系统集成变得简单。

        利用api接口来实现SaltStack推送,管理集群是非常方便的手段。官方提供了三种api模块:
rest_cherrypy、rest_tornado、rest_wsgi。

        官方文档:https://docs.saltstack.com/en/latest/ref/netapi/all/index.html#all- netapi-modules

##Salt-API配置:

##在master端安装salt-api服务模块:
[root@server1 ~]# yum install -y salt-api

##生成密钥文件(在传输过程中需要使用ssh认证登录):
[root@server1 ~]# cd /etc/pki/tls/private/        
[root@server1 private]# openssl genrsa 2048 > locahost.key

##生成CA证书
[root@server1 ~]# cd /etc/pki/tls/certs/
[root@server1 certs]# make saltcert.crt

##证书配置
[root@server1 master.d]# cd /etc/salt/master.d/
[root@server1 master.d]# vim api.conf

##内容
rest_cherrypy:
  host: 192.168.1.11
  port: 8000
  ssl_crt: /etc/pki/tls/certs/saltcert.crt
  ssl_key: /etc/pki/tls/private/locahost.key

##添加认证文件:
[root@server1 master.d]# vim auto.conf
##文件内容:

  1 external_auth:
  2   pam:
  3     saltapi:
  4       - .*
  5       - '@wheel'
  6       - '@jobs'

##创建用户 ,指定密码
[root@server1 master.d]# useradd -s /sbin/nologin saltapi
[root@server1 master.d]# echo 123 | passwd --stdin saltapi

##重启服务,查看端口
[root@server1 master.d]# systemctl restart salt-master
[root@server1 master.d]# systemctl start salt-api
[root@server1 master.d]# netstat -anltupe | grep 8000

##登录查询:

##获取认证token:

[root@server1 master.d]# curl -sSk https://192.168.1.11:8000/login \ 
-H 'Accept: application/x-yaml' \ 
-d username=saltapi \ 
-d password=123\ 
-d eauth=pa

##任务推送:
[root@server1 master.d]# curl -sSk https://172.25.0.1:8000 \ 
-H 'Accept: application/x-yaml' \ 
-H 'X-Auth-Token: 77e2b1de04b0dbc0a4bf11900712b83e4fa2c241'\  ##• token值是上面命令获取的toekn值

-d client=local \ 
-d tgt='*' \ 
-d fun=test.ping

 

SaltStack中salt-ssh、salt-syndic与salt-api的使用
 图 4 产生密钥

 

SaltStack中salt-ssh、salt-syndic与salt-api的使用
图5 生成CA证书

 

SaltStack中salt-ssh、salt-syndic与salt-api的使用
图6 配置认证文件

 

SaltStack中salt-ssh、salt-syndic与salt-api的使用
图7 创建登录用户和密码

 

         上述实验过程中,是三个单独的模块,小编在测试时,在同一主机上测试的,为了防止实验环境的干扰,读者在进行验证时,可以先恢复’实验环境,保证环境纯正,不干扰 下一个实验,如果出错时,我们也能很好的进行排错。

上一篇:Detect-and-Track论文:中文翻译


下一篇:DEM轨迹后处理