此用例的目标是通过将 Windows 虚拟机连接到 Automation Config 环境,以编程方式在工作节点上安装 Salt 工作节点服务。

前提条件

在 Windows 环境中使用 API 部署工作节点之前,您必须:
  • 具有已部署 RaaS 的 Automation Config 环境。
  • 已安装 Salt 主节点和 Salt 工作节点。
  • 已部署 Windows 虚拟机。

过程

  1. 确认 Salt 主节点上的文件夹 etc/salt/cloud.deploy.d 包含以下文件。
    Salt 主节点上 cloud.deploy.d 目录中所需文件的列表

    如果看不到这些文件,请联系支持部门。

    注: 文件名(例如 salt-xxxx-windows--x86.tar.gz)中的 xxxx 应与 Salt 主节点的版本一致。要验证 Salt 主节点的版本,请在 Salt 主节点上运行 salt-master -V 命令。
  2. 如果您的环境是气隙环境,请完成以下步骤:
    1. 打开 /etc/raas/raas 下的 RaaS 配置文件。
    2. 将以下行添加到该配置文件:
      minion_deployment:
        airgap_install: true
    3. 使用 service raas restart 命令重新启动 RaaS 服务。
    注: 如果使用的是强化 Linux 虚拟机,在某些情况下,无法从虚拟机上的 /tmp 运行脚本。
    • 如果使用的是 Automation Assembler 8.10.2 或更高版本:请将 additionalAuthParams 属性添加到云模板中的 Automation Config 资源。有关详细信息,请参见将 Automation Config 资源添加到云模板
      additionalAuthParams:
        profile:
          tmp_dir: /var/cache/salt
    • 如果使用的是 Automation Assembler 8.10.1 或更低版本:请使用以下内容修改 /etc/salt/cloud.providers.d/ssc_saltify_provider.conf 文件
      ssc_saltify_provider:
        driver: saltify
        tmp_dir: /var/cache/salt
      如果此配置文件不存在,请创建该文件并添加上述设置。
  3. 在 Salt 主节点的终端中,运行 pip3 install pypsexec smbprotocolpip3 install impacket --ignore-installed 命令,安装以下库。
    注: 使用 LCM 安装包含 Salt 主节点的 Automation Config 设备时,不需要执行此步骤。但是,手动安装 Salt 主节点时,必须执行此步骤。
  4. 要确定 Salt 主节点的 FQDN,请在 Salt 主节点的终端运行 salt saltmaster grains.get fqdn 命令。
  5. 在 Windows 计算机上,确认 C: \Windows\System32\drivers\etc\hosts 文件中配置了 Salt 主节点的 IP 和 FQDN。
  6. 在 Windows 计算机上打开 PowerShell,然后运行以下命令以打开所需的端口:
    端口 命令
    445 New-NetFirewallRule -Name "SMB445" - DisplayName "SMB445" -Protocol TCP - LocalPort 445

    Enable-Psremoting
  7. 在 Salt 主节点的终端中,使用以下命令在 Salt 主节点上打开端口 4505 和 4506:
    端口 命令
    4505-4506 netsh advfirewall firewall add rule name="Salt" dir=in action=allow protocol=TCP localport=4505-4506

    有关 Salt 通信模型的详细信息,请参见了解 Automation Config

  8. 在 Windows 计算机上运行 ping [FQDN] 命令,确保已为 Salt 主节点配置该 FQDN。
    在 Windows 虚拟机上运行 ping FQDN 命令的结果
  9. 使用 SSEAPI 客户端执行以下 API 调用并使用适用于您环境的正确凭据。
    注: 如果将 Automation ConfigVMware Aria Automation 集成,则您使用云模板部署工作节点时, VMware Aria Automation 服务将为您执行此 API 调用。
    from sseapiclient import APIClient
    
    client = APIClient('https://<master-ip>', '<ssc-username>', '<sscpassword>', ssl_validate_cert=False)
    
    
    client.api.minions.deploy_minion(
    
     master_id = '<master-id>',
    
     host_name_ip = '<prospective minion’s ip>',
    
     os = ‘<prospective minion’s os>’,
    
     minion_id = '<desired-minion-name-for-prospective-minion>',
    
     username = '<ssh-username-for-prospective-minion>', 
    
     password = '<ssh-password-for-prospective-minion>',
    
    )
    deploy.minion 函数开始在 Automation Config 环境中运行。可通过以下两种方法验证作业是否正在运行:在 Automation Config 用户界面的 活动选项卡中进行验证;也可以运行 python3 命令,然后再运行 client.api.minions.get_minion_deployments() 命令进行验证。

结果

工作节点已在 Windows 环境中通过 API 调用成功部署并配置。

下一步做什么

通过以下两种方法验证是否已成功部署工作节点:使用 运行命令窗口对工作节点运行 test.ping 命令;或在 Salt 主节点命令窗口中运行 \* test.ping\* test.versions 命令。