salt-ssh介绍
salt-ssh可以让我们不需要在受控机上安装salt-minion客户端也能够实现管理操作。
salt-ssh的特点
- 远程系统需要Python支持,除非使用-r选项发送原始ssh命令
- salt-ssh是一个软件包,需安装之后才能使用,命令本身也是salt-ssh
- salt-ssh不会取代标准的Salt通信系统,它只是提供了一个基于SSH的替代方案,不需要ZeroMQ和agent
请注意,由于所有与Salt SSH的通信都是通过SSH执行的,因此它比使用ZeroMQ的标准Salt慢得多
salt-ssh远程管理的方式
salt-ssh有两种方式实现远程管理,一种是在配置文件中记录所有客户端的信息,诸如 IP 地址、端口号、用户名、密码以及是否支持sudo等;另一种是使用密钥实现远程管理,不需要输入密码。
salt-ssh管理
在 master 上安装 salt-ssh
安装salt-ssh之前,请优先安装salt-master
详情请查阅SaltStack安装文档
[root@master ~]# sudo yum install salt-ssh
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
上次元数据过期检查:1 day, 8:07:11 前,执行于 2021年11月28日 星期日 01时10分05秒。
依赖关系解决。
============================================================================================================================================
软件包 架构 版本 仓库 大小
============================================================================================================================================
安装:
salt-ssh noarch 3004-1.el8 salt-latest-repo 25 k
事务概要
============================================================================================================================================
安装 1 软件包
总下载:25 k
安装大小:4.1 k
确定吗?[y/N]: y
下载软件包:
salt-ssh-3004-1.el8.noarch.rpm 4.3 kB/s | 25 kB 00:05
--------------------------------------------------------------------------------------------------------------------------------------------
总计 4.3 kB/s | 25 kB 00:05
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : salt-ssh-3004-1.el8.noarch 1/1
运行脚本: salt-ssh-3004-1.el8.noarch 1/1
验证 : salt-ssh-3004-1.el8.noarch 1/1
Installed products updated.
已安装:
salt-ssh-3004-1.el8.noarch
完毕!
通过使用用户名密码的SSH实现远程管理
修改配置文件,添加受控机信息
[root@master salt]# pwd
/etc/salt
[root@master salt]# cat roster
# Sample salt-ssh config file
#web1:
# host: 192.168.42.1 # The IP addr or DNS hostname
# user: fred # Remote executions will be executed as user fred
# passwd: foobarbaz # The password to use for login, if omitted, keys are used
# sudo: True # Whether to sudo to root, not enabled by default
#web2:
# host: 192.168.42.2
node1: //此段均需添加
host: 192.168.160.101 //IP写自己需要受控主机IP
user: root //用户不建议选择root
passwd: dzc //密码为用户登录密码
测试连通性
[root@master salt]# salt-ssh 'node1' test.ping
ping了很久发现ping不通,查找错误发现是因为ssh首次连接需要输入yes/no,但SaltStack不支持,所以报错
解决办法:
[root@master salt]# vim ~/.ssh/config
[root@master salt]# cat ~/.ssh/config
StrictHostKeyChecking no
再测试连通性:
[root@master salt]# salt-ssh 'node1' test.ping
node1:
True
这次ping通了
通过salt-ssh初始化系统安装salt-minion
安装 salt-ssh
[root@master ~]# yum install salt-ssh
修改roster配置文件,添加受控主机
[root@master salt]# cat roster
# Sample salt-ssh config file
#web1:
# host: 192.168.42.1 # The IP addr or DNS hostname
# user: fred # Remote executions will be executed as user fred
# passwd: foobarbaz # The password to use for login, if omitted, keys are used
# sudo: True # Whether to sudo to root, not enabled by default
#web2:
# host: 192.168.42.2
node3:
host: 192.168.160.104
user: root
passwd: dzc
执行状态命令,初始化系统,安装salt-minion
使用之前写好的初始化状态文件
详情可翻阅我之前的文章SaltStack系统初始化
[root@master yum]# pwd
/srv/salt/base/init/yum
[root@master yum]# cat main.sls
{% if grains['os'] == 'RedHat' %}
/etc/yum.repos.d/centos-{{ grains['osrelease'] }}.repo:
file.managed:
- source: salt://init/yum/files/centos-{{ grains['osrelease'] }}.repo
- user: root
- group: root
- mode: '0644'
{% endif %}
/etc/yum.repos.d/epel-{{ grains['osrelease'] }}.repo:
file.managed:
- source: salt://init/yum/files/epel-{{ grains['osrelease'] }}.repo
- user: root
- group: root
- mode: '0644'
/etc/yum.repos.d/salt-{{ grains['osrelease'] }}.repo:
file.managed:
- source: salt://init/yum/files/salt-{{ grains['osrelease'] }}.repo
- user: root
- group: root
- mode: '0644'
[root@master yum]# cd files/
[root@master files]# ls
centos-7.repo centos-8.repo epel-7.repo epel-8.repo salt-7.repo salt-8.repo
安装salt-minion
[root@master salt-minion]# pwd
/srv/salt/base/init/salt-minion
[root@master salt-minion]# cat main.sls
include:
- init.yum.main
salt-minion:
pkg.installed
/etc/salt/minion:
file.managed:
- source: salt://init/salt-minion/files/minion.j2
- user: root
- group: root
- mode: '0644'
- template: jinja
- require:
- pkg: salt-minion
salt-minion.service:
service.running:
- enable: true
- reload: true
- watch:
- file: /etc/salt/minion
在模板文件里将master IP地址设置为变量
[root@master files]# pwd
/srv/salt/base/init/salt-minion/files
[root@master files]# vim minion.j2
#master: salt
master: {{ pillar['salt-master-ip'] }}
在pillar下编写变量文件
[root@master base]# pwd
/srv/pillar/base
[root@master base]# vim salt-minion.sls
[root@master base]# cat salt-minion.sls
salt-master-ip: 192.168.160.100
[root@master base]# vim top.sls
[root@master base]# cat top.sls
base:
'node*':
- salt-minion
执行
[root@master base]# salt-ssh 'node3' state.sls init.salt-minion.install
最后用salt-key -L查看
[root@master base]# salt-key -L
Accepted Keys:
master
node1
node2
Denied Keys:
Unaccepted Keys:
node3
Rejected Keys:
有node3,我们用salt-key -ya node3 使它连接进来
[root@master base]# salt-key -ya node3
The following keys are going to be accepted:
Unaccepted Keys:
node3
Key for minion node3 accepted.
[root@master base]# salt-key -L
Accepted Keys:
master
node1
node2
node3
Denied Keys:
Unaccepted Keys:
Rejected Keys:
利用salt命令去ping一下测试
[root@master base]# salt node3 test.ping
node3:
True
连通
评论区