自動化運維工具SaltStack之salt-ssh(6)
阿新 • • 發佈:2020-08-23
目錄
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