Red Hat Training

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

第5章 Ansible ベースのオーバークラウド登録

director は、Ansible ベースのメソッドを使用してオーバークラウドノードを Red Hat カスタマーポータルまたは Red Hat Satellite 6 サーバーに登録します。

5.1. rhsm コンポーザブルサービス

rhsm コンポーザブルサービスは、Ansible を介してオーバークラウドノードを登録する方法を提供します。デフォルトの roles_data ファイルの各ロールには、OS::TripleO::Services::Rhsm リソースが含まれており、これはデフォルトで無効になっています。サービスを有効にするには、このリソースを rhsm コンポーザブルサービスのファイルに登録します。以下に例を示します。

resource_registry:
  OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/extraconfig/services/rhsm.yaml

rhsm コンポーザブルサービスは RhsmVars パラメーターを受け入れます。これにより、登録に関連した複数のサブパラメーターを定義することができます。以下に例を示します。

parameter_defaults:
  RhsmVars:
    rhsm_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-14-rpms
      - rhel-7-server-rhceph-3-osd-rpms
      - rhel-7-server-rhceph-3-mon-rpms
      - rhel-7-server-rhceph-3-tools-rpms
    rhsm_username: "myusername"
    rhsm_password: "p@55w0rd!"
    rhsm_org_id: "1234567"

RhsmVars パラメーターをロール固有のパラメーター (例: ControllerParameters) と共に使用することにより、異なるノードタイプ用の特定のリポジトリーを有効化する場合に柔軟性を提供することもできます。

次の項には、rhsm コンポーザブルサービスで使う RhsmVars パラメーターと共に使用することのできるサブパラメーターの一覧を記載します。

5.2. RhsmVars サブパラメーター

すべての Ansible パラメーターを把握するには、ロールに関するドキュメント を参照してください。

rhsm説明

rhsm_method

登録の方法を選択します。portalsatellitedisable のいずれかです。

rhsm_org_id

登録に使用する組織。この ID を特定するには、アンダークラウドノードから sudo subscription-manager orgs を実行します。プロンプトが表示されたら、Red Hat の認証情報を入力して、出力される Key 値を使用します。

rhsm_pool_ids

使用するサブスクリプションプール ID。サブスクリプションを自動でアタッチしない場合には、このパラメーターを使用してください。この ID を特定するには、アンダークラウドノードから sudo subscription-manager list --available --all --matches="*OpenStack*" を実行して、出力される Pool ID 値を使用します。

rhsm_activation_key

登録に使用するアクティベーションキー。rhsm_repos が設定されている場合には機能しません。

rhsm_autosubscribe

互換性のあるサブスクリプションをこのシステムに自動的にアタッチします。有効にするには true に設定します。

rhsm_satellite_url

オーバークラウドノードを登録するための Satellite サーバーのベース URL

rhsm_repos

有効にするリポジトリーの一覧。rhsm_activation_key が設定されている場合には機能しません。

rhsm_username

登録用のユーザー名。可能な場合には、登録用のアクティベーションキーを使用します。

rhsm_password

登録用のパスワード。可能な場合には、登録用のアクティベーションキーを使用します。

rhsm_rhsm_proxy_hostname

HTTP プロキシーのホスト名。例: proxy.example.com

rhsm_rhsm_proxy_port

HTTP プロキシー通信用のポート。例: 8080.

rhsm_rhsm_proxy_user

HTTP プロキシーにアクセスするためのユーザー名

rhsm_rhsm_proxy_password

HTTP プロキシーにアクセスするためのパスワード

rhsm コンポーザブルサービスがどのように機能し、どのように設定するかを理解したので、以下の手順に従って独自の登録情報を設定することができます。

5.3. rhsm コンポーザブルサービスを使用したオーバークラウドの登録

以下の手順に従って、rhsm コンポーザブルサービスを有効化して設定する環境ファイルを作成します。director はこの環境ファイルを使用して、ノードを登録し、サブスクライブします。

手順

  1. 設定を保存するための環境ファイル (templates/rhsm.yml) を作成します。
  2. 環境ファイルに設定を追加します。以下に例を示します。

    resource_registry:
      OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/extraconfig/services/rhsm.yaml
    parameter_defaults:
      RhsmVars:
        rhsm_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-14-rpms
          - rhel-7-server-rhceph-3-osd-rpms
          - rhel-7-server-rhceph-3-mon-rpms
          - rhel-7-server-rhceph-3-tools-rpms
        rhsm_username: "myusername"
        rhsm_password: "p@55w0rd!"
        rhsm_org_id: "1234567"
        rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd"
        rhsm_method: "portal"

    resource_registry は、各ロールで利用可能な OS::TripleO::Services::Rhsm リソースに rhsm コンポーザブルサービスを関連付けます。

    RhsmVars の変数は、Red Hat の登録を設定するためにパラメーターを Ansible に渡します。

  3. 環境ファイルを保存します。

特定のオーバークラウドロールに対して登録情報を提供することもできます。次の項では、その例を説明します。

5.4. 異なるロールに対する rhsm コンポーザブルサービスの適用

rhsm コンポーザブルサービスはロールベースで適用することができます。たとえば、コントローラーノードに 1 つのセットを適用し、コンピュートノードに異なるセットを適用することができます。

手順

  1. 設定を保存するための環境ファイル (templates/rhsm.yml) を作成します。
  2. 環境ファイルに設定を追加します。以下に例を示します。

    resource_registry:
      OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/extraconfig/services/rhsm.yaml
    parameter_defaults:
      ControllerParameters:
        RhsmVars:
          rhsm_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-14-rpms
            - rhel-7-server-rhceph-3-osd-rpms
            - rhel-7-server-rhceph-3-mon-rpms
            - rhel-7-server-rhceph-3-tools-rpms
          rhsm_username: "myusername"
          rhsm_password: "p@55w0rd!"
          rhsm_org_id: "1234567"
          rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd"
          rhsm_method: "portal"
      ComputeParameters:
        RhsmVars:
          rhsm_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-14-rpms
            - rhel-7-server-rhceph-3-tools-rpms
          rhsm_username: "myusername"
          rhsm_password: "p@55w0rd!"
          rhsm_org_id: "1234567"
          rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd"
          rhsm_method: "portal"

    resource_registry は、各ロールで利用可能な OS::TripleO::Services::Rhsm リソースに rhsm コンポーザブルサービスを関連付けます。

    ControllerParametersComputeParameters はいずれも、独自の RhsmVars パラメーターを使用して、サブスクリプションの情報をそれぞれのロールに渡します。

  3. 環境ファイルを保存します。

これらの手順により、オーバークラウドで rhsm を有効にして設定します。ただし、以前のバージョンの Red Hat OpenStack Platform の rhel-registration メソッドを使用していた場合には、それを無効にして Ansible ベースのメソッドに切り替える必要があります。従来の rhel-registration メソッドから Ansible ベースのメソッドに切り替えるには、以下の手順に従ってください。

5.5. rhsm コンポーザブルサービスへの切り替え

従来の rhel-registration メソッドは、bash スクリプトを実行してオーバークラウドの登録を処理します。このメソッド用のスクリプトと環境ファイルは、/usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/ のコア Heat テンプレートコレクションにあります。

この手順では、rhel-registration メソッドを rhsm コンポーザブルサービスに切り替える方法を説明します。

手順

  1. rhel-registration 環境ファイルは、今後のデプロイメント操作から除外します。大半の場合、これは以下のファイルです。

    • rhel-registration/environment-rhel-registration.yaml
    • rhel-registration/rhel-registration-resource-registry.yaml
  2. カスタムの roles_data ファイルを使用する場合には、roles_data ファイルの各ロールに必ず OS::TripleO::Services::Rhsm コンポーザブルサービスを含めてください。以下に例を示します。

    - name: Controller
      description: |
        Controller role that has all the controler services loaded and handles
        Database, Messaging and Network functions.
      CountDefault: 1
      ...
      ServicesDefault:
        ...
        - OS::TripleO::Services::Rhsm
        ...
  3. rhsm コンポーザブルサービスのパラメーター用の環境ファイルを今後のデプロイメント操作に追加します。

このメソッドは、rhel-registration パラメーターを rhsm サービスのパラメーターに置き換えて、サービスを有効化する Heat リソースを変更します。

resource_registry:
  OS::TripleO::NodeExtraConfig: rhel-registration.yaml

上記の行を以下のように変更します。

resource_registry:
  OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/extraconfig/services/rhsm.yaml

デプロイメントに /usr/share/openstack-tripleo-heat-templates/environments/rhsm.yaml 環境ファイルを追加して、サービスを有効にすることもできます。

rhel-registration メソッドから rhsm メソッドへの情報の移行を容易に行うには、以下の表を使用してパラメーターとその値をマッピングします。

5.6. rhel-registration から rhsm へのマッピング

rhel-registrationrhsm / RhsmVars

rhel_reg_method

rhsm_method

rhel_reg_org

rhsm_org_id

rhel_reg_pool_id

rhsm_pool_ids

rhel_reg_activation_key

rhsm_activation_key

rhel_reg_auto_attach

rhsm_autosubscribe

rhel_reg_sat_url

rhsm_satellite_url

rhel_reg_repos

rhsm_repos

rhel_reg_user

rhsm_username

rhel_reg_password

rhsm_password

rhel_reg_http_proxy_host

rhsm_rhsm_proxy_hostname

rhel_reg_http_proxy_port

rhsm_rhsm_proxy_port

rhel_reg_http_proxy_username

rhsm_rhsm_proxy_user

rhel_reg_http_proxy_password

rhsm_rhsm_proxy_password

これで、rhsm サービスの環境ファイルの設定が完了し、オーバークラウドの次のデプロイメント操作で追加することができます。

5.7. rhsm コンポーザブルサービスを使用してオーバークラウドをデプロイします。

このプロセスでは、rhsm の設定をオーバークラウドに適用する方法について説明します。

手順

  1. openstack overcloud deploy コマンドを実行する際には、rhsm.yml 環境ファイルを含めてください。

    openstack overcloud deploy \
        <other cli args> \
        -e ~/templates/rhsm.yaml

    これにより、Ansible のオーバークラウドの設定と、Ansible ベースの登録が有効化されます。

  2. オーバークラウドのデプロイメントが完了するまで待ちます。
  3. オーバークラウドノードのサブスクリプション情報を確認します。たとえば、コントローラーノードにログインして、以下のコマンドを実行します。

    $ sudo subscription-manager status
    $ sudo subscription-manager list --consumed

director ベースの登録メソッドに加えて、デプロイメント後に手動で登録することもできます。

5.8. 手動による Ansible ベースの登録の実行

デプロイしたオーバークラウドで、手動による Ansible ベースの登録を実施することができます。そのためには、director の動的インベントリースクリプトを使用して、ホストグループとしてノードロールを定義します。続いて ansible-playbook を使用して定義したノードロールに対して Playbook を実行します。以下の例で、Playbook を使用してコントローラーノードを手動で登録する方法を説明します。

手順

  1. ノードを登録する redhat_subscription モジュールを使用して Playbook を作成します。たとえば、以下の Playbook は 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:
            username: myusername
            password: p@55w0rd!
            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 変数で指定します。
  2. オーバークラウドのデプロイ後には、以下のコマンドを実行して、Ansible がオーバークラウドに対して Playbook (ansible-osp-registration.yml) を実行することができます。

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

    このコマンドにより、以下の処理が行われます。

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