📜  SaltStack-通过SSH传输盐

📅  最后修改于: 2020-10-31 14:26:44             🧑  作者: Mango


Salt通过使用salt-minion在远程系统中执行命令。这是正常现象。在某些情况下,只能通过SSH协议访问远程系统。对于这些情况,Salt提供了仅使用SSH协议连接远程系统并通过SSH层执行命令的选项。

Salt SSH非常易于配置。唯一需要的配置是在称为Roster文件的特殊文件中指定远程系统详细信息。该花名册文件通常位于/ etc / salt / roster中。名册文件将包含有关远程系统以及我们如何连接到它的所有信息。一旦配置了名单文件,所有的Salt命令将使用salt-ssh而不是salt命令执行。

名册文件

名册系统是专门为Salt SSH设计的。这被设计为可插拔系统。名册系统的唯一目的是收集有关远程系统的信息。名单文件是基于YAML的配置文件,其中包含远程系统信息作为目标。这些目标是具有预定义属性集的特殊数据结构。名册文件包含一个或多个目标,并且每个目标都由Salt ID标识

名单文件的基本结构如下-

:
   host: 
   user: 
   passwd: 

名单文件支持的所有其他属性是可选的。它们如下-

  • port -SSH端口号。

  • sudo-是否通过sudo运行命令。

  • sudo_user -sudo用户名。

  • tty-如果启用了sudo,则为true。

  • priv-私钥。

  • 超时-SSH连接超时。

  • minion_optsminion opts的字典。

  • thin_dir-目标系统的盐成分存储目录。

  • cmd_umask -umask强制执行salt-call命令。

样本名册文件如下-

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和regex目标。由于Salt SSH是一个单独的模块,因此到目前为止,它仅提供有限的选项,并且在不久的将来将提供更多功能。