目 录CONTENT

文章目录

Saltstack-ssh

ZiChen D
2021-11-28 / 0 评论 / 0 点赞 / 359 阅读 / 6,809 字 / 正在检测是否收录...

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

连通

0

评论区