企业自动化运维工具Saltstack-(6) Saltstack中的salt-ssh部署,salt-syndic部署,salt-api 配置

一.salt-ssh部署

1.salt-ssh简介

salt-ssh可以独立运行的,不需要minion端。

salt-ssh 用的是sshpass进行密码交互的。

以串行模式工作,性能下降,即类似与ansible的模式。

2.部署salt-ssh

实验前关闭一个minion端:

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

安装salt-ssh:

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

配置roster文件,默认的本地路径是 /etc/salt/roster:

[root@server1 ~]# vim /etc/salt/roster
[root@server1 ~]# cat /etc/salt/roster
server3:
  host: 172.25.63.3
  user: root
  passwd: redhat

这样就配置完成了,接下来进行测试:

[root@server1 ~]# salt-ssh server3 test.ping
server3:
    True

可以看出部署成功,但是速度很明显变慢了。

注意当第一次访问的时候可能会由yes或no的选项:
在这里插入图片描述
可以加-i选项直接忽略:

[root@server1 ~]# salt-ssh server3 test.ping -i
server3:
    True

也可以配置ssh忽略主机key的检测:

[root@server1 ~]# vim .ssh/config
[root@server1 ~]# cat .ssh/config
StrictHostKeyChecking no

测试其他命令:

[root@server1 ~]# salt-ssh server3 cmd.run df
server3:
    Filesystem            1K-blocks    Used Available Use% Mounted on
    /dev/mapper/rhel-root  17811456 1419016  16392440   8% /
    devtmpfs                 495428       0    495428   0% /dev
    tmpfs                    507512       0    507512   0% /dev/shm
    tmpfs                    507512    6896    500616   2% /run
    tmpfs                    507512       0    507512   0% /sys/fs/cgroup
    /dev/sda1               1038336  135208    903128  14% /boot
    tmpfs                    101504       0    101504   0% /run/user/0

可以看出部署成功。

实验结束后打开minion端:

[root@server3 ~]# systemctl start salt-minion

 二、salt-syndic的部署

如果大家知道zabbix proxy的话那就很容易理解了,syndic其实就是个代理,隔离master与minion。

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

Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。

topmaster并不知道有多少个minion。

syndic与topmaster的file_roots和pillar_roots的目录要保持一致。
在这里插入图片描述

salt-syndic配置

主机作用

主机ip作用
server4172.25.63.4topmaster
server1172.25.63.1salt-master(即syndic节点)
server2172.25.63.2salt-minion
server3172.25.63.3salt-minion

且各主机selinux与防火墙均关闭。

topmaster端

在server4安装salt-master:

[root@server4 yum.repos.d]# yum install salt-master -y

[root@server4 ~]# cd /etc/salt/
[root@server4 salt]# vim master
[root@server4 salt]# cat -n master | grep 1047
  1047	order_masters: True			##作为顶级master

在这里插入图片描述
启动服务:

[root@server4 salt]# systemctl enable --now salt-master.service 

syndic节点端

安装salt-syndic:

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

编辑配置文件将其指定为syndic节点:

[root@server1 ~]# vim /etc/salt/master
[root@server1 ~]# cat -n /etc/salt/master | grep 1051
  1051	syndic_master: 172.25.63.4				##指向topmaster

在这里插入图片描述重启master端并启动syndic:

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

接着就可以在topmaster端查看下级master的连接授权:

[root@server4 salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
server1
Rejected Keys:

可以看到server1等待授权,接受server1:

[root@server4 salt]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
server1
Proceed? [n/Y] Y
Key for minion server1 accepted.

现在salt-syndic集群部署成功。

测试

在topmaster执行:

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

可以看出topmaster可以访问到minion端。

三.salt-api的部署

1.salt-api简介

SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单。

官方提供了三种api模块:

  • rest_cherrypy
  • rest_tornado
  • rest_wsgi

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

2.salt-api配置及使用

安装salt-api:

[root@server1 ~]# yum install salt-api -y
  • 1

生成证书:

[root@server1 ~]# cd /etc/pki/tls/private
[root@server1 private]# openssl genrsa 2048 > localhost.key
Generating RSA private key, 2048 bit long modulus
.................+++
...............+++
e is 65537 (0x10001)

[root@server1 private]# cd /etc/pki/tls/certs
[root@server1 certs]# make testcert		//根据提示填写相关信息即可

这时我们生成了证书(localhost.crt)和key(localhost.key)。

创建用户认证文件:

[root@server1 certs]# cd /etc/salt/master.d/
[root@server1 master.d]# vim tls.conf
[root@server1 master.d]# cat tls.conf 
rest_cherrypy:
  port: 8000
  ssl_crt: /etc/pki/tls/certs/localhost.crt
  ssl_key: /etc/pki/tls/private/localhost.key

创建用户授权文件:

[root@server1 master.d]# vim auth.conf
[root@server1 master.d]# cat auth.conf 
external_auth:
  pam:							#热插拔模式
    saltapi:					#用户
      - .*
      - '@wheel'
      - '@runner'
      - '@jobs'

创建用户并配置密码:

[root@server1 master.d]# useradd -s /sbin/nologin saltapi
[root@server1 master.d]# passwd saltapi

重启master服务并启动salt-api服务:

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

启动后8000端口以开启:

[root@server1 master.d]# netstat -antlup | grep 8000
\tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      21157/salt-api      
tcp        0      0 127.0.0.1:53016         127.0.0.1:8000          TIME_WAIT   -    

获取认证token:

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

return:
- eauth: pam
  expire: 1589864868.838355
  perms:
  - .*
  - '@wheel'
  - '@runner'
  - '@jobs'
  start: 1589821668.838354
  token: 738aea2609580fdf80011eaa0794657016a29a4b
  user: saltapi

在返回的信息中包含我们需要的token。

测试推送任务:

[root@server1 master.d]# curl -sSk https://localhost:8000  \
>     -H 'Accept: application/x-yaml' \
>     -H 'X-Auth-Token: 738aea2609580fdf80011eaa0794657016a29a4b'\
>     -d client=local \
>     -d tgt='*' \
>     -d fun=test.ping
return:
- server2: true
  server3: true

命令中token为上各命令的返回值,从返回值可以看出salt-api配置成功。

测试其他命令:

[root@server1 master.d]# curl -sSk https://localhost:8000      -H 'Accept: application/x-yaml'     -H 'X-Auth-Token: 738aea2609580fdf80011eaa0794657016a29a4b'    -d client=local     -d tgt='*'     -d fun=cmd.run -d arg=hostname
return:
- server2: server2
  server3: server3

也可以调用state模块:

[root@server1 master.d]# curl -sSk https://localhost:8000      -H 'Accept: application/x-yaml'     -H 'X-Auth-Token: 738aea2609580fdf80011eaa0794657016a29a4b'    -d client=local     -d tgt='*'     -d fun=state.sls -d arg=keepalived

也可以基于这个api开发自动化运维系统(github上有现成的项目,搜索oms)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值