SaltStack - 透過SSH使用Salt



Salt透過使用salt-minion在遠端系統中執行命令。這是正常行為。在某些情況下,只能透過SSH協議訪問遠端系統。對於這些場景,Salt提供了一個選項,僅使用SSH協議連線遠端系統,並透過SSH層執行命令。

Salt SSH非常易於配置。唯一需要的配置是在一個名為角色檔案的特殊檔案中指定遠端系統詳細資訊。此角色檔案通常位於/etc/salt/roster中。角色檔案將包含有關遠端系統以及如何連線到它的所有資訊。配置角色檔案後,所有Salt命令都將使用salt-ssh而不是salt命令執行。

角色檔案

角色系統專為Salt SSH設計。它被設計為一個可插拔系統。角色系統的唯一目的是收集有關遠端系統的資訊。角色檔案是一個基於YAML的配置檔案,其中包含遠端系統資訊作為目標。這些目標是具有預定義屬性集的特殊資料結構。角色檔案包含一個或多個目標,每個目標都由Salt ID標識。

角色檔案的基本結構如下:

<Salt ID>:
   host: <host name>
   user: <user name>
   passwd: <password of the user>

角色檔案支援的所有其他屬性都是可選的。它們如下:

  • port - SSH埠號。

  • sudo - 是否透過sudo執行命令。

  • sudo_user - sudo使用者名稱。

  • tty - 如果啟用sudo則為true。

  • priv - 私鑰。

  • timeout - SSH連線的超時時間。

  • minion_opts - minion選項的字典。

  • thin_dir - 目標系統上Salt元件的儲存目錄。

  • cmd_umask - 強制用於salt-call命令的umask。

示例角色檔案如下:

web:
   host: 192.168.2.1
   user: webuser
   passwd: secret
   sudo: True   
db:
   host: 192.168.2.2

部署SSH金鑰

Salt SSH將為SSH登入生成預設的公鑰/私鑰對。預設路徑為/etc/salt/pki/master/ssh/salt-ssh.rsa。可以使用ssh-copy-id命令將此金鑰部署到遠端系統,如下所示。

ssh-copy-id -i /etc/salt/pki/master/ssh/salt-ssh.rsa.pub user@web.company.com

執行命令

執行salt命令就像將salt cli命令更改為salt-ssh一樣簡單,如下所示。

salt-ssh '*' test.ping

原始Shell命令

Salt SSH提供了一個選項(-r)來在遠端系統中執行原始命令,繞過salt模組和函式。

salt-ssh '*' -r 'ls'

使用Salt SSH進行目標定位

Salt SSH中的遠端系統目標定位僅支援glob和正則表示式目標。由於Salt SSH是一個單獨的模組,因此目前它只提供有限的選項,並且將在不久的將來提供更多功能。

廣告

© . All rights reserved.