Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

5.6. 高度な登録方法

一部の状況では、異なるサブスクリプションタイプに異なるロールを登録する必要がある場合があります。たとえば、コントローラーノードのみを OpenStack Platform サブスクリプションにサブスクライブして、Ceph Storage ノードを Ceph Storage サブスクリプションにするとします。本項では、ロールごとに別々のサブスクリプションを割り当てるのに役立つ高度な登録方法をいくつか紹介します。

設定フック

その 1 つとして、ロール固有のスクリプトを記述して、ロール固有のフックと共に追加する方法があります。たとえば、以下のスニペットを OS::TripleO::ControllerExtraConfigPre リソースのテンプレートに追加することができます。これにより、コントローラーノードのみがサブスクリプションの情報を受け取ることになります。

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 コマンドを使用してシステムを登録し、サブスクリプションをアタッチして、必要なリポジトリーを有効化します。

フックについての詳しい情報は、「4章設定フック」を参照してください。

Ansible ベースの設定

director の動的インベントリースクリプトを使用して、特定のロールで Ansible ベース登録を実行することができます。たとえば、以下のプレイを使用してコントローラーノードを登録します。

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

このプレイには、アクティベーションキーを使用したノードの登録、自動的に有効化されたリポジトリーの無効化、コントローラーノードに関連したリポジトリーのみの有効化の 3 つのタスクが含まれています。リポジトリーは repos 変数でリストされます。

オーバークラウドのデプロイ後には、以下のコマンドを実行して、Ansible がオーバークラウドに対して Playbook (ansible-osp-registration.yml) を実行することができます。

$ ansible-playbook -i /usr/bin/tripleo-ansible-inventory ansible-osp-registration.yml

このコマンドは、動的インベントリースクリプトを実行して、ホストとそのグループの一覧を取得し、Playbook の hosts パラメーターで定義されているグループ (この場合は Controller グループ) 内のノードに、その Playbook のタスクを適用します。

オーバークラウドでの Ansible 自動化の実行に関する詳しい情報は、『director のインストールと使用方法』「オーバークラウド作成後のタスクの実行」を参照してください。