如果将 SaltStack ConfigvRealize Automation 集成,则可以应用 SaltStack Config 资源以在部署中的虚拟机上安装工作节点。部署工作节点后,可以使用 SaltStack Config 强大的配置管理、偏差修复和状态管理功能管理资源。

工作节点是运行 salt-minion 服务的代理。该服务订阅 Salt 主节点发布的作业,Salt 主节点则是运行 salt-master 服务的服务器。当特定作业应用于工作节点时,该工作节点将执行该作业。

部署 Linux 和 Windows 计算机时,可以使用 SaltStack Config 资源部署工作节点并应用状态文件。要在现有部署上添加或更新工作节点和状态文件,可以运行附加 SaltStack 资源实施后操作。有关该实施后操作的详细信息,请参见可以对 Cloud Assembly 部署运行哪些操作

如果使用 saltConfiguration 属性作为实施前操作部署工作节点和状态文件,请考虑更新云模板以使用 SaltStack Config 资源。saltConfiguration 属性现已弃用。您仍然可以在云模板中使用 saltConfiguration 属性,但 SaltStack Config 集成功能将受到限制。

应用 Salt 配置实施后操作仍可用于使用 saltConfiguration 属性的资源。

开始前

  1. 确认您已安装 SaltStack Config 并配置了集成。请参见在 vRealize Automation 中创建 SaltStack Config 集成。

    要熟悉 SaltStack Config 的工作原理,包括工作节点的主要概念,请参见了解 SaltStack 用户界面

  2. SaltStack Config 中,确认从工作节点到主节点的 FQDN 名称解析正常运行。
    1. 要在 SaltStack Config 中验证 Salt 主节点上的 FQDN,请选择工作节点 > 所有工作节点
    2. 工作节点 ID 列中筛选出值 saltmaster
    3. 单击 saltmaster 查看详细信息。
    4. 确认 FQDN 值正确无误。
  3. 如果要在 Linux 计算机上部署工作节点,请确认 vSphere 中要部署 Salt 工作节点的映像已启用 SSH 功能。SSH 用于远程访问计算机并部署工作节点。
  4. 如果要在 Windows 计算机上部署工作节点,请参见如何在 Windows 环境中使用 API (RaaS) 部署工作节点

  5. 确认您可以为部署的计算机分配 IP 地址。

    SaltStack Config 要求计算机具有 IP 地址。使用 Salt 主节点所在 SDDC(软件定义的数据中心)的公共 IP CIDR 范围的 IP 地址。

  6. 在添加 SaltStack Config 资源属性之前,确认工作节点要添加到的云模板可部署。
  7. 确认您具有以下服务角色:
    1. Cloud Assembly 管理员
    2. Cloud Assembly 用户
    3. Service Broker 管理员

    需要使用 SaltStack Config 资源的服务角色。

将 SaltStack Config 资源添加到云模板

作为云模板开发人员,您可以将属性添加到 YAML,以便在部署模板时安装 SaltStack Config 工作节点。

添加到模板的核心属性包括要部署的计算机的远程访问属性以及 SaltStack Config 资源的配置属性。该过程仅包括选定的属性。YAML 包括此示例中未使用的其他 SaltStack Config 资源属性。有关详细信息,请查看结构定义。

尽管此示例显示了如何为远程访问属性添加用户名和密码,但您可以配置密钥属性并将其添加到模板。有关示例,请参见密钥 Cloud Assembly 属性

过程

  1. Cloud Assembly 中,选择设计 > 云模板
  2. 打开现有模板。
  3. 找到 SaltStack Config 资源并将其拖动到画布中。
  4. SaltStack Config 资源附加到将安装工作节点的计算机。
  5. 在代码窗格中,将属性添加到 Cloud_SaltStack_1 资源。

    您无需包括所有可能的属性。此示例中使用的值在表中进行了说明。

    Cloud_SaltStack_1:
        type: Cloud.SaltStack
        properties:
          masterId: saltstack_enterprise_installer
          hosts:
            - ${resource.Cloud_vSphere_Machine_1.id}
          saltEnvironment: sse
          stateFiles:
            - /doe.sls
          variables: 
            user: joe

    此示例中所用 Cloud_SaltStack_1 属性的描述。

    属性 说明
    masterId 在示例结构定义中,masterId 值为 saltstack_enterprise_installer。您可能在 SaltStack Config管理 > 主节点密钥中定义了主节点 ID。
    hosts hosts 值是要安装工作节点的计算机或计算机集群的 ID。默认情况下,计算机的名称作为 SaltStack Config 中的工作节点 ID 传入。

    建议选择不超过 15 个字符的计算机名称,尤其是在 Windows 上部署工作节点时。Windows 不允许主机名超过 15 个字符。

    如果希望为要部署的计算机定义自定义命名约定,请参见 Cloud Assembly 中已部署资源的自定义命名

    saltEnvironment 在此示例中,sse 是状态文件的文件位置。您可能在 SaltStack Config配置 > 文件服务器中将状态文件放置在其他文件服务器位置。
    stateFiles 在此示例中,doe.sls 是在指定为 saltEnvironment 的文件服务器目录中提供的状态文件。
    variables 变量是状态文件使用的值。在此示例中,doe.sls 接受 user 值。
  6. remoteAccess 属性添加到托管 Salt 工作节点的计算机。

    authentication 键的值必须为 usernamePasswordgeneratedPublicPrivateKey。不支持 publicPrivateKey

     remoteAccess:
            authentication: usernamePassword
            username: adminUser
            password: adminPassword
  7. 确认 YAML 包含类似于以下示例的属性。
    resources:
      Cloud_vSphere_Machine_1:
        type: Cloud.vSphere.Machine
        properties:
          image: ubuntu
          flavor: small
          remoteAccess:
            authentication: usernamePassword
            username: adminUser
            password: adminPassword
      Cloud_SaltStack_1:
        type: Cloud.SaltStack
        properties:
          masterId: saltstack_enterprise_installer
          hosts:
            - ${resource.Cloud_vSphere_Machine_1.id}
          saltEnvironment: sse
          stateFiles:
            - /doe.sls
          variables: 
            user: joe
  8. 测试并部署云模板。
    如果工作节点部署失败,请参见 对工作节点部署进行故障排除
  9. 验证已部署计算机的 Salt Configuration 属性。
    1. 选择部署 > 部署,然后打开部署详细信息。
    2. 拓扑选项卡上,单击计算机,然后在右侧窗格中展开属性。

      “拓扑”选项卡屏幕截图,在右侧窗格中展开了 Salt 配置属性。属性包括主节点 ID、Salt 环境和状态文件。

SaltStack Config 中验证工作节点

在虚拟机上安装工作节点后,找到工作节点并在资源上运行任何作业或命令。

过程

  1. 要打开 SaltStack Config,请单击右上角的应用程序菜单,然后单击 Cloud Services 控制台
  2. 单击 SaltStack Config 服务图标。
  3. SaltStack Config 中,展开工作节点密钥,然后单击已接受
  4. 工作节点 ID列中,单击筛选器图标,然后输入工作节点的名称。
    工作节点的名称默认为虚拟机的主机名。在此示例中,工作节点 ID 为 vra-vm-05。
    SaltStack Config 中已接受工作节点密钥的屏幕截图。
  5. 要查看详细信息,请单击工作节点的名称。
    您可以在工作节点上运行作业或命令。例如,示例磁盘使用情况。此作业返回工作节点的磁盘使用情况统计信息。
    示例工作节点 ID 详细信息页面屏幕截图

对工作节点部署进行故障排除

了解用户在使用 SaltStack Config 资源或 saltConfiguration 属性部署 Salt 工作节点时遇到的一些常见错误。

主机启动延迟

如果在部署云模板后主机上的 Windows 或 Linux 服务未就绪,Cloud Assembly 中可能会显示“工作节点部署和/或状态文件运行失败 (Minion deployment and/or state file run failed)”错误。

要解决此错误,请将主节点插件升级到最新稳定版本。升级后,可以在 /etc/salt/master.d/raas.conf 中启用一项配置设置,使 Windows 和 Linux 服务有时间在部署 Salt 工作节点之前处于活动状态。

升级到最新版本的主节点插件后,请完成以下步骤以延迟主机启动:

  1. 查看部署详细信息页面上的历史记录选项卡。
  2. 如果错误消息显示“工作节点部署和/或状态文件运行失败”,请复制作业 ID (JID) 并打开 SaltStack Config
  3. SaltStack Config 中,选择活动 > 已完成以打开已完成的作业。
  4. JID 列中,单击筛选器图标并键入 JID。
  5. 单击 JID 以查看作业结果页面。
  6. 单击原始选项卡以查看作业的原始输出。

    Windows

    如果作业原始输出中的最后一行包含“无法连接到主机: 超时”,则必须将以下配置设置添加到 /etc/salt/master.d/raas.conf 以将启动延迟 180 秒:
    sseapi_win_minion_deploy_delay: 180

    Linux

    如果作业原始输出中的最后一行包含“无法使用提供的凭据访问远程主机”,则必须将以下配置设置添加到 /etc/salt/master.d/raas.conf 以将启动延迟 90 秒:
    sseapi_linux_minion_deploy_delay: 90
  7. 重新启动 Salt 主节点服务:
    systemctl restart salt-master
  8. 重新部署云模板。

    如果部署不成功,可以增加延迟参数并重新部署模板。

后续操作

要使用 SaltStack Config 功能管理资源,请参见 SaltStack Config 文档