saltstack的安装

saltstack是一个批量远程管理工具,可以批量对多台服务器进行远程命令
通过部署SaltStack,我们可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等

Salt的核心功能:

  • 使对远程系统的命令被并行而不是串行调用
  • 使用安全且加密的协议
  • 使用尽可能最小和最快的网络负载
  • 提供一个简单的编程界面

Salt还向远程执行领域引入了更精细的控件,使系统不仅可以通过主机名来定位,还可以通过系统属性来定位

主要的组件其实就两个
master和minion
![](https://img-blog.csdnimg.cn/img_convert/d65a632510e0f96184247c004ab5d36d.png#clientId=u82058698-4d83-4&from=paste&height=324&id=u3dd13b58&margin=[object Object]&originHeight=324&originWidth=864&originalType=url&ratio=1&status=done&style=none&taskId=u1adc5efe-59a9-4517-9f7b-280cb21f720&width=864)
主节点上安装salt-master
从节点上安装salt-minion,并且向master进行认证

主机向客户端发布命令,然后客户端执行命令。在Salt生态系统中,Salt Master是运行salt-master服务的服务器。它向一个或多个Salt Minions发出命令,Salt Minions是运行该salt-minion服务并已在该特定Salt Master中注册的服务器

前提准备

准备三台服务器,设置静态ip,可以联网,关闭防火墙

服务器主机名ip身份软件包
centos7salt-master172.16.20.60mastersalt-master
centos7web1172.16.20.61minionsalt-minion
centos7web2172.16.20.62minionsalt-minion

安装saltstack

1.安装saltstack存储库和密钥

三台服务器上都执行

[root@salt-master ~]# rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/3003/SALTSTACK-GPG-KEY.pub
[root@salt-master ~]# curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/3003.repo | sudo tee /etc/yum.repos.d/salt.repo
[salt-3003-repo]
name=Salt repo for RHEL/CentOS 7 PY3
baseurl=https://repo.saltproject.io/py3/redhat/7/x86_64/3003
skip_if_unavailable=True
failovermethod=priority
enabled=1
enabled_metadata=1
gpgcheck=1
gpgkey=https://repo.saltproject.io/py3/redhat/7/x86_64/3003/SALTSTACK-GPG-KEY.pub, https://repo.saltproject.io/py3/redhat/7/x86_64/3003/base/RPM-GPG-KEY-CentOS-7

2.清空yum缓存并生成缓存

三台服务器都执行

yum clean all
yum makecache 

3.安装salt-master

master那台主机安装salt-master

[root@salt-master ~]# yum -y install salt-master

4.安装salt-minion

两台web上安装

[root@web1 ~]# yum -y install salt-minion
[root@web2 ~]# yum -y install salt-minion

配置saltstack

安装好了,需要对saltstack的配置文件进行配置
salt-master的配置文件是/etc/salt/master
salt-minion的配置文件是/etc/salt/minion

1.salt-master配置

[root@salt-master ~]# grep -v ^# /etc/salt/master|grep -v ^$
interface: 0.0.0.0  #绑定到本地的0.0.0.0地址
publish_port: 4505  #管理端口,命令发送
user: root      #运行salt进程的用户
worker_threads: 2  #salt运行线程数,线程越多处理速度越快,不要超过cpu个数
ret_port: 4506  #执行结果返回端口
pidfile: /var/run/salt-master.pid #pid文件位置
log_file: /var/log/salt/master  #日志文件地址

#自动接收minion的key
auto_accept: False

2.salt-minion配置

[root@web1 ~]#  grep -v ^# /etc/salt/minion|grep -v ^$
master: 172.16.20.62  #master主机位置
master_port: 4506
user: root
id: web1              #定义的名字
log_file: /var/log/salt/minion

[root@web2 ~]# grep -v ^# /etc/salt/minion|grep -v ^$
master: 172.16.20.62
master_port: 4506
user: root
id: web2
log_file: /var/log/salt/minion

启动saltstack

在master上启动

查看端口4505和4506都打开,服务正常

[root@salt-master ~]# systemctl start salt-master
[root@salt-master ~]# systemctl status salt-master
● salt-master.service - The Salt Master Server
   Loaded: loaded (/usr/lib/systemd/system/salt-master.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-04-27 18:18:08 EDT; 5s ago
     Docs: man:salt-master(1)
           file:///usr/share/doc/salt/html/contents.html
           https://docs.saltstack.com/en/latest/contents.html
 Main PID: 2347 (salt-master)
   CGroup: /system.slice/salt-master.service
           ├─2347 /usr/bin/python3 /usr/bin/salt-master
           ├─2353 /usr/bin/python3 /usr/bin/salt-master
           ├─2357 /usr/bin/python3 /usr/bin/salt-master
           ├─2358 /usr/bin/python3 /usr/bin/salt-master
           ├─2361 /usr/bin/python3 /usr/bin/salt-master
           ├─2362 /usr/bin/python3 /usr/bin/salt-master
           ├─2363 /usr/bin/python3 /usr/bin/salt-master
           ├─2370 /usr/bin/python3 /usr/bin/salt-master
           ├─2371 /usr/bin/python3 /usr/bin/salt-master
           ├─2372 /usr/bin/python3 /usr/bin/salt-master
           ├─2373 /usr/bin/python3 /usr/bin/salt-master
           ├─2374 /usr/bin/python3 /usr/bin/salt-master
           └─2377 /usr/bin/python3 /usr/bin/salt-master

Apr 27 18:18:07 salt-master systemd[1]: Starting The Salt Master Server...
Apr 27 18:18:08 salt-master systemd[1]: Started The Salt Master Server.
[root@salt-master ~]# ss -antp |grep LISTEN |grep salt
LISTEN     0      128          *:4505                     *:*                   users:(("salt-master",pid=2357,fd=18))
LISTEN     0      128          *:4506                     *:*                   users:(("salt-master",pid=2363,fd=31))

在minion上启动

2台上面minion都要启动,minion没有监听端口,不用查看端口状态

[root@web1 ~]# systemctl start salt-minion
[root@web1 ~]# systemctl status salt-minion
● salt-minion.service - The Salt Minion
   Loaded: loaded (/usr/lib/systemd/system/salt-minion.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-04-29 02:08:52 CST; 1s ago
     Docs: man:salt-minion(1)
           file:///usr/share/doc/salt/html/contents.html
           https://docs.saltstack.com/en/latest/contents.html
 Main PID: 9562 (salt-minion)
   CGroup: /system.slice/salt-minion.service
           ├─9562 /usr/bin/python3 /usr/bin/salt-minion
           ├─9567 /usr/bin/python3 /usr/bin/salt-minion
           └─9569 /usr/bin/python3 /usr/bin/salt-minion

Apr 29 02:08:52 web1 systemd[1]: Starting The Salt Minion...
Apr 29 02:08:52 web1 systemd[1]: Started The Salt Minion.

在master上接收minion密钥

在minion启动后连接master会请求master为其签发证书,等待证书签发完成后,master可以信任minion,并且minion和master之间的通信是加密的

1.在master上使用salt-key查看密钥状态

可以看到在master上面已经出现两个minion的密钥,说明master和minion已经连接,并且master已经获取到了minion的密钥,等待加入

[root@salt-master ~]# salt-key -L
Accepted Keys:  #已经接受的key
Denied Keys:    #拒绝的key
Unaccepted Keys:#未加入的key
web1
web2
Rejected Keys:#吊销的key

2.检查master和minion的秘钥匹配

在master上执行

[root@salt-master ~]# salt-key -f web*
Unaccepted Keys:
web1:  3f:1f:12:a7:c1:c5:6f:be:28:47:7f:b1:03:56:24:cb:e6:04:66:40:fc:53:88:cc:de:bc:63:23:d8:74:42:df
web2:  f0:2f:fa:df:ef:3b:92:71:ae:a1:a1:22:4f:29:93:a5:fd:2d:8f:72:8b:3f:f1:ec:d5:82:57:39:e4:74:35:45

在两个minion上面执行

[root@web1 ~]# salt-call --local key.finger
local:
    3f:1f:12:a7:c1:c5:6f:be:28:47:7f:b1:03:56:24:cb:e6:04:66:40:fc:53:88:cc:de:bc:63:23:d8:74:42:df
[root@web2 ~]# salt-call --local key.finger
local:
    f0:2f:fa:df:ef:3b:92:71:ae:a1:a1:22:4f:29:93:a5:fd:2d:8f:72:8b:3f:f1:ec:d5:82:57:39:e4:74:35:45

确认两密钥匹配

3.在master上接收密钥

[root@salt-master ~]# salt-key -a web*
The following keys are going to be accepted:
Unaccepted Keys:
web1
web2
Proceed? [n/Y] y
Key for minion web1 accepted.
Key for minion web2 accepted.

4.再次查看密钥状态

已认证成功

[root@salt-master ~]# salt-key -L
Accepted Keys:
web1
web2
Denied Keys:
Unaccepted Keys:
Rejected Keys:

ps:如果觉得接收密钥太麻烦,并且minion主机可信,那么可以直接在master配置文件中设置这个参数为keyauto_accept: True就可以了
minion的密钥在master中会自动被认证成功

执行第一条命令

[root@salt-master ~]# salt '*' test.ping
web1:
    True
web2:
    True
    
# salt 是命令 
# * 表示目标主机, 在这里代表所有目标主机 
# test.ping是salt远程执行的一个模块下面的方法

探测minion主机存活命令,也是远程执行命令,我们通过master发送消息给"*"所有的minion,并且告诉他们运行salt内置的命令(也是python模块中的一个函数),返回true表示slave机器监控存活

以上saltstack就安装成功了,并且可以远程执行命令了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhaixing_0307

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

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

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

打赏作者

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

抵扣说明:

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

余额充值