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 のインストールと使用方法の オーバークラウド作成後のタスクの実行 を参照してください。