1. 程式人生 > 實用技巧 >自動化運維工具SaltStack之salt-ssh(6)

自動化運維工具SaltStack之salt-ssh(6)

目錄

1. salt-ssh介紹


salt-ssh可以讓我們不需要在受控機上安裝salt-minion客戶端也能夠實現管理操作。

1.1 salt-ssh的特點

  • 遠端系統需要Python支援,除非使用-r選項傳送原始ssh命令
  • salt-ssh是一個軟體包,需安裝之後才能使用,命令本身也是salt-ssh
  • salt-ssh不會取代標準的Salt通訊系統,它只是提供了一個基於SSH的替代方案,不需要ZeroMQ和agent

請注意,由於所有與Salt SSH的通訊都是通過SSH執行的,因此它比使用ZeroMQ的標準Salt慢得多

1.2 salt-ssh遠端管理的方式

salt-ssh有兩種方式實現遠端管理,一種是在配置檔案中記錄所有客戶端的資訊,諸如 IP 地址、埠號、使用者名稱、密碼以及是否支援sudo等;另一種是使用金鑰實現遠端管理,不需要輸入密碼。

2. salt-ssh管理


在 master 上安裝 salt-ssh

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

2.1 通過使用使用者名稱密碼的SSH實現遠端管理

修改配置檔案,新增受控機資訊

[root@node01 ~]# vim /etc/salt/roster
............
vm1:
  host: 192.168.159.161
  user: root
  passwd: 123456

測試連通性

[root@node01 ~]# salt-ssh 'node02*' test.ping
vm1:
    ----------
    retcode:
        254
    stderr:
    stdout:
        The host key needs to be accepted, to auto accept run salt-ssh with the -i flag:
        The authenticity of host '192.168.159.161 (192.168.159.161)' can't be established.
        ECDSA key fingerprint is SHA256:Nz8CAwwL3HRh/Lvqejqa+eiV3A09xGYYfG2A/W8wRPs.
        ECDSA key fingerprint is MD5:8c:b3:22:14:7a:8a:bc:34:f9:9d:3c:3a:07:8a:96:20.
        Are you sure you want to continue connecting (yes/no)?

從上面的資訊可以看出,第一次訪問時需要輸入 yes/no ,但是 saltstack 是不支援互動式操作的,所以為了解決這個問題,我們需要對其進行設定,讓系統不進行主機驗證。

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

[root@node01 ~]# salt-ssh 'node02*' test.ping
vm1:
    True

2.2 通過salt-ssh初始化系統安裝salt-minion

安裝 salt-ssh和新增受控主機請參考上面寫的

[root@node01 ~]# salt-ssh 'noed02*' test.ping
vm1:
    True

執行狀態命令,初始化系統,安裝salt-minion

[root@node01 ~]# mkdir -p /srv/salt/base/{repo,files}
[root@node01 ~]# \cp /etc/yum.repos.d/salt-latest.repo /srv/salt/base/repo/salt-latest.repo
[root@node01 ~]# cp /etc/salt/minion /srv/salt/base/files/

[root@node01 ~]# vim /srv/salt/base/repo.sls
[root@node01 ~]# cat /srv/salt/base/repo.sls
salt-repo:
  file.managed:
    - name: /etc/yum.repos.d/salt-latest.repo
    - source: salt://repo/salt-latest.repo
    - user: root
    - group: root
    - mode: 644

[root@node01 ~]# vim /srv/salt/base/minion.sls
[root@node01 ~]# cat /srv/salt/base/minion.sls
salt-minion-install:
  pkg.installed:
    - name: salt-minion

salt-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: salt-minion-install

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

[root@node01 ~]# salt-ssh '*' state.sls repo
[root@node01 ~]# salt-ssh '*' state.sls minion
[root@node01 ~]# salt-ssh '*' cmd.run 'systemctl restart salt-minion'
[root@node01 ~]# salt-key -a 192.168.159.161
The following keys are going to be accepted:
Unaccepted Keys:
192.168.159.161
Proceed? [n/Y] Y
Key for minion 192.168.159.161 accepted.
[root@node01 ~]# salt-ssh 'node02*' state.sls minion