SaltStack之salt-ssh

本文介绍了SaltStack的salt-ssh模块,它允许通过SSH管理远程系统而无需安装salt-minion。salt-ssh有两种远程管理方式:配置文件记录客户端信息或使用密钥管理。文章还详细展示了如何使用salt-ssh安装salt-minion。

SaltStack之salt-ssh

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

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

通过使用用户名密码的SSH实现远程管理

修改配置文件,添加受控机信息

    [root@master ~]# vim /etc/salt/roster
    minion2:
      host: 192.168.31.139
      user: root
      passwd: 1

第一次访问时需要输入 yes/no ,但是 saltstack 是不支持交互式操作的,所以为了解决这个问题,我们需要对其进行设置,让系统不进行主机验证。

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

测试连通性

[root@master ~]# salt-ssh '*' -r 'dnf -y install python3'
minion:
    ----------
    retcode:
        0
    stderr:
    stdout:
        
        root@192.168.31.139's password: 
        上次元数据过期检查:10:14:41 前,执行于 2021年07月08日 星期四 01时26分23秒。
        软件包 python36-3.6.8-37.module_el8.5.0+771+e5d9a225.x86_64 已安装。
        依赖关系解决。
        无需任何处理。
        完毕!
[root@master ~]# salt-ssh '*' test.ping
minion:
    True

通过salt-ssh初始化系统安装salt-minion

执行状态命令,初始化系统,安装salt-minion

[root@master ~]# mkdir -p /srv/salt/base/{repo,files}
[root@master ~]# cp /etc/yum.repos.d/salt.repo /srv/salt/base/repo/salt.repo
[root@master ~]# cp /etc/salt/minion /srv/salt/base/files/
[root@master ~]# vim /srv/salt/base/repo.sls
salt_repo:
  file.managed:
    - name: /etc/yum.repos.d/salt.repo
    - source: salt://repo/salt.repo
    - user: root
    - group: root
    - mode: 0644
[root@master ~]# vim /srv/salt/base/minion.sls
minion_install:
  pkg.installed:
    - name: salt-minion

minion_conf:
  file.managed:
    - name: /etc/salt/minion
    - source: salt://files/minion
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - default:
      ID: {{ grains['ipv4'] [1] }}
    - require:
      - pkg: minion_install

minion_service:
  service.running:
    - name: salt-minion
    - enable: True
    - start: True
    - watch:
       - file: /etc/salt/minion

[root@master ~]# salt-ssh '*' state.sls repo
minion:
----------
          ID: salt_repo
    Function: file.managed
        Name: /etc/yum.repos.d/salt.repo
      Result: True
     Comment: File /etc/yum.repos.d/salt.repo updated
     Started: 11:59:25.619836
    Duration: 61.575 ms
     Changes:   
              ----------
              diff:
                  New file
              mode:
                  0644

Summary for minion
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1
Total run time:  61.575 ms

[root@master ~]# salt-ssh '*' state.sls minion
[root@master ~]# salt-ssh '*' state.sls minion
minion:
----------
          ID: minion_install
    Function: pkg.installed
        Name: salt-minion
      Result: True
     Comment: All specified packages are already installed
     Started: 12:05:05.635926
    Duration: 726.307 ms
     Changes:   
----------
          ID: minion_conf
    Function: file.managed
        Name: /etc/salt/minion
      Result: True
     Comment: File /etc/salt/minion updated
     Started: 12:05:06.365148
    Duration: 63.193 ms
     Changes:   
              ----------
              diff:
                  --- 
                  +++ 
                  @@ -920,13 +920,7 @@
                   # Default Minion returners. Can be a comma delimited string or a list:
                   #
                   #return: mysql
                  -
                  -mysql.host: '192.168.31.139'
                  -mysql.user: 'salt'
                  -mysql.pass: 'salt'
                  -mysql.db: 'salt'
                  -mysql.port: 3306
                  -
                  +#
                   #return: mysql,slack,redis
                   #
                   #return:
              mode:
                  0644
----------
          ID: minion_service
    Function: service.running
        Name: salt-minion
      Result: True
     Comment: Service restarted
     Started: 12:05:06.489736
    Duration: 809.391 ms
     Changes:   
              ----------
              salt-minion:
                  True

Summary for minion
------------
Succeeded: 3 (changed=2)
Failed:    0
------------
Total states run:     3
Total run time:   1.599 s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值