5.5. pre-Configuration:自定义所有 Overcloud 角色
Overcloud 使用 Puppet 作为 OpenStack 组件的核心配置。director 提供了一个 hook,用于在第一次引导完成后以及启动核心配置前配置所有节点类型:
- OS::TripleO::NodeExtraConfig
- 在核心 Puppet 配置之前,将额外的配置应用到所有节点角色。
				在本例中,您首先创建一个基本的 heat 模板(/home/stack/templates/nameserver.yaml),它将运行一个脚本,将每个节点的 resolv.conf 附加到变量名称服务器。
			
				在本例中,Resources 部分包含以下内容:
			
- CustomExtraConfigPre
- 
							这定义了软件配置。在本例中,我们定义了 Bash 脚本,Heat 将_NAMESERVER_IP_替换为nameserver_ip参数中存储的值。
- CustomExtraDeploymentPre
- 这会执行软件配置,这是来自 - CustomExtraConfigPre资源的软件配置。注意以下几点:- 
									配置参数引用 CustomExtraConfigPre资源,因此 Heat 知道要应用的配置。
- 
									server参数检索 Overcloud 节点的映射。此参数由父模板提供,是此 hook 模板中的强制要求。
- 
									actions参数定义何时应用配置。在这种情况下,我们仅在创建或更新 Overcloud 时应用配置。可能的操作包括CREATE、UPDATE、DELETE、SUSPEND和RESUME。
- 
									input_values参数包含名为deploy_identifier的子参数,用于存储父模板中的DeployIdentifier。此参数为每个部署更新的资源提供时间戳。这可确保在后续的 overcloud 更新中资源恢复。
 
- 
									配置参数引用 
				接下来,创建一个环境文件(/home/stack/templates/pre_config.yaml),将您的 heat 模板注册为 OS::TripleO::NodeExtraConfig 资源类型。
			
resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
resource_registry:
  OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml
parameter_defaults:
  nameserver_ip: 192.168.1.1要应用配置,请在创建或更新 Overcloud 时将环境文件添加到堆栈中,以及其他环境文件。例如:
openstack overcloud deploy --templates \
    ...
$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/pre_config.yaml \
    ...这会在内核配置开始初始 Overcloud 创建或后续更新时,将配置应用到所有节点。
					您只能将 OS::TripleO::NodeExtraConfig 注册到一个 Heat 模板。后续使用会覆盖要使用的 Heat 模板。
				
这可实现:
- 
						OS::TripleO::NodeExtraConfig是 Heat 模板集合中配置模板中使用的基于 director 的 Heat 资源。此资源将配置传递给每个节点。默认的NodeExtraConfig是指生成空白值的 Heat 模板(puppet/extraconfig/pre_deploy/default.yaml)。在我们的情形中,我们的pre_config.yaml环境文件将这个默认文件替换为我们自己的nameserver.yaml文件的引用。
- 
						环境文件还会将 nameserver_ip传递为我们环境的parameter_default值。这是存储名称服务器的 IP 地址的参数。然后,name.yamlHeat 模板接受此参数,如parameters部分中定义。
- 
						该模板通过 OS::Heat::SoftwareConfig将CustomExtraConfigPre定义为配置资源。注意group: script属性。组定义了要使用的软件配置工具,该工具通过一组用于 Heat 的 hook 使用。在本例中,脚本hook 运行您在SoftwareConfig资源中定义的可执行脚本,作为配置属性。
- 脚本本身将 - /etc/resolve.conf附加至名称服务器 IP 地址。请注意- str_replace属性,它允许您使用- params部分中的参数替换- template部分中的变量。在本例中,我们将 NAMESERVER_IP 设置为名称服务器 IP 地址,这将替换 脚本中的相同变量。这会生成以下脚本:- #!/bin/sh echo "nameserver 192.168.1.1" >> /etc/resolve.conf - #!/bin/sh echo "nameserver 192.168.1.1" >> /etc/resolve.conf- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
				本例演示了如何创建 Heat 模板,该模板在核心配置前使用 OS::Heat::SoftwareConfig 和 OS::Heat::SoftwareDeployments 进行部署。它还介绍了如何在环境文件中定义参数,并将其传递到配置中的模板。