SaltStack SSH
Salt 使用
salt-minion 在远程系统中执行命令。这是正常行为。在某些情况下,远程系统只能通过 SSH 协议访问。对于这些场景,Salt 提供了仅使用 SSH 协议连接远程系统并通过 SSH 层执行命令的选项。
Salt SSH 很容易配置。唯一需要的配置是在名为
Roster 文件 的特殊文件中指定远程系统详细信息。该名册文件通常位于
/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,则为真。
priv-私钥。
timeout-SSH 连接超时。
minion_opts-minion opts 字典。
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 一样简单,如下所示。
原始 Shell 命令
Salt SSH 提供了一个选项 (-r) 来绕过 salt 模块和函数在远程系统中执行原始命令。
使用 Salt SSH 定位
以 Salt SSH 中的远程系统为目标,仅支持 glob 和 regex 目标。由于 Salt SSH 是一个单独的模块,因此它目前仅提供有限的选项,并将在不久的将来提供更多功能。