Automation Assembler 支持与 Puppet Enterprise 集成配置管理集成。

将 Puppet Enterprise 作为外部系统添加到 Automation Assembler 后,默认情况下可在所有项目中使用。可以将其限制到特定项目。

要添加 Puppet Enterprise 集成,您必须具有 Puppet 主节点名称以及主节点的主机名或 IP 地址。

您可以在以下位置找到 Puppet 日志,以防需要检查它们是否存在错误或出于信息目的。

说明 日志位置
面向创建和安装相关事件的日志

这些日志位于已部署计算机上的 ` ~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`

有关完整日志,请参考 log.txt 文件。有关详细的 Puppet 代理日志,请参阅 https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging
面向 Puppet 删除和运行相关任务的日志 这些日志位于 PE 上的 `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`。有关完整日志,请参考 log.txt 文件。

过程

  1. 选择基础架构 > 连接 > 集成,然后单击添加集成
  2. 选择 Puppet。
  3. 在 Puppet 配置页面上输入所需的信息。
    要使 Puppet 集成正常运行,提供的凭据必须对 SSH 和 API 帐户都有效。此外,指定的操作系统和应用程序用户帐户必须具有相同的用户名和密码。
  4. 单击验证以检查集成。
  5. 单击添加

结果

Puppet 可与云模板配合使用。

下一步做什么

将 Puppet 组件添加到所需云模板。

  1. Automation Assembler 中的“设计”选项卡上,选择云模板菜单上“内容管理”标题下的“Puppet”,然后将 Puppet 组件拖动到画布。
  2. 在右侧的窗格中输入“Puppet 属性”。
    属性 说明
    Master 输入与此云模板一起使用的 Puppet 主计算机的名称。
    环境 为 Puppet 主计算机选择环境。
    角色 选择要与此云模板一起使用的 Puppet 角色。
    代理运行间隔 希望 Puppet 代理轮询 Puppet 主计算机以获取配置详细信息的频率,该配置详细信息将应用于与此云模板相关的已部署虚拟机。
  3. 单击右侧窗格中的“代码”选项卡以查看 Puppet 配置属性的 YAML 代码。

将 Puppet 组件添加到云模板时,可以将 installMaster 属性添加到 YAML 文件以指向 Puppet 安装主节点(也称为编译主节点)。此属性的值可以是 Puppet 编译主节点的 IP 地址或主机名。使用此属性可以访问已部署的 Puppet 虚拟机的增强功能,还支持其他实施后操作。

  Puppet_Agent:
    type: Cloud.Puppet
    properties:
      account: PEIntegrationAccount
      environment: production
      role: 'role::linux_webserver'
      host: '${CentOS-Puppet.*}'
      username: root
      password: password123!
      installMaster: my-pe-compile-master.example.com
      agentConfiguration:
        certName: '${CentOS-Puppet.address}'
      osType: linux
      count: 1
注: 尽管此处定义的用户是 root 用户,但配置云模板时可以使用 sudoers 列表中包含的任何用户。

在某些情况下,VMware Aria Automation 默认将某些计算机相关信息作为事实传递到 Puppet 虚拟机。Windows 计算机不支持自定义事实。在 Linux 计算机上,默认传递某些信息,用户可以使用自定义属性传递其他信息。

对于传递到 Linux Puppet 计算机的内容,存在一些限制。主机资源和 Puppet 代理上的自定义属性会传递到 Puppet 虚拟机。网络资源上的自定义属性不会传递到虚拟机。传递的项目包括简单属性、布尔属性以及自定义命名类型和复合类型,如包含数组的嵌套映射。

以下示例展示了如何在主机资源上调用各种自定义资源:

resources:
  Puppet-Host:
    type: Cloud.AWS.EC2.Instance
    properties:
      customer_specified_property_on_ec2_resource: "property"
      customer_specified_property_on_network_resource_that_should_also_be_a_fact_and_is_boolean: true
      CustomerNameStuff: "zone A"
      try_map:
      key: value
      keytwo: value
      nested_array:
        - one
        - two
        - true
      try_array:
        - one
        - two
        -three:
           inner_key: value

如果 Puppet 清除命令导致出现错误,在大多数情况下,VMware Aria Automation 会忽略节点的清除错误并继续删除节点。即使找不到特定节点的证书,VMware Aria Automation 也将继续删除。如果由于某种原因 VMware Aria Automation 无法继续删除节点,则可以在“部署”页面的“操作”菜单中单击“删除”以打开一个对话框,以便继续删除节点。从云模板移除 Puppet 集成,然后将该模板应用于部署时,将执行类似的工作流。此工作流会触发按照以上所述进行处理的节点清除操作。

与 Puppet Enterprise 集成需要公共 IP 地址。如果没有为 Puppet Enterprise 计算机配置公共 IP 地址,则使用第一个网卡的 IP 地址。

如果在 vSphere 计算机上运行且置备了 Puppet 的计算机的网卡具有多个 IP 地址,可以使用云模板中的 primaryAddress YAML 属性指定要用于连接的 IP 地址。将 primaryAddress 属性分配给网卡时,Puppet 将使用此网卡的 IP 地址。只能将一个网卡指定为主网卡。有关如何使用 primaryAddress 属性的示例,请参见以下 YAML 代码片段。

BaseVM:
  type: Cloud.vSphere.Machine
  properties:
   image: photon
   count: 2
   customizationSpec: Linux
   cpuCount: 1
   totalMemoryMB: 1024
   networks:
    - network: '${resource.dev.id}'
     deviceIndex: 0
     primaryAddress: true
     assignment: static
    - network: '${resource.prod.id}'
     deviceIndex: 1
     assignment: static

如果没有为任何虚拟机网卡设置 primaryAddress 属性,则云模板逻辑将默认为选择 IP 地址的当前行为。

如果要为具有 Sudo 特权的非 root 用户设置 Puppet 集成,应向该用户授予运行以下命令的权限。
  • 应向该用户授予创建新 Puppet facts 目录和文件的权限:
    sudo mkdir -p /etc/puppetlabs/facter/facts.d 
           sudo tee /etc/puppetlabs/facter/facts.d/puppet_cloudassembly_facts.json 
    
  • 应向该用户授予运行 Puppet 的权限:
    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=stopped
           sudo /opt/puppetlabs/bin/puppet agent --test --color=false --detailed-exitcode
  • 应向该用户授予删除证书签名请求 (CSR) 文件(包括 csr_attributes.yaml 和 CSR pem)的权限:
     sudo rm /etc/puppetlabs/puppet/csr_attributes.yaml
           sudo rm -f /etc/puppetlabs/puppet/ssl/certificate_requests/*