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 [email protected]

执行命令

执行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是一个单独的模块,因此目前它只提供有限的选项,并且将在不久的将来提供更多功能。

广告