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 "。