Cloud Assembly 支持与 Puppet Enterprise 集成配置管理集成。
将 Puppet Enterprise 作为外部系统添加到 Cloud Assembly 后,默认情况下可在所有项目中使用。可以将其限制到特定项目。
要添加 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 文件。 |
过程
结果
下一步做什么
将 Puppet 组件添加到所需云模板。
- 在 Cloud Assembly 中的“云模板”下,选择云模板菜单上“内容管理”标题下的“Puppet”,然后将 Puppet 组件拖动到画布。
- 在右侧的窗格中输入“Puppet 属性”。
属性 说明 Master 输入与此云模板一起使用的 Puppet 主计算机的名称。 环境 为 Puppet 主计算机选择环境。 角色 选择要与此云模板一起使用的 Puppet 角色。 代理运行间隔 希望 Puppet 代理轮询 Puppet 主计算机以获取配置详细信息的频率,该配置详细信息将应用于与此云模板相关的已部署虚拟机。 - 单击右侧窗格中的“代码”选项卡以查看 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
在某些情况下,vRealize 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 清除命令导致出现错误,在大多数情况下,vRealize Automation 会忽略节点的清除错误并继续删除节点。即使找不到特定节点的证书,vRealize Automation 也将继续删除。如果由于某种原因 vRealize 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 地址的当前行为。
- 应向该用户授予创建新 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/*