Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
5.6. 高级注册方法
在某些情况下,您可能想要将不同的角色注册到不同的订阅类型。例如,您可能只将 Controller 节点订阅到 OpenStack Platform 订阅,并将 Ceph Storage 节点订阅到 Ceph Storage 订阅。本节提供了一些高级注册方法,以帮助为不同的角色分配单独的订阅。
配置 Hook
种方法是编写特定于角色的脚本,并通过特定于角色的 hook 来包括它们。例如,可以将以下代码片段添加到 OS::TripleO::ControllerExtraConfigPre
资源的模板中,这样可以确保仅 Controller 节点接收这些订阅详情。
ControllerRegistrationConfig: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/sh sudo subscription-manager register --org 1234567 \ --activationkey "my-openstack" sudo subscription-manager attach --pool 1a85f9223e3d5e43013e3d6e8ff506fd sudo subscription-manager repos --enable rhel-7-server-rpms \ --enable rhel-7-server-extras-rpms \ --enable rhel-7-server-rh-common-rpms \ --enable rhel-ha-for-rhel-7-server-rpms \ --enable rhel-7-server-openstack-13-rpms \ --enable rhel-7-server-rhceph-3-mon-rpms ControllerRegistrationDeployment: type: OS::Heat::SoftwareDeployment properties: server: {get_param: server} config: {get_resource: ControllerRegistrationConfig} actions: ['CREATE','UPDATE'] input_values: deploy_identifier: {get_param: DeployIdentifier}
该脚本使用一组 subscription-manager
命令来注册系统,附加订阅并启用所需的存储库。
有关 hook 的更多信息,请参阅 第 4 章 配置 Hook。
基于 Ansible 的配置
您可以使用 director 的动态清单脚本在特定角色上执行基于 Ansible 的注册。例如,您可以使用以下 play 注册 Controller 节点:
--- - name: Register Controller nodes hosts: Controller become: yes vars: repos: - rhel-7-server-rpms - rhel-7-server-extras-rpms - rhel-7-server-rh-common-rpms - rhel-ha-for-rhel-7-server-rpms - rhel-7-server-openstack-13-rpms - rhel-7-server-rhceph-3-mon-rpms tasks: - name: Register system redhat_subscription: activationkey: my-openstack org_id: 1234567 pool_ids: 1a85f9223e3d5e43013e3d6e8ff506fd - name: Disable all repos command: "subscription-manager repos --disable *" - name: Enable Controller node repos command: "subscription-manager repos --enable {{ item }}" with_items: "{{ repos }}"
此 play 包含三个任务: - 使用激活密钥注册节点 - 禁用任何启用自动启用的存储库 - 仅启用与 Controller 节点相关的存储库。存储库使用 repos
变量列出。
部署 overcloud 后,您可以运行以下命令,以便 Ansible 为您的 overcloud 执行 playbook (ansible-osp-registration.yml
):
$ ansible-playbook -i /usr/bin/tripleo-ansible-inventory ansible-osp-registration.yml
该命令执行以下操作: - 运行动态清单脚本来获取主机及其组列表 - 将 playbook 任务应用到 playbook 的 hosts
参数中定义的组内的节点,本例中为 Controller
组。
有关 overcloud 上运行 Ansible 自动化的更多信息,请参阅 Director 安装和使用 指南中的 "运行 Ansible Automation "。