第 4 章 配置 hook
使用配置 hook 将您自己的自定义配置功能注入 overcloud 部署过程中。您可以创建 hook 在主 overcloud 服务配置之前和之后注入自定义配置,以及用于修改和包含基于 Puppet 的配置的 hook。
4.1. 第一次引导:自定义第一次引导配置
director 使用 cloud-init
在初始创建 overcloud 后在所有节点上执行配置。您可以使用 NodeUserData
资源类型调用 cloud-init
。
- OS::TripleO::NodeUserData
-
应用到所有节点的
cloud-init
配置。 - OS::TripleO::Controller::NodeUserData
-
应用到 Controller 节点的
cloud-init
配置。 - OS::TripleO::Compute::NodeUserData
-
应用到 Compute 节点的
cloud-init
配置。 - OS::TripleO::CephStorage::NodeUserData
-
应用到 Ceph Storage 节点的
cloud-init
配置。 - OS::TripleO::ObjectStorage::NodeUserData
-
应用到 Object Storage 节点的
cloud-init
配置。 - OS::TripleO::BlockStorage::NodeUserData
-
应用到块存储节点的
cloud-init
配置。 - OS::TripleO::[ROLE]::NodeUserData
-
应用到自定义节点的
cloud-init
配置。将[ROLE]
替换为可组合角色名称。
在本例中,使用所有节点上的自定义 IP 地址更新名称服务器:
流程
创建一个基本的 heat 模板
~/templates/nameserver.yaml
,它将运行脚本,以在每个节点上附加带有特定名称服务器的resolv.conf
文件。您可以使用OS::TripleO::MultipartMime
资源类型来发送配置脚本。heat_template_version: 2014-10-16 description: > Extra hostname configuration resources: userdata: type: OS::Heat::MultipartMime properties: parts: - config: {get_resource: nameserver_config} nameserver_config: type: OS::Heat::SoftwareConfig properties: config: | #!/bin/bash echo "nameserver 192.168.1.1" >> /etc/resolv.conf outputs: OS::stack_id: value: {get_resource: userdata}
创建一个环境文件
~/templates/firstboot.yaml
,它将 heat 模板注册为OS::TripleO::NodeUserData
资源类型。resource_registry: OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml
要在 overcloud 中添加第一次引导配置,请将环境文件添加到堆栈中,以及其他环境文件:
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/firstboot.yaml \ ...
这会在首次创建和第一次引导时将配置添加到所有节点中。后续包含这些模板(如更新 overcloud 堆栈)不会运行这些脚本。
您只能将 NodeUserData
资源注册到每个资源的一个 heat 模板中。后续用法会覆盖要使用的 heat 模板。