Red Hat Training

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

オーバークラウドの高度なカスタマイズ

Red Hat OpenStack Platform 10

Red Hat OpenStack Platform director を使用して高度な機能を設定する方法

OpenStack Documentation Team

概要

本ガイドでは、Red Hat OpenStack Platform director を使用して、Red Hat OpenStack Platform のエンタープライズ環境向けに特定の高度な機能を設定する方法について説明します。これには、ネットワークの分離、ストレージの設定、SSL 通信、一般的な設定の方法が含まれます。

第1章 はじめに

Red Hat OpenStack Platform director は、オーバークラウドとしても知られる、完全な機能を実装した OpenStack 環境をプロビジョニング/作成するためのツールセットを提供します。オーバークラウドの準備と設定については Director のインストールと使用方法 に記載しています。ただし、実稼働環境レベルのオーバークラウドには、以下のような追加設定が必要となる場合があります。

  • 既存のネットワークインフラストラクチャーにオーバークラウドを統合するための基本的なネットワーク設定
  • 特定の OpenStack ネットワークトラフィック種別を対象とする個別の VLAN 上でのネットワークトラフィックの分離
  • パブリックエンドポイント上の通信をセキュリティー保護するための SSL 設定
  • NFS、iSCSI、Red Hat Ceph Storage、および複数のサードパーティー製ストレージデバイスなどのストレージオプション
  • Red Hat コンテンツ配信ネットワークまたは内部の Red Hat Satellite 5 / 6 Server へのノードの登録
  • さまざまなシステムレベルのオプション
  • OpenStack サービスの多様なオプション

本ガイドでは、director を使用してオーバークラウドの機能を拡張する方法について説明します。ここでは、director でのノードの登録が完了済みで、かつオーバークラウドの作成に必要なサービスが設定済みであることを前提としています。本ガイドの手順を使用して、オーバークラウドをカスタマイズすることができます。

注記

本ガイドに記載する例は、オーバークラウドを設定するためのオプションのステップです。これらのステップは、オーバークラウドに追加の機能を提供する場合にのみ必要です。環境の要件に該当するステップのみを使用してください。

第2章 Heat テンプレートの概要

本ガイドのカスタム設定では、Heat テンプレートと環境ファイルを使用して、オーバークラウドの特定の機能を定義します。本項には、Red Hat OpenStack Platform director に関連した Heat テンプレートの構造や形式を理解するための基本的な説明を記載します。

2.1. Heat テンプレート

director は、Heat Orchestration Template (HOT) をオーバークラウドデプロイメントプランのテンプレート形式として使用します。HOT 形式のテンプレートは多くの場合に、YAML 形式で表現されます。テンプレートの目的は、heat が作成するリソースコレクションである スタック を定義および作成し、リソースを設定することです。リソースとは、コンピュートリソース、ネットワーク設定、セキュリティーグループ、スケーリングルール、カスタムリソースなどの OpenStack のオブジェクトを指します。

Heat テンプレートは、3 つの主要なセクションで設定されます。

パラメーター
これらは、Heat に渡される設定 (スタックのカスタマイズが可能) およびパラメーターのデフォルト値 (値を渡さない場合) です。これらがテンプレートの parameters セクションで定義されます。
リソース
これらは、スタックの一部として作成/設定する固有のオブジェクトです。OpenStack には全コンポーネントに対応するコアのリソースセットが含まれています。これらがテンプレートの resources セクションで定義されます。
アウトプット
これらは、スタックの作成後に heat から渡される値です。これらの値には、Heat API またはクライアントツールを使用してアクセスすることができます。これらがテンプレートの output セクションで定義されます。

以下に、基本的な heat テンプレートの例を示します。

heat_template_version: 2013-05-23

description: > A very basic Heat template.

parameters:
  key_name:
    type: string
    default: lars
    description: Name of an existing key pair to use for the instance
  flavor:
    type: string
    description: Instance type for the instance to be created
    default: m1.small
  image:
    type: string
    default: cirros
    description: ID or name of the image to use for the instance

resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      name: My Cirros Instance
      image: { get_param: image }
      flavor: { get_param: flavor }
      key_name: { get_param: key_name }

output:
  instance_name:
    description: Get the instance's name
    value: { get_attr: [ my_instance, name ] }

このテンプレートは、リソース種別 type: OS::Nova::Server を使用して、特定のフレーバー、イメージ、キーで my_instance というインスタンスを作成します。このスタックは、My Cirros Instance という instance_name の値を返すことができます。

Heat がテンプレートを処理する際には、テンプレートのスタックとリソーステンプレートの子スタックセットを作成します。これにより、テンプレートで定義したメインのスタックに基づいたスタックの階層が作成されます。以下のコマンドを使用して、スタック階層を表示することができます。

$ openstack stack list --nested

2.2. 環境ファイル

環境ファイルとは、Heat テンプレートをカスタマイズする特別な種類のテンプレートです。このファイルは、3 つの主要な部分で設定されます。

リソースレジストリー
このセクションでは、他の heat テンプレートにリンクしたカスタムのリソース名を定義します。これは実質的に、コアリソースコレクションに存在しないカスタムのリソースを作成する方法を提供します。この設定は、環境ファイルの resource_registry セクションで定義されます。
パラメーター
これらは、最上位のテンプレートのパラメーターに適用する共通設定です。たとえば、入れ子状のスタックをデプロイするテンプレートの場合には (リソースレジストリーマッピングなど)、パラメーターは最上位のテンプレートにのみ適用され、入れ子状のリソースのテンプレートには適用されません。これらの設定は、環境ファイルの parameters セクションで定義します。
パラメーターのデフォルト
これらのパラメーターは、全テンプレートのパラメーターのデフォルト値を変更します。たとえば、入れ子状のスタックをデプロイする Heat テンプレートの場合には (リソースレジストリーマッピングなど)、パラメーターのデフォルト値がすべてのテンプレートに適用されます。つまり、最上位のテンプレートおよび入れ子状の全リソースを定義するテンプレートに適用されます。パラメーターのデフォルト値は、環境ファイルの parameter_defaults セクションで定義します。
重要

オーバークラウド用にカスタムの環境ファイルを作成する場合には、parameters ではなく parameter_defaults を使用することを推奨します。パラメーターが、オーバークラウドの全スタックテンプレートに適用されるためです。

以下に基本的な環境ファイルの例を示します。

resource_registry:
  OS::Nova::Server::MyServer: myserver.yaml

parameter_defaults:
  NetworkName: my_network

parameters:
  MyIP: 192.168.0.1

たとえば、特定の Heat テンプレート (my_template.yaml) からスタックを作成する際に、この環境ファイル (my_env.yaml) を追加します。my_env.yaml ファイルにより、OS::Nova::Server::MyServer という新しいリソース種別が作成されます。myserver.yaml ファイルは、このリソース種別を実装する Heat テンプレートファイルで、このファイルでの設定が元の設定よりも優先されます。my_template.yaml ファイルに OS::Nova::Server::MyServer リソースを含めることができます。

MyIP は、この環境ファイルと共にデプロイを行うメインの Heat テンプレートにしかパラメーターを適用しません。この例では、my_template.yaml のパラメーターにのみ適用します。

NetworkName はメインの Heat テンプレート (上記の例では my_template.yaml) とメインのテンプレートに含まれるリソースに関連付けられたテンプレート (上記の例では OS::Nova::Server::MyServer リソースとその myserver.yaml テンプレート) の両方に適用されます。

2.3. オーバークラウドのコア Heat テンプレート

director には、オーバークラウドのコア Heat テンプレートコレクションが含まれます。このコレクションは、/usr/share/openstack-tripleo-heat-templates に保存されています。

このコレクションには、多数の heat テンプレートおよび環境ファイルが含まれます。このテンプレートコレクションで特に注意すべき主要なファイルおよびディレクトリーは、以下のとおりです。

overcloud.j2.yaml
オーバークラウド環境の作成に使用するメインのテンプレートファイル。このファイルでは Jinja2 構文を使用してテンプレートの特定セクションを繰り返し、カスタムロールを作成します。Jinja2 フォーマットは、オーバークラウドのデプロイメントプロセス中に YAML にレンダリングされます。
overcloud-resource-registry-puppet.j2.yaml
オーバークラウド環境の作成に使用するメインの環境ファイル。このファイルは、オーバークラウドイメージ上に保存される Puppet モジュールの設定セットを提供します。director により各ノードにオーバークラウドのイメージが書き込まれると、Heat はこの環境ファイルに登録されているリソースを使用して各ノードの Puppet 設定を開始します。このファイルでは Jinja2 構文を使用してテンプレートの特定セクションを繰り返し、カスタムロールを作成します。Jinja2 フォーマットは、オーバークラウドのデプロイメントプロセス中に YAML にレンダリングされます。
roles_data.yaml
オーバークラウド内のロールを定義して、サービスを各ロールにマッピングするファイル
capabilities-map.yaml
オーバークラウドプラン用の環境ファイルのマッピング。director の Web UI で環境ファイルを記述および有効化するには、このファイルを使用します。オーバークラウドプランで検出されるカスタムの環境ファイルの中で、capabilities-map.yaml にリストされていないファイルは、Web UI の 2 デプロイメントの設定の指定 > 全体の設定Other サブタブに一覧表示されます。
environments
オーバークラウドの作成に使用可能な Heat 環境ファイルを追加で含む。これらの環境ファイルは、作成された OpenStack 環境の追加の機能を有効にします。たとえば、ディレクトリーには Cinder NetApp のバックエンドストレージ (cinder-netapp-config.yaml) を有効にする環境ファイルが含まれています。
network
分離ネットワークおよびポートの作成に役立つ Heat テンプレートセット。
puppet
主に Puppet を使用した設定により動作するテンプレート。前述した overcloud-resource-registry-puppet.j2.yaml 環境ファイルは、このディレクトリーのファイルを使用して、各ノードに Puppet の設定が適用されるようにします。
puppet/services
コンポーザブルサービスアーキテクチャー内の全サービス用の Heat テンプレートが含まれたディレクトリー
extraconfig
追加機能の有効化に使用するテンプレート。たとえば、director が提供する extraconfig/pre_deploy/rhel-registration は、ノードの Red Hat Enterprise Linux オペレーティングシステムを Red Hat コンテンツ配信ネットワークまたは Red Hat Satellite Server に登録できるようにします。
firstboot
ノードを最初に作成する際に director が使用する first_boot スクリプトの例を提供。

2.4. オーバークラウド作成時の環境ファイルの追加

デプロイメントのコマンド (openstack overcloud deploy) で -e オプションを使用して、オーバークラウドをカスタマイズするための環境ファイルを追加します。必要に応じていくつでも環境ファイルを追加することができます。ただし、後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順番は重要です。たとえば、以下に示す 2 つの環境ファイルを作成したとします。

environment-file-1.yaml

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/template-1.yaml

parameter_defaults:
  RabbitFDLimit: 65536
  TimeZone: 'Japan'

environment-file-2.yaml

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/template-2.yaml

parameter_defaults:
  TimeZone: 'Hongkong'

次に両環境ファイルを指定してデプロイを実行します。

$ openstack overcloud deploy --templates -e environment-file-1.yaml -e environment-file-2.yaml

この例では、両環境ファイルに共通のリソース種別 (OS::TripleO::NodeExtraConfigPost) と共通のパラメーター (TimeZone) が含まれています。openstack overcloud deploy コマンドは、以下のプロセスを順に実行します。

  1. --template オプションで指定したコア Heat テンプレートからデフォルト設定を読み込みます。
  2. environment-file-1.yaml の設定を適用します。この設定により、デフォルト設定と共通している設定は上書きされます。
  3. environment-file-2.yaml の設定を適用します。この設定により、デフォルト設定および environment-file-1.yaml と共通している設定は上書きされます。

これにより、オーバークラウドのデフォルト設定が以下のように変更されます。

  • OS::TripleO::NodeExtraConfigPost リソースは、environment-file-2.yaml で指定されているとおりに /home/stack/templates/template-2.yaml に設定されます。
  • TimeZone パラメーターは、environment-file-2.yaml で指定されているとおりに Hongkong に設定されます。
  • RabbitFDLimit パラメーターは、environment-file-1.yaml に従って65536 に設定されます。environment-file-2.yaml はこの値を変更しません。

これにより、複数の環境ファイルの値が競合することなくオーバークラウドにカスタム設定を定義することができます。

2.5. カスタムのコア Heat テンプレートの使用

オーバークラウドの作成時に、director は /usr/share/openstack-tripleo-heat-templates にある Heat テンプレートのコアセットを使用します。このコアテンプレートコレクションをカスタマイズするには、git ワークフローで変更をトラッキングして更新をマージしてください。以下の git プロセスを使用すると、カスタムテンプレートコレクションの管理に役立ちます。

カスタムテンプレートコレクションの初期化

以下の手順に従って、Heat テンプレートコレクションを格納する初期 git リポジトリーを作成します。

  1. テンプレートのディレクトリーを stack ユーザーディレクトリーにコピーします。この例では、それを ~/templates ディレクトリーにコピーします。

    $ cd ~/templates
    $ cp -r /usr/share/openstack-tripleo-heat-templates .
  2. カスタムテンプレートのディレクトリーに移動して git リポジトリーを初期化します。

    $ cd openstack-tripleo-heat-templates
    $ git init .
  3. 初期コミットに向けて全テンプレートをステージします。

    $ git add *
  4. 初期コミットを作成します。

    $ git commit -m "Initial creation of custom core heat templates"

最新のコアテンプレートコレクションを格納する初期 master ブランチを作成します。このブランチは、カスタムブランチのベースとして使用し、新規テンプレートバージョンをこのブランチにマージします。

カスタムブランチの作成と変更のコミット

カスタムブランチを使用して、コアテンプレートコレクションの変更を保管します。以下の手順に従って my-customizations ブランチを作成し、カスタマイズを追加します。

  1. my-customizations ブランチを作成して、そのブランチに切り替えます。

    $ git checkout -b my-customizations
  2. カスタムブランチ内のファイルを編集します。
  3. 変更を git にステージします。

    $ git add [edited files]
  4. カスタムブランチに変更をコミットします。

    $ git commit -m "[Commit message for custom changes]"

このコマンドにより、変更がコミットとして my-customizations ブランチに追加されます。master ブランチを更新するには、master から my-customizations にリベースすると、git はこれらのコミットを更新されたテンプレートに追加します。これは、カスタマイズを追跡し、将来のテンプレートの更新時にそれらを再生するのに役立ちます。

カスタムテンプレートコレクションの更新

アンダークラウドを更新すると、openstack-tripleo-heat-templates パッケージも更新される可能性があります。次の手順を使用して、カスタムテンプレートコレクションを更新します。

  1. openstack-tripleo-heat-templates パッケージのバージョンを環境変数として保存します。

    $ export PACKAGE=$(rpm -qv openstack-tripleo-heat-templates)
  2. テンプレートコレクションのディレクトリーに移動して、更新されたテンプレート用に新規ブランチを作成します。

    $ cd ~/templates/openstack-tripleo-heat-templates
    $ git checkout -b $PACKAGE
  3. そのブランチの全ファイルを削除して、新しいバージョンに置き換えます。

    $ git rm -rf *
    $ cp -r /usr/share/openstack-tripleo-heat-templates/* .
  4. 初期コミット用にすべてのテンプレートを追加します。

    $ git add *
  5. パッケージ更新のコミットを作成します。

    $ git commit -m "Updates for $PACKAGE"
  6. このブランチを master にマージします。git 管理システム (例: GitLab) を使用している場合には、管理ワークフローを使用してください。git をローカルで使用している場合には、master ブランチに切り替えてから git merge コマンドを実行してマージします

    $ git checkout master
    $ git merge $PACKAGE

master ブランチに最新のコアテンプレートコレクションが含まれるようになりました。これで、my-customization ブランチを更新されたコレクションからリベースできます。

カスタムブランチのリベース

以下の手順に従って my-customization ブランチを更新します。

  1. my-customizations ブランチに切り替えます。

    $ git checkout my-customizations
  2. このブランチを master からリベースします。

    $ git rebase master

これにより、my-customizations ブランチが更新され、このブランチに追加されたカスタムコミットが再生されます。

リベース中に git で競合が発生した場合には、以下の手順を実行します。

  1. どのファイルで競合が発生しているかを確認します。

    $ git status
  2. 特定したテンプレートファイルで競合を解決します。
  3. 解決したファイルを追加します。

    $ git add [resolved files]
    $ git commit
  4. リベースを続行します。

    $ git rebase --continue

カスタムテンプレートのデプロイメント

以下の手順に従って、カスタムテンプレートコレクションをデプロイします。

  1. my-customization ブランチに切り替わっていることを確認します。

    git checkout my-customizations
  2. openstack overcloud deploy コマンドに --templates オプションを付けて、ローカルのテンプレートディレクトリーを指定して実行します。

    $ openstack overcloud deploy --templates /home/stack/templates/openstack-tripleo-heat-templates [OTHER OPTIONS]
注記

ディレクトリーの指定をせずに --templates オプションを使用すると、director はデフォルトのテンプレートディレクトリー (/usr/share/openstack-tripleo-heat-templates) を使用します。

第3章 パラメーター

director テンプレートコレクション内の各 Heat テンプレートには、parameters セクションがあります。このセクションは、特定のオーバークラウドサービス固有の全パラメーターを定義します。これには、以下が含まれます。

  • overcloud.j2.yaml: デフォルトのベースパラメーター
  • roles_data.yaml: コンポーザブルロールのデフォルトパラメーター
  • puppet/services/*.yaml: 特定のサービスのデフォルトパラメーター

これらのパラメーターの値は、以下の方法で変更することができます。

  1. カスタムパラメーター用の環境ファイルを作成します。
  2. その環境ファイルの parameter_defaults セクションにカスタムのパラメーターを追加します。
  3. openstack overcloud deploy コマンドでその環境ファイルを指定します。

次の数項には、puppet/services ディレクトリー内にあるサービスの特定のパラメーターを設定する方法について、具体的な例を挙げて説明します。

3.1. 例 1: タイムゾーンの設定

タイムゾーンを設定するための Heat テンプレート (puppet/services/time/timezone.yaml) には TimeZone パラメーターが含まれています。TimeZone パラメーターの値を空白のままにすると、オーバークラウドはデフォルトで時刻を UTC に設定します。director はタイムゾーンデータベース /usr/share/zoneinfo/ で定義済みの標準タイムゾーン名を認識します。たとえば、タイムゾーンを Japan に設定するには、/usr/share/zoneinfo の内容を確認して適切なエントリーを特定します。

$ ls /usr/share/zoneinfo/
Africa      Asia       Canada   Cuba   EST      GB       GMT-0      HST      iso3166.tab  Kwajalein  MST      NZ-CHAT   posix       right      Turkey     UTC       Zulu
America     Atlantic   CET      EET    EST5EDT  GB-Eire  GMT+0      Iceland  Israel       Libya      MST7MDT  Pacific   posixrules  ROC        UCT        WET
Antarctica  Australia  Chile    Egypt  Etc      GMT      Greenwich  Indian   Jamaica      MET        Navajo   Poland    PRC         ROK        Universal  W-SU
Arctic      Brazil     CST6CDT  Eire   Europe   GMT0     Hongkong   Iran     Japan        Mexico     NZ       Portugal  PST8PDT     Singapore  US         zone.tab

上記の出力には、タイムゾーンファイルと、追加のタイムゾーンファイルを格納するディレクトリーが一覧表示されています。たとえば、Japan はこの結果では個別のタイムゾーンファイルですが、Africa は追加のタイムゾーンファイルを格納するディレクトリーです。

$ ls /usr/share/zoneinfo/Africa/
Abidjan      Algiers  Bamako  Bissau       Bujumbura   Ceuta    Dar_es_Salaam  El_Aaiun  Harare        Kampala   Kinshasa    Lome        Lusaka  Maseru     Monrovia  Niamey       Porto-Novo  Tripoli
Accra        Asmara   Bangui  Blantyre     Cairo       Conakry  Djibouti       Freetown  Johannesburg  Khartoum  Lagos       Luanda      Malabo  Mbabane    Nairobi   Nouakchott   Sao_Tome    Tunis
Addis_Ababa  Asmera   Banjul  Brazzaville  Casablanca  Dakar    Douala         Gaborone  Juba          Kigali    Libreville  Lubumbashi  Maputo  Mogadishu  Ndjamena  Ouagadougou  Timbuktu    Windhoek

環境ファイルにエントリーを追加して、タイムゾーンを Japan に設定します。

parameter_defaults:
  TimeZone: 'Japan'

3.2. 例 2: レイヤー 3 高可用性 (L3HA) を無効にする

OpenStack Networking (neutron) API (puppet/services/neutron-api.yaml) の Heat テンプレートには、レイヤー 3 高可用性 (L3HA) を有効または無効にするパラメーターが含まれています。このパラメーターのデフォルト値は false です。ただし、環境ファイルで以下の設定を使用して有効にすることができます。

parameter_defaults:
  NeutronL3HA: true

3.3. 例 3: Telemetry Dispatcher の設定

OpenStack Telemetry (ceilometer) サービスには、時系列データストレージ (gnocchi) のコンポーネントが含まれています。puppet/services/ceilometer-base.yaml Heat テンプレートを使用すると、gnocchi と標準データベースを切り替えることができます。これは、次のいずれかに設定する CeilometerMeterDispatcher パラメーターで実現します。

  • gnocchi - Ceilometer ディスパッチャ用の新しい時系列データベースを使用します.以下はデフォルトのオプションになります。
  • database - Ceilometer ディスパッチャ用の標準データベースを使用します。

標準データベースに切り替えるには、環境ファイルに次を追加します。

parameter_defaults:
  CeilometerMeterDispatcher: database

3.4. 例 4: RabbitMQ ファイル記述子の上限の設定

特定の設定では、RabbitMQ サーバーのファイル記述子の上限を高くする必要がある場合があります。puppet/services/rabbitmq.yaml の Heat テンプレートを使用して RabbitFDLimit パラメーターを必要な上限値に設定することができます。以下の設定を環境ファイルに追加します。

parameter_defaults:
  RabbitFDLimit: 65536

3.5. 例 5: パラメーターの有効化および無効化

デプロイメント時にパラメーターを初期設定し、それ以降のデプロイメント操作 (更新またはスケーリング操作など) ではそのパラメーターを無効にしなければならない場合があります。たとえば、オーバークラウドの作成時にカスタム RPM を含めるには、以下のパラメーターを追加します。

parameter_defaults:
  DeployArtifactURLs: ["http://www.example.com/myfile.rpm"]

それ以降のデプロイメントでこのパラメーターを無効にしなければならない場合には、パラメーターを削除するだけでは不十分です。そうではなく、パラメーターに空の値を設定します。

parameter_defaults:
  DeployArtifactURLs: []

これにより、それ以降のデプロイメント操作ではパラメーターは設定されなくなります。

3.6. 変更するパラメーターの特定

Red Hat OpenStack Platform director は、設定用のパラメーターを多数提供しています。場合によっては、設定すべき特定のオプションとそれに対応する director のパラメーターを特定するのが困難なことがあります。director でオプションを設定するには、以下のワークフローに従ってオプションを確認し、特定のオーバークラウドパラメーターにマップしてください。

  1. 設定するオプションを特定します。そのオプションを使用するサービスを書き留めておきます。
  2. このオプションに対応する Puppet モジュールを確認します。Red Hat OpenStack Platform 用の Puppet モジュールは director ノードの /etc/puppet/modules にあります。各モジュールは、特定のサービスに対応しています。たとえば、keystone モジュールは OpenStack Identity (keystone) に対応しています。

    • 選択したオプションを制御する変数が Puppet モジュールに含まれている場合には、次のステップに進んでください。
    • Puppet モジュールに選択したオプションを制御する変数が含まれていない場合には、そのオプションには hieradata は存在しません。可能な場合には、オーバークラウドがデプロイメントを完了した後でオプションを手動で設定することができます。
  3. director のコア Heat テンプレートコレクションに hieradata 形式の Puppet 変数が含まれているかどうかを確認します。puppet/services/* のテンプレートは通常、同じサービスの Puppet モジュールに対応します。たとえば、puppet/services/keystone.yaml テンプレートは、keystone モジュールの hieradata を提供します。

    • Heat テンプレートが Puppet 変数用の hieradata を設定している場合には、そのテンプレートは変更する director ベースのパラメーターも開示する必要があります。
    • Heat テンプレートが Puppet 変数用の hieradata を設定していない場合には、環境ファイルを使用して、設定フックにより hieradata を渡します。hieradata のカスタマイズに関する詳しい情報は、「Puppet: ロール用 hieradata のカスタマイズ」を参照してください。

ワークフローの例

OpenStack Identity (keystone) の通知の形式を変更する必要がある場合があります。ワークフローを使用して、以下の操作を行います。

  1. 設定すべき OpenStack パラメーターを特定します (notification_format)。
  2. keystone Puppet モジュールで notification_format の設定を検索します。以下に例を示します。

    $ grep notification_format /etc/puppet/modules/keystone/manifests/*

    この場合は、keystone モジュールは keystone::notification_format の変数を使用してこのオプションを管理します。

  3. keystone サービステンプレートでこの変数を検索します。以下に例を示します。

    $ grep "keystone::notification_format" /usr/share/openstack-tripleo-heat-templates/puppet/services/keystone.yaml

    このコマンドの出力には、director が KeystoneNotificationFormat パラメーターを使用して keystone::notification_format hieradata を設定していると表示されます。

最終的なマッピングは、以下の表のとおりです。

director のパラメーターPuppet HieradataOpenStack Identity (keystone) のオプション

KeystoneNotificationFormat

keystone::notification_format

notification_format

これは、オーバークラウドの環境ファイルの KeystoneNotificationFormat を設定すると、オーバークラウドの設定中に keystone.conf ファイルの notification_format オプションが設定されることを意味します。

第4章 設定フック

設定フックは、オーバークラウドのデプロイメントプロセスに独自の設定関数を挿入する手段を提供します。これには、メインのオーバークラウドサービスの設定の前後にカスタム設定を挿入するためのフックや、Puppet ベースの設定を変更/追加するためのフックが含まれます。

4.1. 初回起動: 初回起動設定のカスタマイズ

director は、オーバークラウドの初回作成時に全ノードに対して設定を行います。そのために、director は OS::TripleO::NodeUserData リソース種別を使用して呼び出すことのできる cloud-init を使用します。

以下の例では、全ノード上でカスタム IP アドレスを使用してネームサーバーを更新します。各ノードの resolv.conf に特定のネームサーバーを追加するスクリプトを実行するために、まず基本的な heat テンプレート (~/templates/nameserver.yaml) を作成します。OS::TripleO::MultipartMime リソース種別を使用して、この設定スクリプトを送信することができます。

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

resources:
  userdata:
    type: OS::Heat::MultipartMime
    properties:
      parts:
      - config: {get_resource: nameserver_config}

  nameserver_config:
    type: OS::Heat::SoftwareConfig
    properties:
      config: |
        #!/bin/bash
        echo "nameserver 192.168.1.1" >> /etc/resolv.conf

outputs:
  OS::stack_id:
    value: {get_resource: userdata}

次に、OS::TripleO::NodeUserData リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/firstboot.yaml) を作成します。

resource_registry:
  OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml

初回起動の設定を追加するには、最初にオーバークラウドを作成する際に、その他の環境ファイルと共にこの環境ファイルをスタックに追加します。以下に例を示します。

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/firstboot.yaml \
    ...

-e を使用して、オーバークラウドスタックに環境ファイルを適用します。

これにより、ノード作成後の初回起動時に設定がすべてのノードに追加されます。これ以降は (たとえば、オーバークラウドスタックの更新時)、これらのテンプレートを追加してもこれらのスクリプトは実行されません。

重要

OS::TripleO::NodeUserData を登録することができるのは 1 つの Heat テンプレートだけです。別の heat テンプレートに登録すると、使用する heat テンプレートがそのテンプレートに変わります。

4.2. 事前設定: 特定のオーバークラウドロールのカスタマイズ

重要

本書の以前のバージョンでは、OS::TripleO::Tasks::*PreConfig リソースを使用してロールごとに事前設定フックを提供していました。director の Heat テンプレートコレクションでは、これらのフックを特定の用途に使用する必要があるので、これらを個別の用途に使用すべきではありません。その代わりに、以下に概要を示す OS::TripleO::*ExtraConfigPre フックを使用してください。

オーバークラウドは、OpenStack コンポーネントのコア設定に Puppet を使用します。director にはフックのセットが用意されており、初回起動が完了してコア設定が開始する前に、特定ノードロールのカスタム設定が提供されます。これには、以下のフックが含まれます。

OS::TripleO::ControllerExtraConfigPre
Puppet のコア設定前にコントローラーノードに適用される追加の設定
OS::TripleO::ComputeExtraConfigPre
Puppet のコア設定前にコンピュートノードに適用される追加の設定
OS::TripleO::CephStorageExtraConfigPre
Puppet のコア設定前に Ceph Storage ノードに適用される追加の設定
OS::TripleO::ObjectStorageExtraConfigPre
Puppet のコア設定前にオブジェクトストレージノードに適用される追加の設定
OS::TripleO::BlockStorageExtraConfigPre
Puppet のコア設定前にブロックストレージノードに適用される追加の設定
OS::TripleO::[ROLE]ExtraConfigPre
Puppet のコア設定前にカスタムノードに適用される追加の設定。[ROLE] をコンポーザブルロール名に置き換えてください。

以下の例では、まず基本的な Heat テンプレート (/home/stack/templates/nameserver.yaml) を作成します。このテンプレートは、ノードの resolv.conf に変数のネームサーバーを書き込むスクリプトを実行します。

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

parameters:
  server:
    type: string
  nameserver_ip:
    type: string
  DeployIdentifier:
    type: string

resources:
  CustomExtraConfigPre:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" > /etc/resolv.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}

  CustomExtraDeploymentPre:
    type: OS::Heat::SoftwareDeployment
    properties:
      server: {get_param: server}
      config: {get_resource: CustomExtraConfigPre}
      actions: ['CREATE','UPDATE']
      input_values:
        deploy_identifier: {get_param: DeployIdentifier}

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger pre-deploy on changes
    value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}

上記の例では、resources セクションには以下のパラメーターが含まれます。

CustomExtraConfigPre
ここでは、ソフトウェア設定を定義します。上記の例では、Bash スクリプト を定義し、Heat が _NAMESERVER_IP_nameserver_ip パラメーターに保管された値に置き換えます。
CustomExtraDeploymentPre

この設定により、CustomExtraConfigPre リソースで定義したソフトウェア設定を実行します。以下の点に注意してください。

  • config パラメーターは、適用する設定を Heat が理解できるように CustomExtraConfigPre リソースを参照します。
  • server パラメーターは、オーバークラウドノードのマッピングを取得します。これは親テンプレートにより提供されるパラメーターで、このフックのテンプレートには必須です。
  • actions パラメーターは、設定を適用するタイミングを定義します。上記の例では、オーバークラウドが作成または更新された時にのみ設定を適用します。設定可能なアクションは CREATEUPDATEDELETESUSPEND、および RESUME です。
  • input_values では deploy_identifier というパラメーターを定義し、親テンプレートからの DeployIdentifier を格納します。このパラメーターにより、各デプロイメント更新のリソースにタイムスタンプが提供されます。これにより、それ以降のオーバークラウド更新に必ずリソースが再度適用されます。

次に、Heat テンプレートをロールベースのリソース種別に登録する環境ファイル (/home/stack/templates/pre_config.yaml) を作成します。たとえば、コントローラーノードだけに適用するには、ControllerExtraConfigPre フックを使用します。

resource_registry:
  OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml

parameter_defaults:
  nameserver_ip: 192.168.1.1

この設定を適用するには、オーバークラウドの作成時または更新時に、その他の環境ファイルと共にこの環境ファイルをスタックに追加します。以下に例を示します。

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/pre_config.yaml \
    ...

これにより、オーバークラウドの初回作成またはそれ以降の更新において、コア設定前にすべてのコントローラーノードに設定が適用されます。

重要

各リソースを登録することができるのは、1 つのフックにつき 1 つの Heat テンプレートだけです。別の Heat テンプレートに登録すると、使用する Heat テンプレートがそのテンプレートに変わります。

4.3. 事前設定: 全オーバークラウドロールのカスタマイズ

オーバークラウドは、OpenStack コンポーネントのコア設定に Puppet を使用します。director にはフックが用意されており、初回起動が完了してコア設定が開始する前に、すべてのノード種別が設定されます。

OS::TripleO::NodeExtraConfig
Puppet のコア設定前に全ノードロールに適用される追加の設定

以下の例では、各ノードの resolv.conf に変数のネームサーバーを追加するスクリプトを実行するために、まず基本的な Heat テンプレート (/home/stack/templates/nameserver.yaml) を作成します。

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

parameters:
  server:
    type: string
  nameserver_ip:
    type: string
  DeployIdentifier:
    type: string

resources:
  CustomExtraConfigPre:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}

  CustomExtraDeploymentPre:
    type: OS::Heat::SoftwareDeployment
    properties:
      server: {get_param: server}
      config: {get_resource: CustomExtraConfigPre}
      actions: ['CREATE','UPDATE']
      input_values:
        deploy_identifier: {get_param: DeployIdentifier}

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger pre-deploy on changes
    value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}

上記の例では、resources セクションには以下のパラメーターが含まれます。

CustomExtraConfigPre
ここでは、ソフトウェア設定を定義します。上記の例では、Bash スクリプト を定義し、Heat が _NAMESERVER_IP_nameserver_ip パラメーターに保管された値に置き換えます。
CustomExtraDeploymentPre

この設定により、CustomExtraConfigPre リソースで定義したソフトウェア設定を実行します。以下の点に注意してください。

  • config パラメーターは、適用する設定を Heat が理解できるように CustomExtraConfigPre リソースを参照します。
  • server パラメーターは、オーバークラウドノードのマッピングを取得します。これは親テンプレートにより提供されるパラメーターで、このフックのテンプレートには必須です。
  • actions パラメーターは、設定を適用するタイミングを定義します。上記の例では、オーバークラウドが作成または更新された時にのみ設定を適用します。設定可能なアクションは CREATEUPDATEDELETESUSPEND、および RESUME です。
  • input_values パラメーターでは deploy_identifier というサブパラメーターを定義し、親テンプレートからの DeployIdentifier を格納します。このパラメーターにより、各デプロイメント更新のリソースにタイムスタンプが提供されます。これにより、それ以降のオーバークラウド更新に必ずリソースが再度適用されます。

次に、OS::TripleO::NodeExtraConfig リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/pre_config.yaml) を作成します。

resource_registry:
  OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml

parameter_defaults:
  nameserver_ip: 192.168.1.1

この設定を適用するには、オーバークラウドの作成時または更新時に、その他の環境ファイルと共にこの環境ファイルをスタックに追加します。以下に例を示します。

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/pre_config.yaml \
    ...

これにより、オーバークラウドの初回作成またはそれ以降の更新において、コア設定前にすべてのノードに設定が適用されます。

重要

OS::TripleO::NodeExtraConfig を登録することができるのは 1 つの Heat テンプレートだけです。別の Heat テンプレートに登録すると、使用する Heat テンプレートがそのテンプレートに変わります。

4.4. 設定後: 全オーバークラウドロールのカスタマイズ

重要

本書の以前のバージョンでは、OS::TripleO::Tasks::*PostConfig リソースを使用してロールごとに設定後フックを提供していました。director の Heat テンプレートコレクションでは、これらのフックを特定の用途に使用する必要があるので、これらを個別の用途に使用すべきではありません。その代わりに、以下に概要を示す OS::TripleO::NodeExtraConfigPost フックを使用してください。

オーバークラウドの初回作成時または更新時において、オーバークラウドの作成が完了してからすべてのロールに設定の追加が必要となる可能性があります。このような場合には、以下の設定後フックを使用します。

OS::TripleO::NodeExtraConfigPost
Puppet のコア設定後に全ノードロールに適用される追加の設定

以下の例では、各ノードの resolv.conf に変数のネームサーバーを追加するスクリプトを実行するために、まず基本的な Heat テンプレート (/home/stack/templates/nameserver.yaml) を作成します。

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

parameters:
  servers:
    type: json
  nameserver_ip:
    type: string
  DeployIdentifier:
    type: string

resources:
  CustomExtraConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}

  CustomExtraDeployments:
    type: OS::Heat::SoftwareDeploymentGroup
    properties:
      servers:  {get_param: servers}
      config: {get_resource: CustomExtraConfig}
      actions: ['CREATE','UPDATE']
      input_values:
        deploy_identifier: {get_param: DeployIdentifier}

上記の例では、resources セクションには以下のパラメーターが含まれます。

CustomExtraConfig
ここでは、ソフトウェア設定を定義します。上記の例では、Bash スクリプト を定義し、Heat が _NAMESERVER_IP_nameserver_ip パラメーターに保管された値に置き換えます。
CustomExtraDeployments

この設定により、CustomExtraConfig リソースで定義したソフトウェア設定を実行します。以下の点に注意してください。

  • config パラメーターは、適用する設定を Heat が理解できるように CustomExtraConfig リソースを参照します。
  • servers パラメーターは、オーバークラウドノードのマッピングを取得します。これは親テンプレートにより提供されるパラメーターで、このフックのテンプレートには必須です。
  • actions パラメーターは、設定を適用するタイミングを定義します。上記の例では、オーバークラウドが作成または更新された時にのみ設定を適用します。設定可能なアクションは CREATEUPDATEDELETESUSPEND、および RESUME です。
  • input_values では deploy_identifier というパラメーターを定義し、親テンプレートからの DeployIdentifier を格納します。このパラメーターにより、各デプロイメント更新のリソースにタイムスタンプが提供されます。これにより、それ以降のオーバークラウド更新に必ずリソースが再度適用されます。

次に、OS::TripleO::NodeExtraConfigPost: リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/post_config.yaml) を作成します。

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml

parameter_defaults:
  nameserver_ip: 192.168.1.1

この設定を適用するには、オーバークラウドの作成時または更新時に、その他の環境ファイルと共にこの環境ファイルをスタックに追加します。以下に例を示します。

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/post_config.yaml \
    ...

これにより、オーバークラウドの初回作成またはそれ以降の更新において、コア設定後にすべてのノードに設定が適用されます。

重要

OS::TripleO::NodeExtraConfigPost を登録することができるのは 1 つの Heat テンプレートだけです。別の Heat テンプレートに登録すると、使用する Heat テンプレートがそのテンプレートに変わります。

4.5. Puppet: ロール用 hieradata のカスタマイズ

Heat テンプレートコレクションには、特定のノード種別に追加の設定を渡すためのパラメーターセットが含まれています。これらのパラメーターでは、ノードの Puppet 設定用 hieradata として設定を保存します。これらのパラメーターは以下のとおりです。

ControllerExtraConfig
すべてのコントローラーノードに追加する設定
NovaComputeExtraConfig
すべてのコンピュートノードに追加する設定
BlockStorageExtraConfig
すべてのブロックストレージノードに追加する設定
ObjectStorageExtraConfig
すべてのオブジェクトストレージノードに追加する設定
CephStorageExtraConfig
すべての Ceph Storage ノードに追加する設定
[ROLE]ExtraConfig
コンポーザブルロールに追加する設定。[ROLE] をコンポーザブルロール名に置き換えてください。
ExtraConfig
すべてのノードに追加する設定

デプロイ後の設定プロセスに設定を追加するには、parameter_defaults セクションにこれらのパラメーターが記載された環境ファイルを作成します。たとえば、コンピュートホストに確保するメモリーを 1024 MB に増やし VNC キーマップを日本語に指定するには、以下のように設定します。

parameter_defaults:
  NovaComputeExtraConfig:
    nova::compute::reserved_host_memory: 1024
    nova::compute::vnc_keymap: ja

openstack overcloud deploy を実行する際に、この環境ファイルを指定します。

重要

それぞれのパラメーターを定義できるのは一度だけです。さらに定義すると、以前の値が上書きされます。

4.6. Puppet: 個別のノードの Hieradata のカスタマイズ

Heat テンプレートコレクションを使用して、個別のノードの Puppet hieradata を設定することができます。そのためには、ノードのイントロスペクションデータの一部として保存されているシステム UUID を取得する必要があります。

$ openstack baremetal introspection data save 9dcc87ae-4c6d-4ede-81a5-9b20d7dc4a14 | jq .extra.system.product.uuid

このコマンドは、システム UUID を出力します。以下に例を示します。

"F5055C6C-477F-47FB-AFE5-95C6928C407F"

このシステム UUID は、ノード固有の hieradata を定義して per_node.yaml テンプレートを事前設定フックに登録する環境ファイルで使用します。以下に例を示します。

resource_registry:
  OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml
parameter_defaults:
  NodeDataLookup: '{"F5055C6C-477F-47FB-AFE5-95C6928C407F": {"nova::compute::vcpu_pin_set": [ "2", "3" ]}}'

openstack overcloud deploy を実行する際に、この環境ファイルを指定します。

per_node.yaml テンプレートは、各システム UUID に対応するノード上に heiradata ファイルのセットを生成して、定義した hieradata を含めます。UUID が定義されていない場合には、生成される hieradata ファイルは空になります。上記の例では、per_node.yaml テンプレートは (OS::TripleO::ComputeExtraConfigPre フックに従って) 全コンピュートノード上で実行されますが、システム UUID が F5055C6C-477F-47FB-AFE5-95C6928C407F のコンピュートノードのみが hieradata を受け取ります。

これにより、特定の要件に応じて各ノードを調整することができます。

4.7. Puppet: カスタムのマニフェストの適用

特定の状況では、追加のコンポーネントをオーバークラウドノードにインストールして設定する必要がある場合があります。これには、カスタムの Puppet マニフェストを使用して、主要な設定が完了してからノードに適用します。基本的な例として、各ノードに motd をインストールするとします。そのためにはまず、Puppet 設定を起動する Heat テンプレート (/home/stack/templates/custom_puppet_config.yaml) を作成します。

heat_template_version: 2014-10-16

description: >
  Run Puppet extra configuration to set new MOTD

parameters:
  servers:
    type: json

resources:
  ExtraPuppetConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      config: {get_file: motd.pp}
      group: puppet
      options:
        enable_hiera: True
        enable_facter: False

  ExtraPuppetDeployments:
    type: OS::Heat::SoftwareDeploymentGroup
    properties:
      config: {get_resource: ExtraPuppetConfig}
      servers: {get_param: servers}

これは、テンプレート内に /home/stack/templates/motd.pp を追加し、設定するノードに渡します。motd.pp ファイル自体には、motd のインストールと設定を行うための Puppet クラスが含まれています。

次に、OS::TripleO::NodeExtraConfigPost: リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/templates/puppet_post_config.yaml) を作成します。

resource_registry:
  OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yaml

最後に、オーバークラウドのスタックが作成または更新されたら、その他の環境ファイルと共にこの環境ファイルを含めます。

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/puppet_post_config.yaml \
    ...

これにより、motd.pp からの設定がオーバークラウド内の全ノードに適用されます。

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

オーバークラウドは、Red Hat コンテンツ配信ネットワーク、Red Hat Satellite 5 サーバー、または Red Hat Satellite 6 サーバーのいずれかにノードを登録する方法を提供します。

5.1. 環境ファイルを使用したオーバークラウドの登録

登録ファイルを Heat テンプレートコレクションからコピーします。

$ cp -r /usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration ~/templates/.

~/templates/rhel-registration/environment-rhel-registration.yaml を編集し、登録方法と詳細に合わせて次の値を変更します。

rhel_reg_method
登録の方法を選択します。portalsatellite、または disable のいずれかです。
rhel_reg_type
登録するユニットの種別。system として登録するには空欄のままにします。
rhel_reg_auto_attach
互換性のあるサブスクリプションをこのシステムに自動的にアタッチします。有効にするには、true に設定します。この機能を無効にするには、環境ファイルからこのパラメーターを削除します。
rhel_reg_service_level
自動アタッチに使用するサービスレベル。
rhel_reg_release
このパラメーターを使用して、自動アタッチメント用のリリースバージョンを設定します。Red Hat Subscription Manager からのデフォルトを使用するには、空欄のままにします。
rhel_reg_pool_id
使用するサブスクリプションプール ID。サブスクリプションを自動でアタッチしない場合には、このパラメーターを使用してください。この ID を特定するには、アンダークラウドノードから sudo subscription-manager list --available --all --matches="*OpenStack*" を実行して、出力される Pool ID 値を使用します。
rhel_reg_sat_url
オーバークラウドノードを登録する Satellite Server のベース URLこのパラメーターには、HTTPS URL ではなく、Satellite の HTTP URL を使用します。たとえば、https://satellite.example.com ではなく http://satellite.example.com を使用します。オーバークラウドの作成プロセスではこの URL を使用して、どのサーバーが Red Hat Satellite 5 または Red Hat Satellite 6 サーバーであるかを判断します。Red Hat Satellite 6 サーバーの場合は、オーバークラウドは katello-ca-consumer-latest.noarch.rpm ファイルを取得して subscription-manager に登録し、katello-agent をインストールします。Red Hat Satellite 5 サーバーの場合にはオーバークラウドは RHN-ORG-TRUSTED-SSL-CERT ファイルを取得して rhnreg_ks に登録します。
rhel_reg_server_url
使用するサブスクリプションサービスのホスト名。デフォルトは、カスタマーポータルのサブスクリプション管理 subscription.rhn.redhat.com です。このオプションを使用しない場合、システムはカスタマーポータルのサブスクリプション管理に登録されます。サブスクリプションサーバーの URL は、https://hostname:port/prefix の形式を使用します。
rhel_reg_base_url
更新を受け取るのに使用するコンテンツ配信サーバーのホスト名を指定します。デフォルトは https://cdn.redhat.com です。Satellite 6 は独自のコンテンツをホストするため、URL は Satellite 6 で登録されているシステムに使用する必要があります。コンテンツのベース URL は、https://hostname:port/prefix の形式を使用します。
rhel_reg_org
登録に使用する組織。この ID を特定するには、アンダークラウドノードから sudo subscription-manager orgs を実行します。プロンプトが表示されたら、Red Hat の認証情報を入力して、出力される Key 値を使用します。
rhel_reg_environment
選択した組織内で使用する環境。
rhel_reg_repos
有効化するリポジトリーのコンマ区切りリスト
rhel_reg_activation_key
登録に使用するアクティベーションキー
rhel_reg_user、rhel_reg_password
登録用のユーザー名とパスワード。可能な場合には、登録用のアクティベーションキーを使用します。
rhel_reg_machine_name
マシン名。ノードのホスト名を使用するには、これを空白のままにします。
rhel_reg_force
登録オプションを強制するには、true に設定します。たとえば、ノードを再登録する場合。
rhel_reg_sat_repo
katello-agent などの Red Hat Satellite 6 の管理ツールを含むリポジトリー。Red Hat Satellite のバージョンに対応する正しいリポジトリー名を確認し、リポジトリーが Satellite Server で同期されていることを確認します。たとえば、rhel-7-server-satellite-tools-6.2-rpms は Red Hat Satellite 6.2 に対応します。

デプロイメントコマンド (openstack overcloud deploy) は、-e オプションを使用して環境ファイルを追加します。~/templates/rhel-registration/environment-rhel-registration.yaml~/templates/rhel-registration/rhel-registration-resource-registry.yaml の両方を追加します。以下に例を示します。

$ openstack overcloud deploy --templates [...] -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml -e /home/stack/templates/rhel-registration/rhel-registration-resource-registry.yaml
重要

登録は、OS::TripleO::NodeExtraConfig Heat リソースとして設定されます。これは、このリソースを登録のみに使用できることを意味します。詳しくは、「事前設定: 特定のオーバークラウドロールのカスタマイズ」を参照してください。

5.2. 例 1: カスタマーポータルへの登録

以下の設定により、my-openstack アクティベーションキーを使用してオーバークラウドノードを Red Hat カスタマーポータルに登録し、1a85f9223e3d5e43013e3d6e8ff506fd のプールをサブスクライブします。

parameter_defaults:
  rhel_reg_auto_attach: ""
  rhel_reg_activation_key: "my-openstack"
  rhel_reg_org: "1234567"
  rhel_reg_pool_id: "1a85f9223e3d5e43013e3d6e8ff506fd"
  rhel_reg_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-10-rpms,rhel-7-server-rhceph-2-osd-rpms,rhel-7-server-rhceph-2-mon-rpms,rhel-7-server-rhceph-2-tools-rpms"
  rhel_reg_method: "portal"
  rhel_reg_sat_repo: ""
  rhel_reg_base_url: ""
  rhel_reg_environment: ""
  rhel_reg_force: ""
  rhel_reg_machine_name: ""
  rhel_reg_password: ""
  rhel_reg_release: "7.7"
  rhel_reg_sat_url: ""
  rhel_reg_server_url: ""
  rhel_reg_service_level: ""
  rhel_reg_user: ""
  rhel_reg_type: ""
  rhel_reg_http_proxy_host: ""
  rhel_reg_http_proxy_port: ""
  rhel_reg_http_proxy_username: ""
  rhel_reg_http_proxy_password: ""

5.3. 例 2: Red Hat Satellite 6 Server への登録

以下の設定により、my-openstack アクティベーションキーを使用してオーバークラウドノードを sat6.example.com の Red Hat Satellite 6 Server に登録し、1a85f9223e3d5e43013e3d6e8ff506fd のプールをサブスクライブします。この場合は、アクティベーションキーで有効化するレポジトリーも指定します。

parameter_defaults:
  rhel_reg_activation_key: "my-openstack"
  rhel_reg_org: "1"
  rhel_reg_pool_id: "1a85f9223e3d5e43013e3d6e8ff506fd"
  rhel_reg_method: "satellite"
  rhel_reg_sat_url: "http://sat6.example.com"
  rhel_reg_sat_repo: "rhel-7-server-satellite-tools-6.2-rpms"
  rhel_reg_repos: ""
  rhel_reg_auto_attach: ""
  rhel_reg_base_url: ""
  rhel_reg_environment: ""
  rhel_reg_force: ""
  rhel_reg_machine_name: ""
  rhel_reg_password: ""
  rhel_reg_release: "7.7"
  rhel_reg_server_url: ""
  rhel_reg_service_level: ""
  rhel_reg_user: ""
  rhel_reg_type: ""
  rhel_reg_http_proxy_host: ""
  rhel_reg_http_proxy_port: ""
  rhel_reg_http_proxy_username: ""
  rhel_reg_http_proxy_password: ""

5.4. 例 3: Red Hat Satellite 5 Server への登録

以下の設定により、my-openstack アクティベーションキーを使用してオーバークラウドノードを sat5.example.com の Red Hat Satellite 5 Server に登録し、サブスクリプションを自動的にアタッチします。この場合は、アクティベーションキーで有効化するレポジトリーも指定します。

parameter_defaults:
  rhel_reg_auto_attach: ""
  rhel_reg_activation_key: "my-openstack"
  rhel_reg_org: "1"
  rhel_reg_method: "satellite"
  rhel_reg_sat_url: "http://sat5.example.com"
  rhel_reg_repos: ""
  rhel_reg_base_url: ""
  rhel_reg_environment: ""
  rhel_reg_force: ""
  rhel_reg_machine_name: ""
  rhel_reg_password: ""
  rhel_reg_pool_id: ""
  rhel_reg_release: "7.7"
  rhel_reg_server_url: ""
  rhel_reg_service_level: ""
  rhel_reg_user: ""
  rhel_reg_type: ""
  rhel_reg_sat_repo: ""
  rhel_reg_http_proxy_host: ""
  rhel_reg_http_proxy_port: ""
  rhel_reg_http_proxy_username: ""
  rhel_reg_http_proxy_password: ""

第6章 Composable Services and Custom Roles

オーバークラウドは通常、コントローラーノード、コンピュートノード、異なるストレージノード種別など、事前定義されたロールのノードで設定されます。これらのデフォルトの各ロールには、director ノード上にあるコアの Heat テンプレートコレクションで定義されているサービスセットが含まれます。ただし、コアの Heat テンプレートのアーキテクチャーは、以下のような設定を行う手段を提供します。

  • カスタムロールの作成
  • 各ロールへのサービスの追加と削除

本章では、カスタムロールのアーキテクチャー、コンポーザブルサービス、およびそれらを使用する方法について説明します。

ガイドラインおよび制限事項

コンポーザブルノードのアーキテクチャーには、以下のガイドラインおよび制限事項があることに注意してください。

  • サポートされているスタンドアロンカスタムロールに任意の systemd マネージドサービスを割り当てることができます。
  • Pacemaker マネージドサービスを分割することはできません。これは、Pacemaker がオーバークラウドクラスター内の各ノードで同じサービスセットを管理するためです。Pacemaker マネージドサービスを分割すると、クラスターのデプロイエラーが発生する可能性があります。これらのサービスは、コントローラーのロールのままにしておく必要があります。
  • Red Hat OpenStack Platform 9 から 10 へのアップグレードプロセス中に、カスタムロールおよびコンポーザブルサービスに変更することはできません。アップグレードスクリプトは、デフォルトのオーバークラウドロールにのみ対応できます。
  • 初回のデプロイメント後に追加のカスタムロールを作成してそれらをデプロイし、既存のサービスをスケーリングすることができます。
  • オーバクラウドのデプロイ後には、ロールのサービスリストを変更することはできません。オーバークラウドのデプロイ後にサービスリストを変更すると、デプロイでエラーが発生して、ノード上に孤立したサービスが残ってしまう可能性があります。

サポートされているカスタムロールアーキテクチャー

カスタムロールとコンポーザブルサービスは Red Hat OpenStack Platform 10 の新機能であり、限られた数のコンポーザブルサービスの組み合わせのみが、この初期段階でテストおよび検証されています。Red Hat は、カスタムロールとコンポーザブルサービスを使用する場合、次のアーキテクチャーをサポートします。

アーキテクチャー 1 - モノリシックコントローラー
すべての Controller サービスが単一の Controller ロールに含まれます。これがデフォルトです。詳細は、「サービスアーキテクチャー: モノリシックコントローラー」 を参照してください。
アーキテクチャー 2 - スプリットコントローラー

コントローラーサービスは、次の 2 つのロールに分割されます。

  • コントローラー PCMK - データベースやロードバランシングなどのコア Pacemaker マネージドサービス
  • Controller Systemd - systemd で管理される OpenStack Platform サービス

詳細は、「サービスアーキテクチャー: スプリットコントローラー」 を参照してください。

アーキテクチャー 3 - スタンドアロンのロール
OpenStack Platform サービスをカスタムロールに分割する場合を除いて、アーキテクチャー 1 またはアーキテクチャー 2 を使用します。詳細は、「サービスアーキテクチャー: スタンドアロンロール」 を参照してください。

6.1. カスタムロールアーキテクチャーの調査

オーバークラウドの作成プロセスでは、ロールデータを含むテンプレートを使用してそのロールを定義します。デフォルトのテンプレートは /usr/share/openstack-tripleo-heat-templates/roles_data.yaml にあり、すべてのデフォルトのロールタイプ (ControllerComputeBlockStorageObjectStorage、および CephStorage) を定義します。

重要

カスタムの roles_data.yaml ファイルを作成する場合は、Controller のロールを常に最初に定義する必要があります。このロールは、プライマリーロールとして扱われます。

それぞれのロールには以下のパラメーターが含まれます。

name
(必須) 空白または特殊文字を含まないプレーンテキスト形式のロール名。選択した名前により、他のリソースとの競合が発生しないことを確認します。たとえば、Network の代わりに Networker を名前に使用します。ロール名に関する推奨事項については、たとえば 「サービスアーキテクチャー: スプリットコントローラー」 を参照してください。
CountDefault
(任意) このロールにデプロイするデフォルトのノード数を定義します。
HostnameFormatDefault

(任意) このロールに対するホスト名のデフォルトの形式を定義します。デフォルトの命名規則では、以下の形式が使用されます。

[STACK NAME]-[ROLE NAME]-[NODE ID]

たとえば、コントローラーノード名はデフォルトで以下のように命名されます。

overcloud-controller-0
overcloud-controller-1
overcloud-controller-2
...
ServicesDefault
(任意) ノード上で追加するデフォルトのサービス一覧を定義します。詳しくは、「コンポーザブルサービスアーキテクチャーの考察」を参照してください。

これらのオプションは、新しいロールを作成し、含めるサービスを定義する手段を提供します。

openstack overcloud deploy コマンドは、roles_data.yaml ファイルのパラメーターを overcloud.j2.yaml Heat テンプレートに統合します。特定の時点で overcloud.j2.yaml heat テンプレートは roles_data.yaml のロールの一覧を繰り返し適用し、対応する各ロール固有のパラメーターとリソースを作成します。

たとえば、overcloud.j2.yaml Heat テンプレートの各ロールのリソースの定義は、以下のスニペットのようになります。

  {{role.name}}:
    type: OS::Heat::ResourceGroup
    depends_on: Networks
    properties:
      count: {get_param: {{role.name}}Count}
      removal_policies: {get_param: {{role.name}}RemovalPolicies}
      resource_def:
        type: OS::TripleO::{{role.name}}
        properties:
          CloudDomain: {get_param: CloudDomain}
          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
...

このスニペットには、Jinja2 ベースのテンプレートが {{role.name}} の変数を組み込み、各ロール名を OS::Heat::ResourceGroup リソースとして定義しているのが示されています。これは、次に roles_data.yaml のそれぞれの name パラメーターを使用して、対応する各 OS::Heat::ResourceGroup リソースを命名します。

6.2. コンポーザブルサービスアーキテクチャーの考察

コアの Heat テンプレートコレクションには、puppet/services サブディレクトリーに設定可能なサービステンプレートのコレクションが含まれています。これらのサービスは、次のコマンドで表示できます。

$ ls /usr/share/openstack-tripleo-heat-templates/puppet/services

各サービステンプレートには、その目的を識別する説明が含まれています。たとえば、keystone.yaml サービステンプレートには、次の説明が含まれています。

description: >
 OpenStack Identity (`keystone`) service configured with Puppet

これらのサービステンプレートは、Red Hat OpenStack Platform デプロイメント固有のリソースとして登録されます。これは、overcloud-resource-registry-puppet.j2.yaml ファイルで定義されている一意な Heat リソース名前空間を使用して、各リソースを呼び出すことができることを意味します。サービスはすべて、リソース種別に OS::TripleO::Services 名前空間を使用します。たとえば、keystone.yaml サービステンプレートは OS::TripleO::Services::Keystone リソースタイプに登録されます。

grep "OS::TripleO::Services::Keystone" /usr/share/openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.j2.yaml
  OS::TripleO::Services::Keystone: puppet/services/keystone.yaml

overcloud.j2.yaml Heat テンプレートには、roles_data.yaml ファイル内の各カスタムロールのサービス一覧を定義するための Jinja2-based コードのセクションが含まれています。

{{role.name}}Services:
  description: A list of service resources (configured in the Heat
               resource_registry) which represent nested stacks
               for each service that should get installed on the {{role.name}} role.
  type: comma_delimited_list
  default: {{role.ServicesDefault|default([])}}

デフォルトのロールの場合は、これにより次のサービス一覧パラメーターが作成されます: ControllerServicesComputeServicesBlockStorageServicesObjectStorageServicesCephStorageServices

roles_data.yaml ファイル内の各カスタムロールのデフォルトのサービスを定義します。たとえば、デフォルトの Controller ロールには、以下の内容が含まれます。

- name: Controller
  CountDefault: 1
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::Core
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
...

これらのサービスは、次に ControllerServices パラメーターのデフォルト一覧として定義されます。

環境ファイルを使用してサービスパラメーターのデフォルト一覧を上書きすることもできます。たとえば、環境ファイルで ControllerServicesparameter_default として定義して、roles_data.yaml ファイルからのサービス一覧を上書きすることができます。

6.3. 無効化されたサービスの有効化

一部のサービスはデフォルトで無効化されています。これらのサービスは、overcloud-resource-registry-puppet.j2.yaml ファイルで null 操作 (OS::Heat::None) として登録されます。たとえば、Block Storage のバックアップサービス (cinder-backup) は無効化されています。

  OS::TripleO::Services::CinderBackup: OS::Heat::None

このサービスを有効化するには、puppet/services ディレクトリー内の対応する Heat テンプレートにリソースをリンクする環境ファイルを追加します。一部のサービスには、environments ディレクトリー内に事前定義済みの環境ファイルがあります。たとえば、Block Storage のバックアップサービスは、以下のような内容を含む environments/cinder-backup.yaml ファイルを使用します。

resource_registry:
  OS::TripleO::Services::CinderBackup: ../puppet/services/pacemaker/cinder-backup.yaml
...

これにより、デフォルトの null 操作のリソースが上書きされ、これらのサービスが有効になります。openstack overcloud deploy コマンドの実行時に、この環境ファイルを指定します。

$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml
ヒント

無効なサービスを有効にする方法の別の例については、OpenStack のデータ処理 ガイドの インストール セクションを参照してください。この項には、オーバークラウドで OpenStack Data Processing サービス (sahara) を有効にする手順が記載されています。

6.4. ロールへのサービスの追加と削除

サービスの追加と削除の基本的な方法では、ノードロールのデフォルトサービス一覧のコピーを作成してからサービスを追加/削除します。たとえば、OpenStack Orchestration (heat) をコントローラーノードから削除するケースを考えます。この場合、デフォルトの roles_data.yaml ファイルのカスタムコピーを作成します。

$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ~/templates/roles_data-no_heat.yaml

roles_data ファイルを編集し、コントローラーの ServicesDefault パラメーターのサービスリストを変更します。OpenStack Orchestration のサービスまでスクロールしてそれらを削除します。

    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::HeatApi            # Remove this service
    - OS::TripleO::Services::HeatApiCfn         # Remove this service
    - OS::TripleO::Services::HeatApiCloudwatch  # Remove this service
    - OS::TripleO::Services::HeatEngine         # Remove this service
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::NeutronDhcpAgent

openstack overcloud deploy コマンドを実行する際には、この新しい roles_data ファイルを指定します。以下に例を示します。

$ openstack overcloud deploy --templates -r ~/templates/roles_data-no_heat.yaml

このコマンドにより、コントローラーノードには OpenStack Orchestration のサービスがインストールされない状態でオーバークラウドがデプロイされます。

注記

また、カスタムの環境ファイルを使用して、roles_data ファイル内のサービスを無効にすることもできます。無効にするサービスを OS::Heat::None リソースにリダイレクトします。以下に例を示します。

resource_registry:
  OS::TripleO::Services::HeatApi: OS::Heat::None
  OS::TripleO::Services::HeatApiCfn: OS::Heat::None
  OS::TripleO::Services::HeatApiCloudwatch: OS::Heat::None
  OS::TripleO::Services::HeatEngine: OS::Heat::None

6.5. 新しいロールの作成

この例の目的は、OpenStack Networking (neutron) エージェントのみをホストする新しい Networker ロールを作成することです。この状況では、新しいロール情報を含むカスタム roles_data ファイルを作成します。

デフォルトの roles_data.yaml ファイルのカスタムコピーを作成します。

$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ~/templates/roles_data-network_node.yaml

新しい roles_data ファイルを編集し、基本およびコアの OpenStack Networking サービスを含む新しい Networker ロールを作成します。以下に例を示します。

- name: Networker
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-networker-%index%'
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::VipHosts

また、CountDefault1 に設定して、デフォルトのオーバークラウドには常にネットワークノードが含まれるようにした方がよいでしょう。

既存のオーバークラウド内でサービスをスケーリングする場合には、既存のサービスを Controller ロール上に保持します。新しいオーバークラウドを作成し、OpenStack Networking エージェントのみをスタンドアロンロールに残したい場合は、コントローラーロールの定義から OpenStack Networking エージェントを削除します。

- name: Controller
  CountDefault: 1
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::Core
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::NeutronDhcpAgent       # Remove this service
    - OS::TripleO::Services::NeutronL3Agent         # Remove this service
    - OS::TripleO::Services::NeutronMetadataAgent   # Remove this service
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronOvsAgent        # Remove this service
    - OS::TripleO::Services::RabbitMQ
...

このロールに新しいフレーバーを定義して、特定のノードをタグ付けできるようにする必要がある場合があります。この例では、次のコマンドを使用して Networker フレーバーを作成します。

$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 networker
$ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="networker" networker

以下のコマンドを実行して、ノードを新規フレーバーにタグ付けします。

$ openstack baremetal node set --property capabilities='profile:networker,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13

次の環境ファイルスニペットを使用して、Networker ノード数とフレーバーを定義します。

parameter_defaults:
  OvercloudNetworkerFlavor: networker
  NetworkerCount: 1

openstack overcloud deploy コマンドの実行時には、新しい roles_data ファイルと環境ファイルを指定します。以下に例を示します。

$ openstack overcloud deploy --templates -r ~/templates/roles_data-network_node.yaml -e ~/templates/node-count-flavor.yaml

デプロイメントが完了すると、コントローラーノードが 1 台、コンピュートノードが 1 台、ネットワーカーノードが 1 台の 3 ノード設定のオーバークラウドが作成されます。オーバークラウドのノード一覧を表示するには、以下のコマンドを実行します。

$ nova list

6.6. サービスなしの汎用ノードの作成

Red Hat OpenStack Platform では、OpenStack サービスを一切設定しない汎用の Red Hat Enterprise Linux 7 ノードを作成することができます。これは、コアの Red Hat OpenStack Platform 環境外でソフトウェアをホストする必要がある場合に役立ちます。たとえば、OpenStack Platform は、Kibana や Sensu などのモニタリングツールとの統合を提供します (12章モニタリングツールの設定)。Red Hat は、それらのモニターリングツールに対するサポートは提供しませんが、director では、それらのツールをホストする汎用の Red Hat Enterprise Linux 7 ノードの作成が可能です。

注記

汎用ノードは、ベースの Red Hat Enterprise Linux 7 イメージではなく、ベースの overcloud-full イメージを引き続き使用します。これは、ノードには何らかの Red Hat OpenStack Platform ソフトウェアがインストールされていますが、有効化または設定されていないことを意味します。

汎用ノードを作成するには、ServicesDefault 一覧なしの新規ロールが必要です。

- name: Generic

カスタムの roles_data ファイル (roles_data_with_generic.yaml) にそのロールを追加します。既存の Controller ロールと Compute ロールは必ず維持してください。

また、プロビジョニングするノードを選択する際には、必要な汎用 Red Hat Enterprise Linux 7 ノード数とフレーバーを指定する環境ファイル (generic-node-params.yaml) も追加することができます。以下に例を示します。

parameter_defaults:
  OvercloudGenericFlavor: baremetal
  GenericCount: 1

openstack overcloud deploy コマンドを実行する際に、ロールのファイルと環境ファイルの両方を指定します。以下に例を示します。

$ openstack overcloud deploy --templates -r ~/templates/roles_data_with_generic.yaml -e ~/templates/generic-node-params.yaml

このコマンドにより、コントローラーノードが 1 台、コンピュートノードが 1 台、汎用 Red Hat Enterprise Linux 7 ノードが 1 台の 3 ノード設定の環境がデプロイされます。

6.7. ハイパーコンバージドコンピューティングサービスと Ceph サービスの作成

重要

ハイパーコンバージドコンピューティングおよび Ceph サービスは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat サービスレベルアグリーメント (SLA) では完全にサポートされておらず、機能的に完全でない可能性があり、実稼働環境での使用を目的とはしていません。ですが、近々発表予定のプロダクトイノベーションをリリースに先駆けてご提供することで、お客様には機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。テクノロジープレビューとしてマークされた機能のサポート範囲の詳細については、https://access.redhat.com/support/offerings/techpreview/ を参照してください。

Ceph OSD サービスは通常、独自の Ceph Storage ノードで実行されます。ただし、コンポーザブルサービスは、代わりにコンピュートノードで Ceph OSD サービスを設定する方法を提供します。

たとえば、各ロールのデフォルトのサービスリストには次のものが含まれます。

コンピュートノード

- name: Compute
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-novacompute-%index%'
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::NovaCompute
    - OS::TripleO::Services::NovaLibvirt
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::ComputeNeutronCorePlugin
    - OS::TripleO::Services::ComputeNeutronOvsAgent
    - OS::TripleO::Services::ComputeCeilometerAgent
    - OS::TripleO::Services::ComputeNeutronL3Agent
    - OS::TripleO::Services::ComputeNeutronMetadataAgent
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::NeutronSriovAgent
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

Ceph Storage ノード

- name: CephStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephOSD
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

Ceph Storage ロールには Compute ロールに共通のサービスが含まれているため、それらは無視できます。OS::TripleO::Services::CephOSD という 1 つのサービスが残ります。

デフォルトの roles_data ファイルのカスタムバージョンを作成します。

$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ~/templates/roles_data-ceph_osd_on_compute.yaml

ファイルを編集して、OS::TripleO::Services::CephOSD を Compute のサービスリストに追加します。

- name: Compute
  CountDefault: 1
  HostnameFormatDefault: '%stackname%-novacompute-%index%'
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephOSD
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::NovaCompute
    - OS::TripleO::Services::NovaLibvirt
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::ComputeNeutronCorePlugin
    - OS::TripleO::Services::ComputeNeutronOvsAgent
    - OS::TripleO::Services::ComputeCeilometerAgent
    - OS::TripleO::Services::ComputeNeutronL3Agent
    - OS::TripleO::Services::ComputeNeutronMetadataAgent
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::NeutronSriovAgent
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts

OS::TripleO::Services::CephExternal サービスをコンピュートサービスリストから安全に削除することもできます。これは、オーバークラウドが外部の Ceph Storage クラスターと統合されていないためです。

openstack overcloud deploy コマンドを実行するときに、このロールファイルを含めます。以下に例を示します。

$ openstack overcloud deploy --templates -r ~/templates/roles_data-ceph_osd_on_compute.yaml -e ~/template/storage-environment.yaml

このコマンドには、ストレージ用のカスタム環境ファイル (storage-environment.yaml) も含まれていることに注意してください。これには、Ceph Storage に固有のパラメーターが含まれています。

オーバークラウドのデプロイ後、コンピュートノードに Ceph OSD がインストールされていることを確認します。コンピュートノードにログインし、次を実行します。

[root@overcloud-novacompute-0 ~]# ps ax | grep ceph
17437 ?    Ss   0:00 /bin/bash -c ulimit -n 32768; /usr/bin/ceph-osd -i 0 --pid-file /var/run/ceph/osd.0.pid -c /etc/ceph/ceph.conf --cluster ceph -f
17438 ?    Sl   0:00 /usr/bin/ceph-osd -i 0 --pid-file /var/run/ceph/osd.0.pid -c /etc/ceph/ceph.conf --cluster ceph -f

6.8. サービスアーキテクチャー: モノリシックコントローラー

コンポーザブルサービスのデフォルトアーキテクチャーは、コアの Red Hat OpenStack Platform Services を含むモノリシックコントローラーを使用します。これらのデフォルトサービスは、director の Heat テンプレートコレクション (/usr/share/openstack-tripleo-heat-templates/roles_data.yaml) に含まれるロールファイルで定義されます。

重要

一部のサービスはデフォルトで無効化されています。これらのサービスを有効にする方法については、「無効化されたサービスの有効化」 を参照してください。

- name: Controller
  ServicesDefault:
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::AodhApi
    - OS::TripleO::Services::AodhEvaluator
    - OS::TripleO::Services::AodhListener
    - OS::TripleO::Services::AodhNotifier
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CeilometerAgentCentral
    - OS::TripleO::Services::CeilometerAgentNotification
    - OS::TripleO::Services::CeilometerApi
    - OS::TripleO::Services::CeilometerCollector
    - OS::TripleO::Services::CeilometerExpirer
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::GnocchiApi
    - OS::TripleO::Services::GnocchiMetricd
    - OS::TripleO::Services::GnocchiStatsd
    - OS::TripleO::Services::HAproxy
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine
    - OS::TripleO::Services::Horizon
    - OS::TripleO::Services::IronicApi
    - OS::TripleO::Services::IronicConductor
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keepalived
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::ManilaApi
    - OS::TripleO::Services::ManilaBackendCephFs
    - OS::TripleO::Services::ManilaBackendGeneric
    - OS::TripleO::Services::ManilaBackendNetapp
    - OS::TripleO::Services::ManilaScheduler
    - OS::TripleO::Services::ManilaShare
    - OS::TripleO::Services::Memcached
    - OS::TripleO::Services::MongoDb
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronCorePluginML2OVN
    - OS::TripleO::Services::NeutronCorePluginMidonet
    - OS::TripleO::Services::NeutronCorePluginNuage
    - OS::TripleO::Services::NeutronCorePluginOpencontrail
    - OS::TripleO::Services::NeutronCorePluginPlumgrid
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent
    - OS::TripleO::Services::NovaApi
    - OS::TripleO::Services::NovaConductor
    - OS::TripleO::Services::NovaConsoleauth
    - OS::TripleO::Services::NovaIronic
    - OS::TripleO::Services::NovaScheduler
    - OS::TripleO::Services::NovaVncProxy
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::OpenDaylightApi
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::Pacemaker
    - OS::TripleO::Services::RabbitMQ
    - OS::TripleO::Services::Redis
    - OS::TripleO::Services::SaharaApi
    - OS::TripleO::Services::SaharaEngine
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::SwiftProxy
    - OS::TripleO::Services::SwiftRingBuilder
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts

6.9. サービスアーキテクチャー: スプリットコントローラー

コントローラーノードのサービスを 2 つの別個のロールに分割できます。

  • コントローラー PCMK - データベースやロードバランシングなど、Pacemaker が管理するコアサービスのみが含まれます。
  • コントローラー systemd - すべての OpenStack サービスが含まれています

残りのデフォルトのロール (Compute、Ceph Storage、Object Storage、Block Storage) は影響を受けません。

分割コントローラーアーキテクチャーを作成するためのガイドとして、次の表を使用してください。

重要

一部のサービスはデフォルトで無効化されています。これらのサービスを有効にする方法については、「無効化されたサービスの有効化」 を参照してください。

コントローラー PCMK

次のサービスは、コントローラー PCMK ロールに必要な最小限のサービスです。

- name: Controller
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::HAproxy
    - OS::TripleO::Services::Keepalived
    - OS::TripleO::Services::ManilaBackendGeneric
    - OS::TripleO::Services::ManilaBackendNetapp
    - OS::TripleO::Services::ManilaBackendCephFs
    - OS::TripleO::Services::ManilaShare
    - OS::TripleO::Services::Memcached
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::Pacemaker
    - OS::TripleO::Services::RabbitMQ
    - OS::TripleO::Services::Redis

コントローラー systemd

次の表は、コントローラーの systemd ロールで利用できるサービスを表しています。

- name: ControllerSystemd
  ServicesDefault:
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::AodhApi
    - OS::TripleO::Services::AodhEvaluator
    - OS::TripleO::Services::AodhListener
    - OS::TripleO::Services::AodhNotifier
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CeilometerAgentCentral
    - OS::TripleO::Services::CeilometerAgentNotification
    - OS::TripleO::Services::CeilometerApi
    - OS::TripleO::Services::CeilometerCollector
    - OS::TripleO::Services::CeilometerExpirer
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
    - OS::TripleO::Services::GnocchiApi
    - OS::TripleO::Services::GnocchiMetricd
    - OS::TripleO::Services::GnocchiStatsd
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine
    - OS::TripleO::Services::Horizon
    - OS::TripleO::Services::IronicApi
    - OS::TripleO::Services::IronicConductor
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::ManilaApi
    - OS::TripleO::Services::ManilaScheduler
    - OS::TripleO::Services::MongoDb
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronCorePluginML2OVN
    - OS::TripleO::Services::NeutronCorePluginMidonet
    - OS::TripleO::Services::NeutronCorePluginNuage
    - OS::TripleO::Services::NeutronCorePluginOpencontrail
    - OS::TripleO::Services::NeutronCorePluginPlumgrid
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent
    - OS::TripleO::Services::NovaApi
    - OS::TripleO::Services::NovaConductor
    - OS::TripleO::Services::NovaConsoleauth
    - OS::TripleO::Services::NovaIronic
    - OS::TripleO::Services::NovaScheduler
    - OS::TripleO::Services::NovaVncProxy
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::OpenDaylightApi
    - OS::TripleO::Services::OpenDaylightOvs
    - OS::TripleO::Services::SaharaApi
    - OS::TripleO::Services::SaharaEngine
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::SwiftProxy
    - OS::TripleO::Services::SwiftRingBuilder
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts

6.10. サービスアーキテクチャー: スタンドアロンロール

以下の表は、サポートされているカスタムロールコレクションを示しています。これにより、Red Hat OpenStack Platform のコンポーザブルサービスアーキテクチャーを使用して作成およびスケーリングできます。これらのコレクションを個別のロールとしてグループ化し、それらを使用して、以前のアーキテクチャーと組み合わせてサービスを分離および分割します。

重要

一部のサービスはデフォルトで無効化されています。これらのサービスを有効にする方法については、「無効化されたサービスの有効化」 を参照してください。

すべてのロールは、次のような一連の 共通サービス を使用することに注意してください。

  • OS::TripleO::Services::CACerts
  • OS::TripleO::Services::FluentdClient
  • OS::TripleO::Services::Kernel
  • OS::TripleO::Services::Ntp
  • OS::TripleO::Services::SensuClient
  • OS::TripleO::Services::Sshd
  • OS::TripleO::Services::Snmp
  • OS::TripleO::Services::Timezone
  • OS::TripleO::Services::TripleoFirewall
  • OS::TripleO::Services::TripleoPackages
  • OS::TripleO::Services::VipHosts

オーバークラウドに含めるロールを選択したら、関連するサービス (共通サービス を除く) をメインの Controller ロールから削除します。たとえば、スタンドアロンを作成する場合 KeystoneOS::TripleO::Services::Apache および OS::TripleO::Services::Keystone サービスをコントローラーノードから削除します。唯一の例外は、カスタムロールのサポートが制限されているサービスです (表6.1「カスタムロールのサポート」)。

次の表のロールをクリックして、関連付けられているサービスを表示します。

表6.1 カスタムロールのサポート

ロールサポートステータス

Ceph Storage Monitor

サポート対象

Ceph Storage OSD

サポート対象

Ceph Storage RadosGW

限定される分割する場合、このサービスは コントローラー systemd ロールの一部である必要があります。

Cinder API

サポート対象

コントローラー PCMK

サポート対象

Glance

サポート対象

heat

サポート対象

Horizon

サポート対象

Ironic

限定される分割する場合、このサービスは コントローラー systemd ロールの一部である必要があります。

Keystone

サポート対象

Manila

限定される分割する場合、このサービスは コントローラー systemd ロールの一部である必要があります。

Networker

サポート対象

Neutron API

サポート対象

Nova

サポート対象

Nova コンピュート

サポート対象

OpenDaylight

テクニカルプレビュー

Sahara

限定される分割する場合、このサービスは コントローラー systemd ロールの一部である必要があります。

Swift API

サポート対象

Swift Storage

サポート対象

Telemetry

サポート対象

Ceph Storage Monitor

以下のサービスは、Ceph Storage Monitor を設定します。

- name: CephMon
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephMon

Ceph Storage OSD

以下のサービスは、Ceph Storage OSD を設定します。

- name: CephStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephOSD

Ceph Storage RadosGW

以下のサービスは、Ceph Storage RadosGW を設定します。これらのサービスを分離する場合、コントローラー systemd ロールの一部である必要があります。

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CephClient

Cinder API

以下のサービスは、OpenStack Block Storage API を設定します。

- name: CinderApi
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderScheduler

コントローラー PCMK

次のサービスは、コントローラー PCMK ロールに必要な最小限のサービスです。

- name: ControllerPcmk
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::HAproxy
    - OS::TripleO::Services::Keepalived
    - OS::TripleO::Services::ManilaBackendGeneric
    - OS::TripleO::Services::ManilaBackendNetapp
    - OS::TripleO::Services::ManilaBackendCephFs
    - OS::TripleO::Services::ManilaShare
    - OS::TripleO::Services::Memcached
    - OS::TripleO::Services::MySQL
    - OS::TripleO::Services::Pacemaker
    - OS::TripleO::Services::RabbitMQ
    - OS::TripleO::Services::Redis
    - OS::TripleO::Services::VipHosts

Glance

以下のサービスは、OpenStack Image サービスを設定します。

- name: Glance
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry

heat

以下のサービスは、OpenStack Orchestration サービスを設定します。

- name: Heat
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::HeatApi
    - OS::TripleO::Services::HeatApiCfn
    - OS::TripleO::Services::HeatApiCloudwatch
    - OS::TripleO::Services::HeatEngine

Horizon

次のサービスは、OpenStack ダッシュボードを設定します。

- name: Horizon
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::Horizon

Ironic

次のサービスは、OpenStack Bare Metal Provisioning サービスを設定します。これらのサービスを分離する場合、コントローラー systemd ロールの一部である必要があります。

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::IronicApi
    - OS::TripleO::Services::IronicConductor
    - OS::TripleO::Services::NovaIronic

Keystone

以下のサービスは、OpenStack Identity サービスを設定します。マイナー更新を実行する場合は、他のサービスを更新する前に、このロールを更新してください。

- name: Keystone
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::Keystone

Manila

以下のサービスは、OpenStack Shared File Systems サービスを設定します。これらのサービスを分離する場合、コントローラー systemd ロールの一部である必要があります。

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::ManilaApi
    - OS::TripleO::Services::ManilaScheduler

Networker

以下のサービスは、OpenStack Networking エージェントを設定します。

- name: Networker
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::NeutronDhcpAgent
    - OS::TripleO::Services::NeutronL3Agent
    - OS::TripleO::Services::NeutronMetadataAgent
    - OS::TripleO::Services::NeutronOvsAgent

Neutron API

以下のサービスは、OpenStack Networking API を設定します。

- name: NeutronApi
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::NeutronApi
    - OS::TripleO::Services::NeutronCorePlugin
    - OS::TripleO::Services::NeutronCorePluginML2OVN
    - OS::TripleO::Services::NeutronCorePluginMidonet
    - OS::TripleO::Services::NeutronCorePluginNuage
    - OS::TripleO::Services::NeutronCorePluginOpencontrail
    - OS::TripleO::Services::NeutronCorePluginPlumgrid

Nova

以下のサービスは、OpenStack Compute サービスを設定します。

- name: Nova
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::NovaApi
    - OS::TripleO::Services::NovaConductor
    - OS::TripleO::Services::NovaConsoleauth
    - OS::TripleO::Services::NovaScheduler
    - OS::TripleO::Services::NovaVncProxy

Nova コンピュート

以下のサービスは、OpenStack コンピュートノードを設定します。

- name: Compute
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::CephClient
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::ComputeCeilometerAgent
    - OS::TripleO::Services::ComputeNeutronCorePlugin
    - OS::TripleO::Services::ComputeNeutronL3Agent
    - OS::TripleO::Services::ComputeNeutronMetadataAgent
    - OS::TripleO::Services::ComputeNeutronOvsAgent
    - OS::TripleO::Services::NeutronSriovAgent
    - OS::TripleO::Services::NovaCompute
    - OS::TripleO::Services::NovaLibvirt
    - OS::TripleO::Services::OpenDaylightOvs

OpenDaylight

次のサービスは、OpenDayLight を設定します。これらのサービスは、Red Hat OpenStack Platform 10 のテクニカルプレビューです

- name: Opendaylight
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::OpenDaylightApi
    - OS::TripleO::Services::OpenDaylightOvs

Sahara

以下のサービスは、OpenStack Clustering サービスを設定します。これらのサービスを分離する場合は、コントローラーの systemd ロールの一部である必要があります。

    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::SaharaApi
    - OS::TripleO::Services::SaharaEngine

Swift API

以下のサービスは、OpenStack Object Storage API を設定します。

- name: SwiftApi
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::SwiftProxy
    - OS::TripleO::Services::SwiftRingBuilder

Swift Storage

以下のサービスは、OpenStack Object Storage サービスを設定します。

- name: ObjectStorage
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::SwiftRingBuilder
    - OS::TripleO::Services::SwiftStorage

Telemetry

以下のサービスは、OpenStack Telemetry サービスを設定します。

- name: Telemetry
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Ntp
    - OS::TripleO::Services::SensuClient
    - OS::TripleO::Services::Sshd
    - OS::TripleO::Services::Snmp
    - OS::TripleO::Services::Timezone
    - OS::TripleO::Services::TripleoFirewall
    - OS::TripleO::Services::TripleoPackages
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::Apache
    - OS::TripleO::Services::AodhApi
    - OS::TripleO::Services::AodhEvaluator
    - OS::TripleO::Services::AodhListener
    - OS::TripleO::Services::AodhNotifier
    - OS::TripleO::Services::CeilometerAgentCentral
    - OS::TripleO::Services::CeilometerAgentNotification
    - OS::TripleO::Services::CeilometerApi
    - OS::TripleO::Services::CeilometerCollector
    - OS::TripleO::Services::CeilometerExpirer
    - OS::TripleO::Services::GnocchiApi
    - OS::TripleO::Services::GnocchiMetricd
    - OS::TripleO::Services::GnocchiStatsd
    - OS::TripleO::Services::MongoDb

6.11. コンポーザブルサービスリファレンス

以下の表には、Red Hat OpenStack Platform で利用可能なすべてのコンポーザブルサービスのリストが含まれています。

重要

一部のサービスはデフォルトで無効化されています。これらのサービスを有効にする方法については、「無効化されたサービスの有効化」 を参照してください。

Service説明

OS::TripleO::Services::AodhApi

Puppet で設定された OpenStack Telemetry Alarming (aodh) API サービス

OS::TripleO::Services::AodhEvaluator

Puppet で設定された OpenStack Telemetry Alarming (aodh) Evaluator サービス

OS::TripleO::Services::AodhListener

Puppet で設定された OpenStack Telemetry Alarming (aodh) Listener サービス

OS::TripleO::Services::AodhNotifier

Puppet で設定された OpenStack Telemetry Alarming (aodh) Notifier サービス

OS::TripleO::Services::Apache

Puppet で設定された Apache サービス。これは通常、Apache を介して実行される他のサービスに自動的に含まれることに注意してください。

OS::TripleO::Services::CACerts

Puppet で設定された HAProxy サービス

OS::TripleO::Services::CeilometerAgentCentral

Puppet で設定された OpenStack Telemetry (ceilometer) Central Agent サービス

OS::TripleO::Services::CeilometerAgentNotification

Puppet で設定された OpenStack Telemetry (ceilometer) Notification Agent サービス

OS::TripleO::Services::CeilometerApi

Puppet で設定された OpenStack Telemetry (ceilometer) API サービス

OS::TripleO::Services::CeilometerCollector

Puppet で設定された OpenStack Telemetry (ceilometer) Collector サービス

OS::TripleO::Services::CeilometerExpirer

Puppet で設定された OpenStack Telemetry (ceilometer) Expirer サービス

OS::TripleO::Services::CephClient

(デフォルトでは無効) Ceph クライアントサービス

OS::TripleO::Services::CephExternal

(デフォルトでは無効) Ceph 外部サービス

OS::TripleO::Services::CephMon

(デフォルトでは無効) Ceph Monitor サービス

OS::TripleO::Services::CephOSD

(デフォルトでは無効) Ceph OSD サービス

OS::TripleO::Services::CinderApi

Puppet で設定された OpenStack Block Storage (cinder) API サービス

OS::TripleO::Services::CinderBackup

(デフォルトでは無効) OpenStack Block Storage (cinder) Puppet で設定されたバックアップサービス

OS::TripleO::Services::CinderScheduler

Puppet で設定された OpenStack Block Storage (cinder) Scheduler サービス

OS::TripleO::Services::CinderVolume

Puppet で設定された OpenStack Block Storage (cinder) ボリュームサービス (Pacemaker 管理)

OS::TripleO::Services::ComputeCeilometerAgent

Puppet で設定された OpenStack Telemetry (ceilometer) Compute Agent サービス

OS::TripleO::Services::ComputeNeutronCorePlugin

Puppet で設定された OpenStack Networking (neutron) ML2 プラグイン

OS::TripleO::Services::ComputeNeutronL3Agent

(デフォルトでは無効) OpenStack Networking (neutron) DVR 対応の L3 エージェント Puppet で設定されたコンピュートノード

OS::TripleO::Services::ComputeNeutronMetadataAgent

(デフォルトでは無効) OpenStack Networking (neutron) Puppet で設定されたメタデータエージェント

OS::TripleO::Services::ComputeNeutronOvsAgent

Puppet で設定された OpenStack Networking (neutron) OVS エージェント

OS::TripleO::Services::FluentdClient

(デフォルトでは無効) Puppet で設定された Fluentd クライアント

OS::TripleO::Services::GlanceApi

Puppet で設定された OpenStack Image (glance) API サービス

OS::TripleO::Services::GlanceRegistry

Puppet で設定された OpenStack Image (glance) レジストリーサービス

OS::TripleO::Services::GnocchiApi

Puppet で設定された OpenStack Telemetry Metrics (gnocchi) サービス

OS::TripleO::Services::GnocchiMetricd

Puppet で設定された OpenStack Telemetry Metrics (gnocchi) サービス

OS::TripleO::Services::GnocchiStatsd

Puppet で設定された OpenStack Telemetry Metrics (gnocchi) サービス

OS::TripleO::Services::HAproxy

Puppet で設定された HAProxy サービス (Pacemaker によって管理される)

OS::TripleO::Services::HeatApi

Puppet で設定された OpenStack Orchestration (heat) API サービス

OS::TripleO::Services::HeatApiCfn

Puppet で設定された OpenStack Orchestration (heat) CloudFormation API サービス

OS::TripleO::Services::HeatApiCloudwatch

Puppet で設定された OpenStack オーケストレーション (heat) CloudWatch API サービス

OS::TripleO::Services::HeatEngine

Puppet で設定された OpenStack Orchestration (heat) Engine サービス

OS::TripleO::Services::Horizon

Puppet で設定された OpenStack ダッシュボード (horizon) サービス

OS::TripleO::Services::IronicApi

(デフォルトで無効) Puppet で設定された OpenStack Bare Metal Provisioning (ironic) API

OS::TripleO::Services::IronicConductor

(デフォルトでは無効) Puppet で設定された OpenStack Bare Metal Provisioning (ironic) コンダクター

OS::TripleO::Services::Keepalived

Puppet で設定された Keepalived サービス

OS::TripleO::Services::Kernel

kmod でカーネルモジュールをロードし、sysctl でカーネルオプションを設定する

OS::TripleO::Services::ManilaApi

(デフォルトでは無効) Puppet で設定された OpenStack Shared File Systems (manila) API サービス

OS::TripleO::Services::ManilaScheduler

(デフォルトでは無効) OpenStack Shared File Systems (manila) Puppet で設定された Scheduler サービス

OS::TripleO::Services::ManilaShare

(デフォルトでは無効) OpenStack Shared File Systems (manila) Puppet で設定された共有サービス

OS::TripleO::Services::Keystone

Puppet で設定された OpenStack Identity (keystone) サービス

OS::TripleO::Services::Memcached

Puppet で設定された Memcached サービス

OS::TripleO::Services::MongoDb

puppet を使用した MongoDB サービスのデプロイ

OS::TripleO::Services::MySQL

puppet を使用した MySQL (Pacemaker マネージド) サービスのデプロイ

OS::TripleO::Services::NeutronApi

Puppet で設定された OpenStack Networking (neutron) サーバー

OS::TripleO::Services::NeutronCorePlugin

Puppet で設定された OpenStack Networking (neutron) ML2 プラグイン

OS::TripleO::Services::NeutronCorePluginML2OVN

Puppet で設定された OpenStack Networking (neutron) ML2/OVN プラグイン

OS::TripleO::Services::NeutronCorePluginMidonet

OpenStack Networking (neutron) Midonet プラグインとサービス

OS::TripleO::Services::NeutronCorePluginNuage

OpenStack Networking (neutron) Nuage プラグイン

OS::TripleO::Services::NeutronCorePluginOpencontrail

OpenStack Networking (neutron) Opencontrail プラグイン

OS::TripleO::Services::NeutronCorePluginPlumgrid

OpenStack Networking (neutron) Plumgrid プラグイン

OS::TripleO::Services::NeutronDhcpAgent

Puppet で設定された OpenStack Networking (neutron) DHCP エージェント

OS::TripleO::Services::NeutronL3Agent

Puppet で設定された OpenStack Networking (neutron) L3 エージェント

OS::TripleO::Services::NeutronMetadataAgent

Puppet で設定された OpenStack Networking (neutron) メタデータエージェント

OS::TripleO::Services::NeutronOvsAgent

Puppet で設定された OpenStack Networking (neutron) OVS エージェント

OS::TripleO::Services::NeutronServer

Puppet で設定された OpenStack Networking (neutron) サーバー

OS::TripleO::Services::NeutronSriovAgent

(デフォルトでは無効) Puppet で設定された OpenStack Neutron SR-IOV NIC エージェント

OS::TripleO::Services::NovaApi

Puppet で設定された OpenStack Compute (nova) API サービス

OS::TripleO::Services::NovaCompute

Puppet で設定された OpenStack Compute (nova) Compute サービス

OS::TripleO::Services::NovaConductor

Puppet で設定された OpenStack Compute (nova) Conductor サービス

OS::TripleO::Services::NovaConsoleauth

Puppet で設定された OpenStack Compute (nova) Consoleauth サービス

OS::TripleO::Services::NovaIronic

(デフォルトでは無効) Puppet で設定され、Ironic を使用する OpenStack Compute (nova) サービス

OS::TripleO::Services::NovaLibvirt

Puppet で設定された Libvirt サービス

OS::TripleO::Services::NovaScheduler

Puppet で設定された OpenStack Compute (nova) スケジューラーサービス

OS::TripleO::Services::NovaVncProxy

Puppet で設定された OpenStack Compute (nova) Vncproxy サービス

OS::TripleO::Services::Ntp

Puppet を使用した NTP サービスのデプロイ。

OS::TripleO::Services::OpenDaylight

(デフォルトでは無効) OpenDaylight SDN コントローラー

OS::TripleO::Services::OpenDaylightOvs

(デフォルトでは無効) OpenDaylight OVS 設定

OS::TripleO::Services::Pacemaker

Puppet で設定された Pacemaker サービス

OS::TripleO::Services::RabbitMQ

Puppet で設定された RabbitMQ サービス (Pacemaker で管理)

OS::TripleO::Services::Redis

Puppet で設定された OpenStack Redis サービス

OS::TripleO::Services::SaharaApi

(デフォルトでは無効) Puppet で設定された OpenStack Clustering (sahara) API サービス

OS::TripleO::Services::SaharaEngine

(デフォルトでは無効) OpenStack Clustering (sahara) Puppet で設定されたエンジンサービス

OS::TripleO::Services::SensuClient

(デフォルトでは無効) Puppet で設定された Sensu クライアント

OS::TripleO::Services::Sshd

(デフォルトで無効) SSH デーモン設定。デフォルトのサービスとして含まれています。

OS::TripleO::Services::Snmp

アンダークラウドでの Ceilometer ハードウェアの監視を容易にするために、Puppet で設定された SNMP クライアント。このサービスは、ハードウェア監視を有効にするために必要です。

OS::TripleO::Services::SwiftProxy

OpenStack Object Storage (swift) Puppet で設定されたプロキシーサービス

OS::TripleO::Services::SwiftRingBuilder

OpenStack オブジェクトストレージ (swift) Ringbuilder

OS::TripleO::Services::SwiftStorage

Puppet で設定された OpenStack Object Storage (swift) サービス

OS::TripleO::Services::Timezone

コンポーザブルタイムゾーンサービス

OS::TripleO::Services::TripleoFirewall

ファイアウォールの設定

OS::TripleO::Services::TripleoPackages

パッケージのインストール設定

第7章 ネットワークの分離

director は、分離されたオーバークラウドネットワークを設定する方法を提供します。これは、オーバークラウド環境がネットワークトラフィックのタイプを異なるネットワークに分離し、ネットワークトラフィックを特定のネットワークインターフェイスまたはボンドに割り当てることを意味します。隔離されたネットワークを設定した後、director は、隔離されたネットワークを使用するように OpenStack サービスを設定します。隔離されたネットワークが設定されていない場合、すべてのサービスはプロビジョニングネットワークで実行されます。

この例では、すべてのサービスに個別のネットワークを使用しています。

  • ネットワーク 1: プロビジョニング
  • ネットワーク 2: 内部 API
  • ネットワーク 3: テナントネットワーク
  • ネットワーク 4: ストレージ
  • ネットワーク 5: ストレージ管理
  • ネットワーク 6 - 管理
  • ネットワーク 7: External および Floating IP (オーバークラウドの作成後にマッピング)

この例では、各オーバークラウドノードは、ボンディング内の 2 つのネットワークインターフェイスを使用して、タグ付き VLAN 内のネットワークにサービスを提供します。この結合には、次のネットワーク割り当てが適用されます。

表7.1 ネットワークサブネットと VLAN の割り当て

ネットワーク種別

サブネット

VLAN

内部 API

172.16.0.0/24

201

テナント

172.17.0.0/24

202

ストレージ

172.18.0.0/24

203

ストレージ管理

172.19.0.0/24

204

管理

172.20.0.0/24

205

External: Floating IP

10.1.1.0/24

100

7.1. カスタムインターフェイステンプレートの作成

オーバークラウドのネットワーク設定には、ネットワークインターフェイスのテンプレートセットが必要です。これらのテンプレートをカスタマイズして、ロールごとにノードインターフェイスを設定します。これらのテンプレートは YAML 形式の標準の heat テンプレートです (「Heat テンプレート」 を参照してください)。director には、開始するためのサンプルテンプレートのセットが含まれています。

  • /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans - ロールごとに VLAN 設定を持つ単一の NIC のテンプレートを含むディレクトリー。
  • /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans - ロールごとに結合された NIC 設定のテンプレートを含むディレクトリー。
  • /usr/share/openstack-tripleo-heat-templates/network/config/multiple-nics - ロールごとに 1 つの NIC を使用する複数の NIC 設定のテンプレートを含むディレクトリー。
  • /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-linux-bridge-vlans - Open vSwitch ブリッジの代わりに Linux ブリッジを使用し、ロールベースに VLAN を使用した単一 NIC の設定を行うためのテンプレートが含まれるディレクトリーです。
注記

これらの例には、デフォルトロールのテンプレートのみが含まれています。カスタムロールのネットワークインターフェイス設定を定義するには、これらのテンプレートをベースとして使用します。

この例では、デフォルトの結合 NIC の設定例をベースとして使用します。/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans にあるバージョンをコピーします。

$ cp -r /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans ~/templates/nic-configs

これにより、ロールごとにボンディングされたネットワークインターフェイス設定を定義する Heat テンプレートのローカルセットが作成されます。各テンプレートには、標準の parametersresources、および output セクションが含まれています。この例では、resources セクションのみを編集します。各 resources セクションは以下のヘッダーで始まります。

resources:
OsNetConfigImpl:
  type: OS::Heat::StructuredConfig
  properties:
    group: os-apply-config
    config:
      os_net_config:
        network_config:

これにより、os-apply-config コマンドと os-net-config サブコマンドのリクエストが作成され、ノードのネットワークプロパティーが設定されます。network_config セクションには、タイプに基づいた順序で配置されたカスタムインターフェイス設定が含まれます。これには、次のものが含まれます。

interface

単一のネットワークインターフェイスを定義します。この設定では、実際のインターフェイス名 (eth0、eth1、enp0s25) または番号付きのインターフェイス (nic1、nic2、nic3) を使用して各インターフェイスを定義します。

          - type: interface
            name: nic2
vlan

VLAN を定義します。parameters セクションから渡された VLAN ID およびサブネットを使用します。

          - type: vlan
            vlan_id: {get_param: ExternalNetworkVlanID}
            addresses:
              - ip_netmask: {get_param: ExternalIpSubnet}
ovs_bond

Open vSwitch で、複数の インターフェイス を結合するボンディングを定義します。これにより、冗長性や帯域幅が向上します。

          - type: ovs_bond
            name: bond1
            members:
            - type: interface
              name: nic2
            - type: interface
              name: nic3
ovs_bridge

Open vSwitch で、複数の interfaceovs_bondvlan オブジェクトを接続するブリッジを定義します。

          - type: ovs_bridge
            name: {get_input: bridge_name}
            members:
              - type: ovs_bond
                name: bond1
                members:
                  - type: interface
                    name: nic2
                    primary: true
                  - type: interface
                    name: nic3
              - type: vlan
                device: bond1
                vlan_id: {get_param: ExternalNetworkVlanID}
                addresses:
                  - ip_netmask: {get_param: ExternalIpSubnet}
linux_bond

複数の インターフェイス を結合する Linux ボンディングを定義します。これにより、冗長性や帯域幅が向上します。bonding_options パラメーターには、カーネルベースのボンディングオプションを指定するようにしてください。Linux ボンディングオプションの詳細については、次を参照してください。 4.5.1.結合モジュールディレクティブRed Hat Enterprise Linux 7 ネットワークガイドに記載されています。

            - type: linux_bond
              name: bond1
              members:
              - type: interface
                name: nic2
              - type: interface
                name: nic3
              bonding_options: "mode=802.3ad"
linux_bridge

複数の interfacelinux_bondvlan オブジェクトを接続する Linux ブリッジを定義します。

            - type: linux_bridge
              name: bridge1
              addresses:
                - ip_netmask:
                    list_join:
                      - '/'
                      - - {get_param: ControlPlaneIp}
                        - {get_param: ControlPlaneSubnetCidr}
              members:
                - type: interface
                  name: nic1
                  primary: true
            - type: vlan
              vlan_id: {get_param: ExternalNetworkVlanID}
              device: bridge1
              addresses:
                - ip_netmask: {get_param: ExternalIpSubnet}
              routes:
                - ip_netmask: 0.0.0.0/0
                  default: true
                  next_hop: {get_param: ExternalInterfaceDefaultRoute}

これらの各項目のパラメーターの完全なリストについては、付録C ネットワークインターフェイスパラメーター を参照してください。

この例では、デフォルトの結合インターフェイス設定を使用します。たとえば、/home/stack/templates/nic-configs/controller.yaml テンプレートは次の network_config を使用します。

resources:
  OsNetConfigImpl:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        os_net_config:
          network_config:
            - type: interface
              name: nic1
              use_dhcp: false
              addresses:
                - ip_netmask:
                    list_join:
                      - '/'
                      - - {get_param: ControlPlaneIp}
                        - {get_param: ControlPlaneSubnetCidr}
              routes:
                - ip_netmask: 169.254.169.254/32
                  next_hop: {get_param: EC2MetadataIp}
            - type: ovs_bridge
              name: {get_input: bridge_name}
              dns_servers: {get_param: DnsServers}
              members:
                - type: ovs_bond
                  name: bond1
                  ovs_options: {get_param: BondInterfaceOvsOptions}
                  members:
                    - type: interface
                      name: nic2
                      primary: true
                    - type: interface
                      name: nic3
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: ExternalNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: ExternalIpSubnet}
                  routes:
                    - default: true
                      next_hop: {get_param: ExternalInterfaceDefaultRoute}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: InternalApiNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: InternalApiIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: StorageNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: StorageIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: StorageMgmtNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: StorageMgmtIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: TenantNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: TenantIpSubnet}
                - type: vlan
                  device: bond1
                  vlan_id: {get_param: ManagementNetworkVlanID}
                  addresses:
                    - ip_netmask: {get_param: ManagementIpSubnet}
注記

管理ネットワークセクションは、ネットワークインターフェイスの Heat テンプレートでコメント化されています。管理ネットワークを有効にするには、このセクションのコメントを外します。

このテンプレートは、ブリッジ (通常は br-ex という名前の外部ブリッジ) を定義し、2 つの番号付きインターフェイス (nic2 および nic3) から bond1 という結合インターフェイスを作成します。ブリッジには、bond1 を親デバイスとして使用するタグ付き VLAN デバイスも多数含まれています。テンプレートには、ディレクター (nic1) に接続するインターフェイスも含まれています。

ネットワークインターフェイステンプレートのその他の例については、付録B ネットワークインターフェイステンプレートの例 を参照してください。

これらのパラメーターの多くは get_param 関数を使用していることに注意してください。これらは、ネットワーク専用に作成した環境ファイルで定義します。

重要

未使用のインターフェイスは、不要なデフォルトルートやネットワークループを引き起こす可能性があります。たとえば、テンプレートには、OpenStack サービスの IP 割り当てを使用せずに DHCP やデフォルトルートを使用するネットワークインターフェイス (nic4) が含まれている場合があります。ネットワークの競合を回避するには、ovs_bridge デバイスから未使用のインターフェイスをすべて削除し、DHCP とデフォルトのルート設定を無効にします。

- type: interface
  name: nic4
  use_dhcp: false
  defroute: false

7.2. ネットワーク環境ファイルの作成

ネットワーク環境ファイルは、オーバークラウドのネットワーク環境を記述し、前のセクションのネットワークインターフェイス設定テンプレートを指す Heat 環境ファイルです。IP アドレス範囲と合わせてネットワークのサブネットおよび VLAN を定義します。また、これらの値をローカルの環境用にカスタマイズします。

director には、作業を開始するためのサンプル環境ファイルのセットが含まれています。各環境ファイルは、/usr/share/openstack-tripleo-heat-templates/network/config/ 内のネットワークインターフェイスファイルの例に対応しています。

  • /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml - single-nic-vlans) ネットワークインターフェイスディレクトリー内の VLAN 設定を持つ単一 NIC の環境ファイルの例。外部ネットワークを無効にする (net-single-nic-with-vlans-no-external.yaml) または IPv6 を有効にする (net-single-nic-with-vlans-v6.yaml) 環境ファイルも利用できます。
  • /usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml - bond-with-vlans ネットワークインターフェイスディレクトリー内のボンディングされた NIC 設定の環境ファイルの例。外部ネットワークを無効にする (net-bond-with-vlans-no-external.yaml) または IPv6 を有効にする (net-bond-with-vlans-v6.yaml) 環境ファイルも利用できます。
  • /usr/share/openstack-tripleo-heat-templates/environments/net-multiple-nics.yaml - multiple-nics ネットワークインターフェイスディレクトリー内の複数 NIC 設定の環境ファイルの例。IPv6 を有効にするための環境ファイル (net-multiple-nics-v6.yaml) も用意されています。
  • /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-linux-bridge-with-vlans.yaml - Open vSwitch ブリッジの代わりに Linux ブリッジを使用した VLAN 設定の単一 NIC の環境ファイルの例これは、single-nic-linux-bridge-vlans ネットワークインターフェイスディレクトリーを使用します。

このシナリオでは、変更されたバージョンの /usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml ファイルを使用します。このファイルを stack ユーザーの templates ディレクトリーにコピーしてください。

$ cp /usr/share/openstack-tripleo-heat-templates/environments/net-bond-with-vlans.yaml /home/stack/templates/network-environment.yaml

環境ファイルには、次の変更されたセクションが含まれています。

resource_registry:
  OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/cinder-storage.yaml
  OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
  OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
  OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/swift-storage.yaml
  OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/ceph-storage.yaml

parameter_defaults:
  InternalApiNetCidr: 172.16.0.0/24
  TenantNetCidr: 172.17.0.0/24
  StorageNetCidr: 172.18.0.0/24
  StorageMgmtNetCidr: 172.19.0.0/24
  ManagementNetCidr: 172.20.0.0/24
  ExternalNetCidr: 10.1.1.0/24
  InternalApiAllocationPools: [{'start': '172.16.0.10', 'end': '172.16.0.200'}]
  TenantAllocationPools: [{'start': '172.17.0.10', 'end': '172.17.0.200'}]
  StorageAllocationPools: [{'start': '172.18.0.10', 'end': '172.18.0.200'}]
  StorageMgmtAllocationPools: [{'start': '172.19.0.10', 'end': '172.19.0.200'}]
  ManagementAllocationPools: [{'start': '172.20.0.10', 'end': '172.20.0.200'}]
  # Leave room for floating IPs in the External allocation pool
  ExternalAllocationPools: [{'start': '10.1.1.10', 'end': '10.1.1.50'}]
  # Set to the router gateway on the external network
  ExternalInterfaceDefaultRoute: 10.1.1.1
  # Gateway router for the provisioning network (or Undercloud IP)
  ControlPlaneDefaultRoute: 192.0.2.254
  # The IP address of the EC2 metadata server. Generally the IP of the Undercloud
  EC2MetadataIp: 192.0.2.1
  # Define the DNS servers (maximum 2) for the overcloud nodes
  DnsServers: ["8.8.8.8","8.8.4.4"]
  InternalApiNetworkVlanID: 201
  StorageNetworkVlanID: 202
  StorageMgmtNetworkVlanID: 203
  TenantNetworkVlanID: 204
  ManagementNetworkVlanID: 205
  ExternalNetworkVlanID: 100
  NeutronExternalNetworkBridge: "''"
  # Customize bonding options if required
  BondInterfaceOvsOptions:
    "bond_mode=balance-slb"

resource_registry セクションには、各ノードロールのカスタムネットワークインターフェイステンプレートへの変更されたリンクが含まれています。次の形式を使用して、このセクションにカスタムロールのネットワークインターフェイステンプレートへのリンクも含めます。

  • OS::TripleO::[ROLE]::Net::SoftwareConfig: [FILE]

ROLE をロール名に、FILE をネットワークインターフェイステンプレートの場所に置き換えます。

parameter_defaults セクションには、各ネットワーク種別のネットワークオプションを定義するパラメーター一覧が含まれます。これらのオプションの完全なリファレンスについては、次を参照してください。付録A ネットワーク環境オプション .

このシナリオでは、各ネットワークのオプションを定義します。すべてのネットワークタイプは、IP アドレスをホストと仮想 IP に割り当てるために使用される個別の VLAN とサブネットを使用します。上記の例では、内部 API ネットワークの割り当てプールは 172.16.0.10 から始まり、VLAN 201 を使用して 172.16.0.200 まで続きます。これにより、環境内で VLAN 201 を使用しているときに、172.16.0.10 から 172.16.0.200 までの静的および仮想 IP が割り当てられます。

外部ネットワークは、Horizon ダッシュボードとパブリック API をホストします。クラウド管理とフローティング IP の両方に外部ネットワークを使用する場合は、IP のプールを VM インスタンスのフローティング IP として使用する余地があることを確認してください。この例では、10.1.1.10 から 10.1.1.50 までの IP のみが外部ネットワークに割り当てられているため、10.1.1.51 以降の IP アドレスはフローティング IP アドレスに自由に使用できます。または、Floating IP ネットワークを別の VLAN に配置し、作成後にそれを使用するようにオーバークラウドを設定します。

BondInterfaceOvsOptions オプションは、nic2nic3 を使用して結合されたインターフェイスのオプションを提供します。結合オプションの詳細については、次を参照してください。付録D ボンディングオプション .

重要

オーバークラウドの作成後にネットワーク設定を変更すると、リソースの可用性が原因で設定の問題が発生する可能性があります。たとえば、ユーザーがネットワーク分離テンプレートのネットワークのサブネット範囲を変更すると、サブネットがすでに使用されているために再設定が失敗する可能性があります。

7.3. 隔離されたネットワークへの OpenStack サービスの割り当て

各 OpenStack サービスは、リソースレジストリーでデフォルトのネットワーク種別に割り当てられます。これらのサービスは、そのネットワーク種別に割り当てられたネットワーク内の IP アドレスにバインドされます。OpenStack サービスはこれらのネットワークに分割されますが、実際の物理ネットワーク数はネットワーク環境ファイルに定義されている数と異なる可能性があります。ネットワーク環境ファイル (/home/stack/templates/network-environment.yaml) で新しいネットワークマップを定義することにより、OpenStack サービスをさまざまなネットワークタイプに再割り当てできます。ServiceNetMap パラメーターにより、各サービスに使用するネットワーク種別が決定されます。

たとえば、ハイライトしたセクションを変更して、Storage Management ネットワークサービスを Storage ネットワークに再割り当てすることができます。

parameter_defaults:
  ServiceNetMap:
    SwiftMgmtNetwork: storage # Changed from storage_mgmt
    CephClusterNetwork: storage # Changed from storage_mgmt

これらのパラメーターを storage に変更すると、対象のサービスは Storage Management ネットワークではなく、Storage ネットワークに割り当てられます。つまり、parameter_defaults セットを設定するのは Storage ネットワーク用だけで、Storage Management ネットワーク用に設定する必要はありません。

director はカスタムの ServiceNetMap パラメーターの定義を ServiceNetMapDefaults から取得したデフォルト値の事前定義済みリストにマージして、デフォルト値を上書きします。director は次にカスタマイズされた設定を含む完全な一覧を ServiceNetMap に返し、その一覧は多様なサービスのネットワーク割り当ての設定に使用されます。

注記

デフォルトのサービスの全一覧は、/usr/share/openstack-tripleo-heat-templates/network/service_net_map.j2.yaml 内の ServiceNetMapDefaults パラメーターの箇所に記載されています。

7.4. デプロイメントするネットワークの選択

ネットワークとポートの環境ファイルの resource_registry セクションの設定は、通常は変更する必要はありません。ネットワークのサブセットのみが必要な場合は、ネットワークのリストを変更できます。

注記

カスタムネットワークとポートを指定する場合は、デプロイコマンドラインに environment/network-isolation.yaml を含めないでください。代わりに、ネットワーク環境ファイルですべてのネットワークとポートを指定します。

隔離されたネットワークを使用するには、サーバーが各ネットワークで IP アドレスを持っている必要があります。アンダークラウドで neutron を使用して、分離されたネットワークの IP アドレスを管理できるため、ネットワークごとに neutron ポートの作成を有効にする必要があります。環境ファイルでリソースレジストリーをオーバーライドできます。

まず、これはデプロイ可能なロールごとのデフォルトネットワークとポートの完全なセットです。

resource_registry:
  # This section is usually not modified, if in doubt stick to the defaults
  # TripleO overcloud networks
  OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml
  OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml
  OS::TripleO::Network::StorageMgmt: /usr/share/openstack-tripleo-heat-templates/network/storage_mgmt.yaml
  OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml
  OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml
  OS::TripleO::Network::Management: /usr/share/openstack-tripleo-heat-templates/network/management.yaml

  # Port assignments for the VIPs
  OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Network::Ports::ManagementVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml
  OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml

  # Port assignments for the controller role
  OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Controller::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the compute role
  OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Compute::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the ceph storage role
  OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::CephStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the swift storage role
  OS::TripleO::SwiftStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::SwiftStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::SwiftStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

  # Port assignments for the block storage role
  OS::TripleO::BlockStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::BlockStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::BlockStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  OS::TripleO::BlockStorage::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

このファイルの最初のセクションには、OS::TripleO::Network::* リソースのリソースレジストリーの宣言が含まれます。デフォルトでは、これらのリソースは、ネットワークを作成しない OS::Heat::None リソースタイプを使用します。これらのリソースを各ネットワークの YAML ファイルにリダイレクトすると、それらのネットワークの作成が可能となります。

次の数セクションで、各ロールのノードに IP アドレスを指定します。コントローラーノードでは、ネットワークごとに IP が指定されます。コンピュートノードとストレージノードは、ネットワークのサブネットでの IP が指定されます。

デフォルトファイルには、デフォルトロールのポート割り当てのみが含まれます。カスタムロールのポート割り当てを設定するには、他のリソース定義と同じ規則を使用し、network/ports ディレクトリー内の適切な Heat テンプレートにリンクします。

  • OS::TripleO::[ROLE]::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  • OS::TripleO::[ROLE]::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  • OS::TripleO::[ROLE]::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  • OS::TripleO::[ROLE]::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt.yaml
  • OS::TripleO::[ROLE]::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  • OS::TripleO::[ROLE]::Ports::ManagementPort: /usr/share/openstack-tripleo-heat-templates/network/ports/management.yaml

ROLE をロールの名前に置き換えます。

事前設定されたネットワークのいずれも使用せずにデプロイするには、ネットワーク定義と、ロールの対応するポート定義を無効にします。たとえば、storage_mgmt.yaml へのすべての参照を OS::Heat::None に置き換えることができます。

resource_registry:
  # This section is usually not modified, if in doubt stick to the defaults
  # TripleO overcloud networks
  OS::TripleO::Network::External: /usr/share/openstack-tripleo-heat-templates/network/external.yaml
  OS::TripleO::Network::InternalApi: /usr/share/openstack-tripleo-heat-templates/network/internal_api.yaml
  OS::TripleO::Network::StorageMgmt: OS::Heat::None
  OS::TripleO::Network::Storage: /usr/share/openstack-tripleo-heat-templates/network/storage.yaml
  OS::TripleO::Network::Tenant: /usr/share/openstack-tripleo-heat-templates/network/tenant.yaml

  # Port assignments for the VIPs
  OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Network::Ports::StorageMgmtVipPort: OS::Heat::None
  OS::TripleO::Network::Ports::TenantVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml
  OS::TripleO::Network::Ports::RedisVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/vip.yaml

  # Port assignments for the controller role
  OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: OS::Heat::None
  OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml

  # Port assignments for the compute role
  OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant.yaml

  # Port assignments for the ceph storage role
  OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::CephStorage::Ports::StorageMgmtPort: OS::Heat::None

  # Port assignments for the swift storage role
  OS::TripleO::SwiftStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::SwiftStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: OS::Heat::None

  # Port assignments for the block storage role
  OS::TripleO::BlockStorage::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api.yaml
  OS::TripleO::BlockStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage.yaml
  OS::TripleO::BlockStorage::Ports::StorageMgmtPort: OS::Heat::None

parameter_defaults:
  ServiceNetMap:
    ApacheNetwork: internal_api
    NeutronTenantNetwork: tenant
    CeilometerApiNetwork: internal_api
    AodhApiNetwork: internal_api
    GnocchiApiNetwork: internal_api
    MongodbNetwork: internal_api
    CinderApiNetwork: internal_api
    CinderIscsiNetwork: storage
    GlanceApiNetwork: internal_api
    GlanceRegistryNetwork: internal_api
    IronicApiNetwork: ctlplane
    IronicNetwork: ctlplane
    KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
    KeystonePublicApiNetwork: internal_api
    ManilaApiNetwork: internal_api
    NeutronApiNetwork: internal_api
    HeatApiNetwork: internal_api
    HeatApiCfnNetwork: internal_api
    HeatApiCloudwatchNetwork: internal_api
    NovaApiNetwork: internal_api
    NovaColdMigrationNetwork: ctlplane
    NovaMetadataNetwork: internal_api
    NovaVncProxyNetwork: internal_api
    NovaLibvirtNetwork: internal_api
    SwiftStorageNetwork: storage # Changed from storage_mgmt
    SwiftProxyNetwork: storage
    SaharaApiNetwork: internal_api
    HorizonNetwork: internal_api
    MemcachedNetwork: internal_api
    RabbitmqNetwork: internal_api
    RedisNetwork: internal_api
    MysqlNetwork: internal_api
    CephClusterNetwork: storage # Changed from storage_mgmt
    CephMonNetwork: storage
    CephRgwNetwork: storage
    PublicNetwork: external
    OpendaylightApiNetwork: internal_api
    CephStorageHostnameResolveNetwork: storage
    ControllerHostnameResolveNetwork: internal_api
    ComputeHostnameResolveNetwork: internal_api
    ObjectStorageHostnameResolveNetwork: internal_api
    BlockStorageHostnameResolveNetwork: internal_api

OS::Heat::None を使用すると、ネットワークやポートが作成されないため、ストレージ管理ネットワーク上のサービスはデフォルトでプロビジョニングネットワークになります。これは、ストレージ管理サービスをストレージネットワークなどの別のネットワークに移動するために、ServiceNetMap で変更できます。

第8章 ノード配置の制御

director のデフォルトの動作では、通常プロファイルタグに基づいて、各ロールにノードが無作為に選択されます。ただし、director には特定のノード配置を定義する機能も備えられています。この機能は、以下の場合に役立ちます。

  • controller-0controller-1 などの特定のノード ID を割り当てる
  • カスタムのホスト名を割り当てる
  • 特定の IP アドレスを割り当てる
  • 特定の仮想 IP アドレスを割り当てる
注記

予測可能な IP アドレス、仮想 IP アドレス、ネットワークのポートを手動で設定すると、割り当てプールの必要性が軽減されます。ただし、新規ノードがスケーリングされた場合に対応できるように、各ネットワーク用の割り当てプールは維持することを推奨します。静的に定義された IP アドレスは、必ず割り当てプール外となるようにしてください。割り当てプールの設定に関する詳しい情報は、「ネットワーク環境ファイルの作成」を参照してください。

8.1. 特定のノード ID の割り当て

以下の手順では、特定のノードにノード ID を割り当てます。ノード ID には、controller-0controller-1compute-0compute-1 などがあります。

最初のステップでは、デプロイメント時に Nova スケジューラーが照合するノード別ケイパビリティーとしてこの ID を割り当てます。以下に例を示します。

openstack baremetal node set --property capabilities='node:controller-0,boot_option:local' <id>

これにより、node:controller-0 のケイパビリティーがノードに割り当てられます。0 から始まる一意の連番のインデックスを使用して、すべてのノードに対してこのパターンを繰り返します。指定したロール (コントローラー、コンピュート、各ストレージロール) のすべてのノードが同じようにタグ付けされるようにします。このようにタグ付けしないと、Nova スケジューラーはこのケイパビリティーを正しく照合しません。

次のステップでは、Heat 環境ファイル (例: scheduler_hints_env.yaml) を作成します。このファイルは、スケジューラーヒントを使用して、各ノードのケイパビリティーと照合します。以下に例を示します。

parameter_defaults:
  ControllerSchedulerHints:
    'capabilities:node': 'controller-%index%'

これらのスケジューラーヒントを使用するには、オーバークラウドの作成時に、overcloud deploy コマンドに scheduler_hints_env.yaml 環境ファイルを追加します。

これらのパラメーターを使用してロールごとに、同じアプローチを使用することができます。

  • コントローラーノードの場合は ControllerSchedulerHints
  • コンピュートノードの場合は NovaComputeSchedulerHints
  • Block Storage ノードの場合は BlockStorageSchedulerHints
  • Object Storage ノードの場合は ObjectStorageSchedulerHints
  • Ceph Storage ノードの場合は CephStorageSchedulerHints
  • カスタムロールの場合は [ROLE]SchedulerHints[ROLE] はロール名に置き換えます。
注記

プロファイル照合よりもノードの配置が優先されます。スケジューリングが機能しなくならないように、プロファイル照合用に設計されたフレーバー (computecontrol など) ではなく、デプロイメントにデフォルトの baremetal フレーバーを使用します。以下に例を示します。

$ openstack overcloud deploy ... --control-flavor baremetal --compute-flavor baremetal ...

8.2. カスタムのホスト名の割り当て

「特定のノード ID の割り当て」のノード ID の設定と組み合わせて、director は特定のカスタムホスト名を各ノードに割り当てることもできます。システムの場所 (例: rack2-row12) を定義する必要がある場合や、インベントリー ID を照合する必要がある場合、またはカスタムのホスト名が必要となるその他の状況において、カスタムのホスト名は便利です。

ノードのホスト名をカスタマイズするには、「特定のノード ID の割り当て」で作成した scheduler_hints_env.yaml ファイルなどの環境ファイルの HostnameMap パラメーターを使用します。以下に例を示します。

parameter_defaults:
  ControllerSchedulerHints:
    'capabilities:node': 'controller-%index%'
  NovaComputeSchedulerHints:
    'capabilities:node': 'compute-%index%'
  HostnameMap:
    overcloud-controller-0: overcloud-controller-prod-123-0
    overcloud-controller-1: overcloud-controller-prod-456-0
    overcloud-controller-2: overcloud-controller-prod-789-0
    overcloud-compute-0: overcloud-compute-prod-abc-0

parameter_defaults セクションで HostnameMap を定義し、各マッピングは、HostnameFormat パラメーターを使用して Heat が定義する元のホスト名に設定します (例: overcloud-controller-0)。また、2 つ目の値は、ノードに指定するカスタムのホスト名 (例: overcloud-controller-prod-123-0) にします。

ノード ID の配置と合わせてこの手法を使用することで、各ノードにカスタムのホスト名が指定されるようにします。

8.3. 予測可能な IP の割り当て

作成された環境でさらに制御を行う場合には、director はオーバークラウドノードに各ネットワークの固有の IP を割り当てることもできます。コア Heat テンプレートコレクションにある environments/ips-from-pool-all.yaml 環境ファイルを使用します。このファイルを stack ユーザーの templates ディレクトリーにコピーしてください。

$ cp /usr/share/openstack-tripleo-heat-templates/environments/ips-from-pool-all.yaml ~/templates/.

ips-from-pool-all.yaml ファイルには、2 つの主要セクションがあります。

1 番目のセクションは、デフォルトよりも優先される resource_registry の参照セットです。この参照では、director に対して、ノード種別のある特定のポートに特定の IP を使用するように指示を出します。適切なテンプレートの絶対パスを使用するように各リソースを編集してください。以下に例を示します。

  OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external_from_pool.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api_from_pool.yaml
  OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_from_pool.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_from_pool.yaml
  OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant_from_pool.yaml

デフォルトの設定では、全ノード種別上にあるすべてのネットワークが、事前に割り当てられた IP を使用するように設定します。特定のネットワークやノード種別がデフォルトの IP 割り当てを使用するように許可するには、環境ファイルからノード種別やネットワークに関連する resource_registry のエントリーを削除するだけです。

2 番目のセクションは、実際の IP アドレスを割り当てる parameter_defaults です。各ノード種別には、関連するパラメーターが指定されます。

  • コントローラーノードの場合は ControllerIPs
  • コンピュートノードの場合は NovaComputeIPs
  • Ceph Storage ノードの場合は CephStorageIPs
  • Block Storage ノードの場合は BlockStorageIPs
  • Object Storage ノードの場合は SwiftStorageIPs
  • カスタムロールの場合は [ROLE]IPs[ROLE] はロール名に置き換えます。

各パラメーターは、アドレスの一覧へのネットワーク名のマッピングです。各ネットワーク種別には、そのネットワークにあるノード数と同じ数のアドレスが最低でも必要です。director はアドレスを順番に割り当てます。各種別の最初のノードは、適切な一覧にある最初のアドレスが割り当てられ、2 番目のノードは 2 番目のアドレスというように割り当てられていきます。

たとえば、オーバークラウドに 3 つの Ceph Storage ノードが含まれる場合には、CephStorageIPs パラメーターは以下のようになります。

CephStorageIPs:
  storage:
  - 172.16.1.100
  - 172.16.1.101
  - 172.16.1.102
  storage_mgmt:
  - 172.16.3.100
  - 172.16.3.101
  - 172.16.3.102

最初の Ceph Storage ノードは 172.16.1.100 と 172.16.3.100 の 2 つのアドレスを取得します。2 番目は 172.16.1.101 と 172.16.3.101、3 番目は 172.16.1.102 と 172.16.3.102 を取得します。他のノード種別でも同じパターンが適用されます。

選択した IP アドレスは、ネットワーク環境ファイルで定義されている各ネットワークの割り当てプールの範囲に入らないようにしてください (「ネットワーク環境ファイルの作成」を参照)。たとえば、internal_api の割り当ては InternalApiAllocationPools の範囲外となるようにします。これにより、自動的に選択される IP アドレスと競合が発生しないようになります。また同様に、標準の予測可能な仮想 IP 配置 (「予測可能な仮想 IP の割り当て」を参照) または外部の負荷分散 (「外部の負荷分散機能の設定」を参照) のいずれでも、IP アドレスの割り当てが仮想 IP 設定と競合しないようにしてください。

重要

オーバークラウドノードが削除された場合に、そのノードのエントリーを IP の一覧から削除しないでください。IP の一覧は、下層の Heat インデックスをベースとしています。このインデックスは、ノードを削除した場合でも変更されません。IP の一覧で特定のエントリーが使用されなくなったことを示すには、IP の値を DELETED または UNUSED などに置き換えてください。エントリーは変更または追加するのみとし、IP の一覧から決して削除すべきではありません。

デプロイメント中にこの設定を適用するには、openstack overcloud deploy コマンドで ips-from-pool-all.yaml 環境ファイルを指定します。

重要

ネットワーク分離 (7章ネットワークの分離 を参照してください) の機能を使用する場合には、network-isolation.yaml ファイルの後に ips-from-pool-all.yaml ファイルを追加してください。

以下に例を示します。

$ openstack overcloud deploy --templates \
  -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
  -e ~/templates/ips-from-pool-all.yaml \
  [OTHER OPTIONS]

8.4. 予測可能な仮想 IP の割り当て

director は、各ノードの予測可能な IP アドレスの定義に加えて、クラスター化されたサービス向けに予測可能な仮想 IP (VIP) を定義する同様の機能も提供します。この定義を行うには、「ネットワーク環境ファイルの作成」 で作成したネットワークの環境ファイルを編集して、parameter_defaults セクションに仮想 IP のパラメーターを追加します。

parameter_defaults:
  ...
  # Predictable VIPs
  ControlFixedIPs: [{'ip_address':'192.168.201.101'}]
  InternalApiVirtualFixedIPs: [{'ip_address':'172.16.0.9'}]
  PublicVirtualFixedIPs: [{'ip_address':'10.1.1.9'}]
  StorageVirtualFixedIPs: [{'ip_address':'172.18.0.9'}]
  StorageMgmtVirtualFixedIPs: [{'ip_address':'172.19.0.9'}]
  RedisVirtualFixedIPs: [{'ip_address':'172.16.0.8'}]

それぞれの割り当てプール範囲外の IP アドレスを選択します。たとえば、InternalApiAllocationPools の範囲外から、InternalApiVirtualFixedIPs の IP アドレスを 1 つ選択します。

このステップは、デフォルトの内部負荷分散設定を使用するオーバークラウドのみが対象です。外部の負荷分散機能を使用して仮想 IP を割り当てる場合には、External Load Balancing for the Overcloud に記載の専用の手順を使用してください。

第9章 オーバークラウドでの SSL/TLS の有効化

デフォルトでは、オーバークラウドはサービスに暗号化されていないエンドポイントを使用します。これは、オーバークラウドの設定に、パブリック API エンドポイントに SSL/TLS を有効化するための追加の環境ファイルが必要であることを意味します。本章では、SSL/TLS 証明書を設定して、オーバークラウドの作成の一部として追加する方法を説明します。

注記

このプロセスでは、パブリック API のエンドポイントの SSL/TLS のみを有効化します。Internal API や Admin API は暗号化されません。

このプロセスには、パブリック API のエンドポイントを定義するネットワークの分離が必要です。見る7章ネットワークの分離ネットワークの分離に関する説明。

9.1. 署名ホストの初期化

署名ホストとは、新規証明書を生成し、認証局を使用して署名するホストです。選択した署名ホスト上で SSL 証明書を作成したことがない場合には、ホストを初期化して新規証明書に署名できるようにする必要がある可能性があります。

/etc/pki/CA/index.txt ファイルは、すべての署名済み証明書の記録を保管します。このファイルが存在しているかどうかを確認してください。存在していない場合には、空のファイルを作成します。

$ sudo touch /etc/pki/CA/index.txt

/etc/pki/CA/serial ファイルは、次に署名する証明書に使用する次のシリアル番号を特定します。このファイルが存在しているかどうかを確認してください。ファイルが存在しない場合には、新規ファイルを作成して新しい開始値を指定します。

$ echo '1000' | sudo tee /etc/pki/CA/serial

9.2. 認証局の作成

通常、SSL/TLS 証明書の署名には、外部の認証局を使用します。場合によっては、独自の認証局を使用する場合もあります。たとえば、内部のみの認証局を使用するように設定する場合などです。

たとえば、キーと証明書のペアを生成して、認証局として機能するようにします。

$ openssl genrsa -out ca.key.pem 4096
$ openssl req  -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem

openssl req コマンドは、認証局に関する特定の情報を要求します。それらの情報を指定してください。

これで、ca.crt.pem という名前の認証局ファイルが作成されます。

9.3. クライアントへの認証局の追加

SSL/TLS を使用して通信することを目的としている外部のクライアントの場合は、Red Hat OpenStack Platform 環境にアクセスする必要のある各クライアントに認証局ファイルをコピーします。クライアントへのコピーが完了したら、そのクライアントで以下のコマンドを実行して、認証局のトラストバンドルに追加します。

$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
$ sudo update-ca-trust extract

たとえば、アンダークラウドには、作成中にオーバークラウドのエンドポイントと通信できるようにするために、認証局ファイルのコピーが必要です。

9.4. SSL/TLS 鍵の作成

以下のコマンドを実行して、SSL/TLS キー (server.key.pem) を生成します。このキーは、さまざまな段階で、アンダークラウドとオーバークラウドの証明書を生成するのに使用します。

$ openssl genrsa -out server.key.pem 2048

9.5. SSL/TLS 証明書署名要求の作成

次の手順では、オーバークラウドの証明書署名要求を作成します。カスタマイズするデフォルトの OpenSSL 設定ファイルをコピーします。

$ cp /etc/pki/tls/openssl.cnf .

カスタムの openssl.cnf ファイルを編集して、オーバークラウドに使用する SSL パラメーターを設定します。変更するパラメーターの種別には以下のような例が含まれます。

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = AU
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Queensland
localityName = Locality Name (eg, city)
localityName_default = Brisbane
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Red Hat
commonName = Common Name
commonName_default = 10.0.0.1
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1 = 10.0.0.1
DNS.1 = 10.0.0.1
DNS.2 = myovercloud.example.com

commonName_default は以下のいずれか 1 つに設定します。

  • SSL/TLS でアクセスするために IP を使用する場合には、パブリック API に仮想 IP を使用します。この仮想 IP は、環境ファイルで PublicVirtualFixedIPs パラメーターを使用して設定します。詳細は、「予測可能な仮想 IP の割り当て」 を参照してください。予測可能な仮想 IP を使用していない場合には、director は ExternalAllocationPools パラメーターで定義されている範囲から最初の IP アドレスを割り当てます。
  • 完全修飾ドメイン名を使用して SSL/TLS でアクセスする場合には、代わりにドメイン名を使用します。

alt_names セクションの IP エントリーおよび DNS エントリーとして、同じパブリック API の IP アドレスを追加します。DNS も使用する場合は、同じセクションに DNS エントリーとしてそのサーバーのホスト名を追加します。openssl.cnf に関する詳しい情報については、man openssl.cnf を実行します。

次のコマンドを実行し、手順 1 で作成したキーストアより公開鍵を使用して証明書署名要求を生成します (server.csr.pem)。

$ openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem

「SSL/TLS 鍵の作成」 で作成した SSL/TLS 鍵を -key オプションで必ず指定してください。

次の項では、この server.csr.pem ファイルを使用して SSL/TLS 証明書を作成します。

9.6. SSL/TLS 証明書の作成

以下のコマンドで、アンダークラウドまたはオーバークラウドの証明書を作成します。

$ sudo openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.crt.pem -keyfile ca.key.pem

上記のコマンドでは、以下のオプションを使用しています。

  • v3 拡張機能を指定する設定ファイル。このファイルは -config オプションとして追加します。
  • 認証局を介して証明書を生成し、署名するために、「SSL/TLS 証明書署名要求の作成」 で設定した証明書署名要求。この値は -in オプションとして追加します。
  • 証明書への署名を行う、「認証局の作成」で作成した認証局。この値は -cert オプションとして追加します。
  • 「認証局の作成」で作成した認証局の秘密鍵。この値は -keyfile オプションとして追加します。

このコマンドを実行すると、server.crt.pem という名前の証明書が作成されます。「SSL/TLS 鍵の作成」で作成した SSL/TLS キーと共にこの証明書を使用して、SSL/TLS を有効にします。

9.7. SSL/TLS の有効化

Heat テンプレートコレクションから enable-tls.yaml の環境ファイルをコピーします。

$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.

このファイルを編集して、下記のパラメーターに以下の変更を加えます。

SSLCertificate

証明書ファイル (server.crt.pem) のコンテンツを SSLCertificate パラメーターにコピーします。以下に例を示します。

parameter_defaults:
  SSLCertificate: |
    -----BEGIN CERTIFICATE-----
    MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV
    ...
    sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp
    -----END CERTIFICATE-----
重要

この証明書の内容に新しく追加する行は、すべて同じレベルにインデントする必要があります。

SSLKey

秘密鍵 (server.key.pem) の内容を SSLKey パラメーターにコピーします。以下に例を示します。

parameter_defaults:
  ...
  SSLKey: |
    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEAqVw8lnQ9RbeI1EdLN5PJP0lVO9hkJZnGP6qb6wtYUoy1bVP7
    ...
    ctlKn3rAAdyumi4JDjESAXHIKFjJNOLrBmpQyES4XpZUC7yhqPaU
    -----END RSA PRIVATE KEY-----
重要

この秘密鍵の内容に新しく追加する行は、すべて同じレベルにインデントする必要があります。

OS::TripleO::NodeTLSData

OS::TripleO::NodeTLSData: のリソースのパスを絶対パスに変更します。

resource_registry:
  OS::TripleO::NodeTLSData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/tls-cert-inject.yaml

9.8. ルート証明書の注入

証明書の署名者がオーバークラウドのイメージにあるデフォルトのトラストストアに含まれない場合には、オーバークラウドのイメージに認証局を注入する必要があります。Heat テンプレートコレクションから inject-trust-anchor.yaml 環境ファイルをコピーします。

$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.

このファイルを編集して、下記のパラメーターに以下の変更を加えます。

SSLRootCertificate

SSLRootCertificate パラメーターにルート認証局ファイル (ca.crt.pem) の内容をコピーします。以下に例を示します。

parameter_defaults:
  SSLRootCertificate: |
    -----BEGIN CERTIFICATE-----
    MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV
    ...
    sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp
    -----END CERTIFICATE-----
重要

この認証局の内容に新しく追加する行は、すべて同じレベルにインデントする必要があります。

OS::TripleO::NodeTLSCAData

OS::TripleO::NodeTLSCAData: のリソースのパスを絶対パスに変更します。

resource_registry:
  OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yaml

9.9. DNS エンドポイントの設定

DNS ホスト名を使用して SSL/TLS でオーバークラウドにアクセスする場合は、新しい環境ファイル (~/templates/cloudname.yaml) を作成して、オーバークラウドのエンドポイントのホスト名を定義します。以下のパラメーターを使用してください。

CloudName
オーバークラウドエンドポイントの DNS ホスト名
DnsServers
使用する DNS サーバー一覧。設定済みの DNS サーバーには、パブリック API の IP アドレスに一致する設定済みの CloudName へのエントリーが含まれていなければなりません。

このファイルの内容の例は以下のとおりです。

parameter_defaults:
  CloudName: overcloud.example.com
  DnsServers: ["10.0.0.254"]

9.10. オーバークラウド作成時の環境ファイルの追加

デプロイメントコマンド (openstack overcloud deploy) は、-e オプションを使用して環境ファイルを追加します。本項の環境ファイルは、以下の順序で追加します。

  • SSL/TLS を有効化する環境ファイル (enable-tls.yaml)
  • DNS ホスト名を設定する環境ファイル (cloudname.yaml)
  • ルート認証局を注入する環境ファイル (inject-trust-anchor.yaml)
  • パブリックエンドポイントのマッピングを設定するための環境ファイル:

    • パブリックエンドポイントへのアクセスに DNS 名を使用する場合には、/usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-dns.yaml を使用します。
    • パブリックエンドポイントへのアクセスに IP アドレスを使用する場合には、/usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-ip.yaml を使用します。

以下に例を示します。

$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-dns.yaml

9.11. SSL/TLS 証明書の更新

将来に証明書を更新する必要がある場合:

  • enable-tls.yaml ファイルを編集して、SSLCertificateSSLKeySSLIntermediateCertificate のパラメーターを更新してください。
  • 認証局が変更された場合には、inject-trust-anchor.yaml ファイルを編集して、SSLRootCertificate パラメーターを更新してください。

新規証明書の内容が記載されたら、デプロイメントを再度実行します。以下に例を示します。

$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/tls-endpoints-public-dns.yaml

第10章 ストレージの設定

本章では、オーバークラウドのストレージオプションの設定方法をいくつか説明します。

重要

オーバークラウドは、デフォルトのストレージオプションにローカルおよび LVM のストレージを使用します。ただし、これらのオプションは、エンタープライズレベルのオーバークラウドではサポートされません。本章のストレージオプションの 1 つを使用することを推奨します。

10.1. NFS ストレージの設定

本項では、NFS 共有を使用するオーバークラウドの設定について説明します。インストールおよび設定のプロセスは、コア Heat テンプレートコレクション内にすでに存在する環境ファイルの変更がベースとなります。

コア Heat テンプレートコレクションの /usr/share/openstack-tripleo-heat-templates/environments/ には、一連の環境ファイルが格納されています。これらは、director で作成したオーバークラウドでサポートされている一部の機能のカスタム設定に役立つ環境テンプレートです。これには、ストレージ設定に有用な環境ファイルが含まれます。このファイルは、/usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml に配置されています。このファイルを stack ユーザーのテンプレートディレクトリーにコピーしてください。

$ cp /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml ~/templates/.

この環境ファイルには、OpenStack のブロックストレージおよびイメージストレージのコンポーネント (cinder および glance) の異なるストレージオプションを設定するのに役立つ複数のパラメーターが記載されています。この例では、オーバークラウドが NFS 共有を使用するように設定します。以下のパラメーターを変更してください。

CinderEnableIscsiBackend
iSCSI バックエンドを有効にするパラメーター。false に設定します。
CinderEnableRbdBackend
Ceph Storage バックエンドを有効にするパラメーター。false に設定します。
CinderEnableNfsBackend
NFS バックエンドを有効にするパラメーター。true に設定します。
NovaEnableRbdBackend
Nova エフェメラルストレージ用に Ceph Storage を有効にするパラメーター。false に設定します。
GlanceBackend
Glance に使用するバックエンドを定義するパラメーター。イメージ用にファイルベースストレージを使用するには file に設定します。オーバークラウドは、Glance 用にマウントされた NFS 共有にこれらのファイルを保存します。
CinderNfsMountOptions
ボリュームストレージ用の NFS マウントオプション
CinderNfsServers
ボリュームストレージをマウントするための NFS 共有。たとえば、192.168.122.1:/export/cinder と設定します。
GlanceNfsEnabled
イメージストレージ用の共有を管理するための Pacemaker を有効にするパラメーター。無効に設定されている場合には、オーバークラウドはコントローラーノードのファイルシステムにイメージを保管します。true に設定します。
GlanceNfsShare
イメージストレージをマウントするための NFS 共有。たとえば、192.168.122.1:/export/glance と設定します。
GlanceNfsOptions
イメージストレージ用の NFS マウントオプション

環境ファイルのオプションは、以下の例のようになるはずです。

parameter_defaults:
  CinderEnableIscsiBackend: false
  CinderEnableRbdBackend: false
  CinderEnableNfsBackend: true
  NovaEnableRbdBackend: false
  GlanceBackend: 'file'

  CinderNfsMountOptions: 'rw,sync'
  CinderNfsServers: '192.0.2.230:/cinder'

  GlanceNfsEnabled: true
  GlanceNfsShare: '192.0.2.230:/glance'
  GlanceNfsOptions: 'rw,sync,context=system_u:object_r:glance_var_lib_t:s0'
重要

Glance が /var/lib ディレクトリーにアクセスできるようにするには、GlanceNfsOptions パラメーターに context=system_u:object_r:glance_var_lib_t:s0 と記載します。この SELinux コンテキストがない場合には、Glance はマウントポイントへの書き込みに失敗します。

これらのパラメーターは、Heat テンプレートコレクションの一部として統合されます。このように設定することにより、Cinder と Glance が使用するための 2 つの NFS マウントポイントが作成されます。

このファイルを保存して、オーバークラウドの作成に含まれるようにします。

10.2. Ceph Storage の設定

director では、Red Hat Ceph Storage のオーバークラウドへの統合には主に 2 つの方法を提供します。

Ceph Storage Cluster でのオーバークラウドの作成
director には、オーバークラウドの作成中に Ceph Storage Cluster を作成する機能があります。director は、データの格納に Ceph OSD を使用する Ceph Storage ノードセットを作成します。さらに、director は、オーバークラウドのコントローラーノードに Ceph Monitor サービスをインストールします。このため、組織が高可用性のコントローラーノード 3 台で設定されるオーバークラウドを作成する場合には、Ceph Monitor も高可用性サービスになります。
既存の Ceph Storage のオーバークラウドへの統合
既存の Ceph Storage クラスターがある場合には、オーバークラウドのデプロイメント時に統合できます。これは、オーバークラウドの設定とは独立して、クラスターの管理やスケーリングが可能であることを意味します。

オーバークラウド Ceph Storage の設定に関する詳細は、両方のシナリオの完全な手順について、専用の Red Hat Ceph Storage for the Overcloud ガイドを参照してください。

10.3. サードパーティーのストレージの設定

director には、サードパーティーのストレージプロバイダーの設定に役立つ複数の環境ファイルが含まれています。これには、以下の設定項目が含まれます。

Dell EMC Storage Center

Block Storage (cinder) サービス用に単一の Dell EMC Storage Center バックエンドをデプロイします。

環境ファイルは /usr/share/openstack-tripleo-heat-templates/environments/cinder-dellsc-config.yaml にあります。

設定に関する詳しい情報は、Dell Storage Center バックエンドガイド を参照してください。

Dell EMC PS Series

Block Storage (cinder) サービス用に単一の Dell EMC PS Series バックエンドをデプロイします。

環境ファイルは /usr/share/openstack-tripleo-heat-templates/environments/cinder-dellps-config.yaml にあります。

設定に関する詳しい情報は、Dell EMC PS シリーズバックエンドガイド を参照してください。

NetApp ブロックストレージ

Block Storage (cinder) サービス用に NetApp ストレージアプライアンスをバックエンドとしてデプロイします。

環境ファイルは /usr/share/openstack-tripleo-heat-templates/environments/cinder-netapp-config.yaml にあります。

設定に関する詳しい情報は、NetApp Block Storage バックエンドガイド を参照してください。

第11章 コンテナー化された計算ノードの設定

director は、OpenStack のコンテナー化プロジェクト (kolla) からオーバークラウドのコンピュートノードにサービスを統合するオプションを提供します。これには、Red Hat Enterprise Linux Atomic Host を基本オペレーティングシステムとして使用するコンピュートノードの作成と、さまざまな OpenStack サービスを実行するための個々のコンテナーの作成が含まれます。

重要

コンテナー化されたコンピューティングノードはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat サービスレベルアグリーメント (SLA) では完全にサポートされておらず、機能的に完全でない可能性があり、実稼働環境での使用を目的とはしていません。ですが、近々発表予定のプロダクトイノベーションをリリースに先駆けてご提供することで、お客様には機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。テクノロジープレビューとしてマークされた機能のサポート範囲の詳細については、https://access.redhat.com/support/offerings/techpreview/ を参照してください。

director のコア Heat テンプレートコレクションには、コンテナー化されたコンピュートノードの設定を支援する環境ファイルが含まれています。これらのファイルは次のとおりです。

  • docker.yaml - コンテナー化されたコンピュートノードを設定するためのメイン環境ファイル。
  • docker-network.yaml - ネットワーク分離なしのコンテナー化されたコンピュートノードネットワーク用の環境ファイル。
  • docker-network-isolation.yaml - ネットワーク分離を使用したコンテナー化されたコンピュートノードの環境ファイル。

11.1. スタックの深さを増やす

コンテナー化されたコンピューティング Heat テンプレートのリソーススタックの数に対応するには、アンダークラウド上の OpenStack Orchestration (heat) のスタックの深さを増やす必要があります。スタックの深さを増やすには、次の手順を使用します。

  1. /etc/heat/heat.conf を編集し、max_nested_stack_depthパラメーターを検索します。このパラメーターの値を 10 に増やします。

    max_nested_stack_depth = 10

    このファイルを保存します。

  2. OpenStack Orchestration (heat) サービスを再起動します。

    sudo systemctl restart openstack-heat-engine.service
重要

アンダークラウドのマイナーおよびメジャーバージョンの更新により、/etc/heat/heat.conf ファイルへの変更を元に戻すことができます。必要に応じて、heat::engine::max_nested_stack_depth hieradata を設定して、スタックの深さが永続的になるようにします。アンダークラウド hieradata を設定するには、undercloud.conf ファイルの hieradata_override パラメーターで、カスタム hieradata を含むファイルを指定します。

11.2. コンテナー化されたコンピューティング環境ファイル (docker.yaml) を調べる

docker.yaml ファイルは、コンテナー化されたコンピュートノード設定のメイン環境ファイルです。resource_registry のエントリーが含まれます。

resource_registry:
  OS::TripleO::ComputePostDeployment: ../docker/compute-post.yaml
  OS::TripleO::NodeUserData: ../docker/firstboot/install_docker_agents.yaml
OS::TripleO::NodeUserData
初回起動時にカスタム設定を使用する Heat テンプレートを提供します。この場合、最初の起動時に openstack-heat-docker-agents コンテナーがコンピュートノードにインストールされます。このコンテナーは、コンテナー化されたコンピュートノードとヒートフックを設定して director と通信するための一連の初期化スクリプトを提供します。
OS::TripleO::ComputePostDeployment

コンピュートノードの設定後のリソースセットを含む Heat テンプレートを提供します。これには、Puppet に一連の tags を提供するソフトウェア設定リソースが含まれます。

  ComputePuppetConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      group: puppet
      options:
        enable_hiera: True
        enable_facter: False
        tags: package,file,concat,file_line,nova_config,neutron_config,neutron_agent_ovs,neutron_plugin_ml2
      inputs:
      - name: tripleo::packages::enable_install
        type: Boolean
        default: True
      outputs:
      - name: result
      config:
        get_file: ../puppet/manifests/overcloud_compute.pp

これらのタグは、openstack-heat-docker-agents コンテナーに渡す Puppet モジュールを定義します。

docker.yaml ファイルには、コンピュートノードのプロビジョニング時に標準の overcloud-full イメージを別のイメージ (atomic-image) に置き換える NovaImage という parameter が含まれています。この新しいイメージをアップロードする手順については、「Atomic Host イメージのアップロード」 を参照してください。

docker.yaml ファイルには、コンピュートノードサービスに使用する Docker レジストリーとイメージを定義する parameter_defaults セクションも含まれています。このセクションを変更して、デフォルトの registry.access.redhat.com の代わりにローカルレジストリーを使用できます。ローカルレジストリーの設定手順については、「ローカルレジストリーの使用」 を参照してください。

11.3. Atomic Host イメージのアップロード

director には、atomic-image としてイメージストアにインポートされた Red Hat Enterprise Linux 7 Atomic Host のクラウドイメージのコピーが必要です。これは、オーバークラウド作成のプロビジョニング段階で、コンピュートノードがベース OS 用にこのイメージを必要とするためです。

Red Hat Enterprise Linux 7 Atomic Host 製品ページ (https://access.redhat.com/downloads/content/271/ver=/rhel---7/7.2.2-2/x86_64/product-software) から クラウドイメージ のコピーをダウンロードし、stack ユーザーのホームディレクトリーの images サブディレクトリーに保存します。

イメージのダウンロードが完了したら、stack ユーザーとしてイメージを director にインポートします。

$ glance image-create --name atomic-image --file ~/images/rhel-atomic-cloud-7.2-12.x86_64.qcow2 --disk-format qcow2 --container-format bare

これにより、イメージが他のオーバークラウドイメージと一緒にインポートされます。

$ glance image-list
+--------------------------------------+------------------------+
| ID                                   | Name                   |
+--------------------------------------+------------------------+
| 27b5bad7-f8b2-4dd8-9f69-32dfe84644cf | atomic-image           |
| 08c116c6-8913-427b-b5b0-b55c18a01888 | bm-deploy-kernel       |
| aec4c104-0146-437b-a10b-8ebc351067b9 | bm-deploy-ramdisk      |
| 9012ce83-4c63-4cd7-a976-0c972be747cd | overcloud-full         |
| 376e95df-c1c1-4f2a-b5f3-93f639eb9972 | overcloud-full-initrd  |
| 0b5773eb-4c64-4086-9298-7f28606b68af | overcloud-full-vmlinuz |
+--------------------------------------+------------------------+

11.4. ローカルレジストリーの使用

デフォルトの設定では、イメージのダウンロードに Red Hat のコンテナーレジストリーを使用します。ただし、オプションの手順として、ローカルレジストリーを使用して、オーバークラウドの作成プロセス中に帯域幅を節約できます。

既存のローカルレジストリーを使用するか、新しいレジストリーをインストールできます。新しいレジストリーをインストールするには、コンテナ入門Docker フォーマットコンテナイメージ入門 の手順を使用してください。

必要なイメージをレジストリーにプルします。

$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-compute:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-data:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-libvirt:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-neutron-openvswitch-agent:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-vswitchd:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-db-server:latest
$ sudo docker pull registry.access.redhat.com/rhosp10_tech_preview/openstack-heat-docker-agents:latest

イメージをプルした後、適切なレジストリーホストでタグ付けします。

$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-compute:latest localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-data:latest localhost:8787/registry.access.redhat.com/openstack-data:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-nova-libvirt:latest localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-neutron-openvswitch-agent:latest localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-vswitchd:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-openvswitch-db-server:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest
$ sudo docker tag registry.access.redhat.com/rhosp10_tech_preview/openstack-heat-docker-agents:latest localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest

それらをレジストリーにプッシュします。

$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-data:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest

templates サブディレクトリーにメインの docker.yaml 環境ファイルのコピーを作成します。

$ cp /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml ~/templates/.

ファイルを編集し、絶対パスを使用するように resource_registry を変更します。

resource_registry:
  OS::TripleO::ComputePostDeployment: /usr/share/openstack-tripleo-heat-templates/docker/compute-post.yaml
  OS::TripleO::NodeUserData: /usr/share/openstack-tripleo-heat-templates/docker/firstboot/install_docker_agents.yaml

parameter_defaultsDockerNamespace をレジストリー URL に設定します。また、DockerNamespaceIsRegistrytrue に設定します。次に例を示します。

parameter_defaults:
  DockerNamespace: registry.example.com:8787/registry.access.redhat.com
  DockerNamespaceIsRegistry: true

これで、ローカルレジストリーに必要な Docker イメージが含まれ、コンテナー化されたコンピュート設定がそのレジストリーを使用するように設定されました。

11.5. オーバークラウドデプロイメントへの環境ファイルの追加

オーバークラウドの作成を実行する際、openstack overcloud deploy コマンドとともに、コンテナー化されたコンピュートノードのメイン環境ファイル (docker.yaml) とネットワーク環境ファイル (docker -network.yaml) を含めます。以下に例を示します。

$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network.yaml [OTHER OPTIONS] ...

コンテナー化されたコンピュートノードは、ネットワークが分離されたオーバークラウドでも機能します。これには、メイン環境ファイルとネットワーク分離ファイル (docker-network-isolation.yaml) も必要です。7章ネットワークの分離 からのネットワーク分離ファイルの前にこれらのファイルを追加します。以下に例を示します。

openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network-isolation.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml [OTHER OPTIONS] ...

director は、コンテナー化されたコンピュートノードでオーバークラウドを作成します。

第12章 モニタリングツールの設定

監視ツールは、オペレーターが OpenStack 環境を維持管理するのに役立つオプションのツールセットです。これらのツールは、以下の機能を果たします。

  • 集中ロギング: OpenStack 環境の全コンポーネントからのログを 1 つの場所に収集することができます。すべてのノードとサービスにわたって問題を特定することができます。また、オプションで Red Hat にログデータをエクスポートして、問題を診断するサポートを受けることもできます。
  • 可用性監視: OpenStack 環境内の全コンポーネントを監視して、いずれかのコンポーネントが現在停止中または機能していない状態かどうかを判断します。問題が発生したときに通知を受信して、応答時間を最適化することもできます。

12.1. アーキテクチャー

監視ツールは、クライアントが Red Hat OpenStack Platform オーバークラウドノードにデプロイされる、クライアント/サーバーモデルを使用します。Fluentd サービスがクライアント側の集中ロギング (CL) を提供し、Sensu クライアントサービスがクライアント側の可用性監視 (AM) を提供します。

12.1.1. 集中ロギング

集中ロギングにより、OpenStack 環境全体にわたるログを一箇所で確認することができます。これらのログは、syslog や audit ログファイルなどのオペレーティングシステム、RabbitMQ や MariaDB などのインフラストラクチャーコンポーネント、Identity や Compute などの OpenStack サービスから収集されます。

集中ロギングのツールチェーンは、以下のような複数のコンポーネントで設定されます。

  • ログ収集エージェント (Fluentd)
  • ログリレー/トランスフォーマー (Fluentd)
  • データストア (Elasticsearch)
  • API/プレゼンテーション層 (Kibana)
注記

director は、集中ロギング向けのサーバー側のコンポーネントはデプロイしません。Red Hat では、ログアグリゲーターとして実行するプラグインを使用する Elasticsearch データベース、Kibana、Fluentd などのサーバー側のコンポーネントはサポートしていません。

以下の図は、集中ロギングのコンポーネントとそれらの対話を示しています。

注記

青で示した項目は Red Hat のサポート対象コンポーネントです。

図12.1 集中ロギングのハイレベルアーキテクチャー

集中ロギング arch

図12.2 Red Hat OpenStack Platform の単一ノードデプロイメント

集中ロギング単一ノード fluentd

図12.3 Red Hat OpenStack Platform の HA デプロイメント

集中ロギング ha fluentd

12.1.2. 可用性監視

可用性監視により、OpenStack 環境全体にわたる全コンポーネントのハイレベルな機能性を一元的に監視することができます。

可用性監視のツールチェーンは、以下を含む複数のコンポーネントで設定されます。

  • 監視エージェント (Sensu クライアント)
  • 監視リレー/プロキシー (RabbitMQ)
  • 監視コントローラー/サーバー (Sensu サーバー)
  • API/プレゼンテーション層 (Uchiwa)
注記

director はサーバー側の可用性監視のコンポーネントはデプロイしません。Red Hat では、Uchiwa、Sensu Server、Sensu API plus、RabbitMQ、監視ノードで実行する Redis インスタンスなどのサーバー側のコンポーネントはサポートしていません。

以下の図は、可用性監視のコンポーネントとそれらの対話を示しています。

注記

青で示した項目は Red Hat のサポート対象コンポーネントです。

図12.4 可用性監視のハイレベルアーキテクチャー

可用性監視 arch

図12.5 Red Hat OpenStack Platform の単一ノードデプロイメント

可用性監視単一ノード sensu

図12.6 Red Hat OpenStack Platform の HA デプロイメント

可用性監視 ha sensu

12.2. クライアント側のツールのインストール

オーバークラウドをデプロイする前に、各クライアントに適用する設定を決定する必要があります。director の Heat テンプレートコレクションからサンプルの環境ファイルをコピーし、ご使用の環境に応じてファイルを変更します。

12.2.1. 集中ログクライアントパラメーターの設定

Fluentd の設定設定には、/usr/share/openstack-tripleo-heat-templates/environments/logging-environment.yaml をコピーし、ご使用の環境に応じてファイルを変更します。以下に例を示します。

簡易設定

resource_registry:
  OS::TripleO::Services::FluentdClient: ../puppet/services/logging/fluentd-client.yaml

parameter_defaults:
  LoggingServers:
    - host: log0.example.com
      port: 24224
    - host: log1.example.com
      port: 24224

SSL の設定例

## (note the use of port 24284 for ssl connections)

resource_registry:
  OS::TripleO::Services::FluentdClient: ../puppet/services/logging/fluentd-client.yaml

parameter_defaults:
  LoggingServers:
    - host: 192.0.2.11
      port: 24284
  LoggingUsesSSL: true
  LoggingSharedKey: secret
  LoggingSSLCertificate: |
    -----BEGIN CERTIFICATE-----
    ...certificate data here...
    -----END CERTIFICATE-----

  • LoggingServers - Fluentd ログメッセージを受信する宛先システム。
  • LoggingUsesSSL - ログメッセージの転送時に secure_forward を使用するかどうかを決定する設定。
  • LoggingSharedKey: secure_forward が使用する共有シークレット
  • LoggingSSLCertificate: PEM エンコードされた SSL CA 証明書の内容

12.2.2. 可用性モニタリングクライアントパラメーターの設定

Sensu クライアントの設定設定には、/usr/share/openstack-tripleo-heat-templates/environments/monitoring-environment.yaml をコピーし、ご使用の環境に応じてファイルを変更します。以下に例を示します。

resource_registry:
  OS::TripleO::Services::SensuClient: ../puppet/services/monitoring/sensu-client.yaml

parameter_defaults:
  MonitoringRabbitHost: 10.10.10.10
  MonitoringRabbitPort: 5672
  MonitoringRabbitUserName: sensu
  MonitoringRabbitPassword: sensu
  MonitoringRabbitUseSSL: false
  MonitoringRabbitVhost: "/sensu"
  SensuClientCustomConfig:
    api:
      warning: 10
      critical: 20
  • MonitoringRabbit* - これらのパラメーターは、Sensu クライアントサービスを、モニタリングサーバーで実行される RabbitMQ インスタンスに接続します。
  • MonitoringRabbitUseSSL - このパラメーターは現在、可用性のモニタリングには使用できません。
  • SensuClientCustomConfig: Sensu クライアントの追加の設定を指定します。ユーザー名/パスワード、auth_url、テナント、リージョンを含む OpenStack の認証情報を定義します。

12.2.3. オーバークラウドノードへの運用ツールのインストール

openstack overcloud deploy コマンドで変更した YAML ファイルを指定して、Sensu クライアントと Fluentd ツールを全オーバークラウドノードにインストールします。以下に例を示します。

$ openstack overcloud deploy --templates  -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e network-environment.yaml -e ~/templates/monitoring-environment.yaml -e ~/templates/logging-environment.yaml --control-scale 3 --compute-scale 1 --ntp-server 192.168.122.10

12.3. サーバー側コンポーネントをインストールする

注記

Red Hat では、サーバー側のコンポーネントおよびそれらのデプロイメントプロセスはサポートしていません。

opstools-ansible Playbook を使用してサーバー側のコンポーネントを Red Hat Enterprise Linux 7 にインストールすることができます。これらのサーバー側のコンポーネントには、Red Hat がサポートするクライアント側のコンポーネントを補完する可用性監視や集中ロギングのサービスが含まれます。最も多く検証される opstools-ansible のシナリオは、サーバー側のコンポーネントを CentOS 7 にデプロイするシナリオです。詳しい手順については、https://github.com/centos-opstools/opstools-ansibleREADME.rst を参照してください。

12.4. OpenStack Platform の監視

Sensu スタックインフラストラクチャーの詳細については、Sensu のドキュメントを参照してください: https://sensuapp.org/docs/latest/overview/architecture.html

Red Hat は、osops-tools-monitoring-oschecks パッケージで、check スクリプトのセットを提供しています。check スクリプトの大半は、OpenStack コンポーネントへの API 接続のみをチェックします。ただし、特定のスクリプトは、OpenStack Compute (nova)、OpenStack Block Storage (cinder)、OpenStack Image (glance)、OpenStack Networking (neutron) を対象とする追加の OpenStack リソースのテストも実行します。たとえば、OpenStack Identity (keystone) API check は、keystone の実行時に以下の結果を返します。

OK: Got a token, Keystone API is working.

12.5. Sensu クライアントインストールの検証

  1. 各オーバークラウドノードで sensu-client のステータスを確認します。

    # systemctl status sensu-client
  2. エラーログで問題を確認してください: /var/log/sensu/sensu-client.log
  3. 各オーバークラウドノードに、モニタリングサーバーの IP アドレスを設定する /etc/sensu/conf.d/rabbitmq.json ファイルがあることを確認します。

12.6. ノードの状態の確認

Uchiwa ダッシュボードがデプロイされている場合には、そのダッシュボードを Sensu サーバーと共に使用して、ノードの状態を確認することができます。

  1. Uchiwa ダッシュボードにログインして、Data Center タブをクリックし、データセンターが稼働中であることを確認します。

    http://<SERVER_IP_ADDRESS>/uchiwa
  2. 全オーバークラウドノードが Connected の状態であることを確認します。
  3. オーバークラウドノードの 1 台を適時に再起動し、そのノードのステータスを Uchiwa ダッシュボードで確認します。再起動の完了後には、ノードが Sensu サーバーに正常に再接続されて check の実行を開始するかどうかを確認します。

12.7. OpenStack サービスの状態の確認

以下の例では、openstack-ceilometer-central サービスの監視をテストします。

  1. openstack-ceilometer-central サービスが実行中であることを確認します。

    systemctl status openstack-ceilometer-central.service
  2. Uchiwa ダッシュボードに接続して、正常な ceilometer check があり、ceilometer JSON ファイルで定義されているとおりに実行されていることを確認します。
  3. openstack-ceilometer-central サービスを停止します。

    注記

    これによりサービスが中断される可能性があるため、適切なタイミングでこのテストを実行してください。

    systemctl stop openstack-ceilometer-central.service
  4. Uchiwa ダッシュボードにログインし、ceilometer チェックの失敗がレポートされていることを確認します。
  5. openstack-ceilometer-central サービスを開始します。

    systemctl start openstack-ceilometer-central.service
  6. Uchiwa ダッシュボードにログインし、ceilometer チェックレポート間の間隔を表示して、ceilometer JSON ファイルで定義された間隔でチェックが実行されることを確認します。

第13章 セキュリティーの強化

以下の項では、オーバークラウドのセキュリティーを強化するための推奨事項について説明します。

13.1. オーバークラウドのファイアウォールの管理

OpenStack Platform の各コアサービスには、それぞれのコンポーザブルサービステンプレートにファイアウォールルールが含まれています。これにより、各オーバークラウドノードにファイアウォールルールのデフォルトセットが自動的に作成されます。

オーバークラウドの Heat テンプレートには、追加のファイアウォール管理に役立つパラメーターのセットが含まれています。

ManageFirewall
ファイアウォールルールを自動管理するかどうかを定義します。true に設定すると、Puppet は各ノードでファイアウォールを自動的に設定することができます。ファイアウォールを手動で管理する場合には false に設定してください。デフォルトは true です。
PurgeFirewallRules
ファイアウォールルールを新規設定する前に、デフォルトの Linux ファイアウォールルールを完全削除するかどうかを定義します。デフォルトは false です。

ManageFirewalltrue に設定されている場合には、デプロイメントに追加のファイアウォールルールを作成することができます。オーバークラウドの環境ファイルで、設定フックを使用して (「Puppet: ロール用 hieradata のカスタマイズ」を参照) tripleo::firewall::firewall_rules hieradata を設定します。この hieradata は、ファイアウォールルール名とそれぞれのパラメーター (すべてオプション) を鍵として記載したハッシュです。

port
ルールに関連付けられたポート
dport
ルールに関連付けられた宛先ポート
sport
ルールに関連付けられた送信元ポート
proto
ルールに関連付けられたプロトコル。デフォルトは tcp です。
action
ルールに関連付けられたアクションポリシー。デフォルトは accept です。
jump
ジャンプ先のチェーン。設定されている場合には action を上書きします。
state
ルールに関連付けられた状態の配列。デフォルトは ['NEW'] です。
source
ルールに関連付けられた送信元の IP アドレス
iniface
ルールに関連付けられたネットワークインターフェイス
chain
ルールに関連付けられたチェーン。デフォルトは INPUT です。
destination
ルールに関連付けられた宛先の CIDR

以下の例は、ファイアウォールルールの形式の構文を示しています。

ExtraConfig:
  tripleo::firewall::firewall_rules:
    '300 allow custom application 1':
      port: 999
      proto: udp
      action: accept
    '301 allow custom application 2':
      port: 8081
      proto: tcp
      action: accept

この設定では、ExtraConfig により、追加で 2 つのファイアウォールルールが 全ノードに適用されます。

注記

各ルール名はそれぞれの iptables ルールのコメントになります。各ルール名は、3 桁の接頭辞で始まる点に注意してください。この接頭辞は、Puppet が最終の iptables ファイルに記載されている定義済みの全ルールを順序付けるのに役立ちます。デフォルトの OpenStack Platform ルールは、000 から 200 までの範囲の接頭辞を使用します。

13.2. Simple Network Management Protocol (SNMP) 文字列の変更

director は、オーバークラウド向けのデフォルトの読み取り専用 SNMP 設定を提供します。SNMP の文字列を変更して、権限のないユーザーがネットワークデバイスに関する情報を取得するリスクを軽減することを推奨します。

オーバークラウドの環境ファイルで ExtraConfig フックを使用して、以下の hieradata を設定します。

snmp::ro_community
IPv4 の読み取り専用 SNMP コミュニティー文字列。デフォルト値は public です。
snmp::ro_community6
IPv6 の読み取り専用 SNMP コミュニティー文字列。デフォルト値は public です。
snmp::ro_network
デーモンへの RO クエリー が許可されるネットワーク。この値は文字列または配列のいずれかです。デフォルト値は 127.0.0.1 です。
snmp::ro_network6
デーモンへの IPv6 RO クエリー が許可されるネットワーク。この値は文字列または配列のいずれかです。デフォルト値は ::1/128 です。
snmp::snmpd_config
安全弁として snmpd.conf に追加する行の配列。デフォルト値は [] です。利用できるすべてのオプションについては、SNMP 設定ファイル に関する Web ページを参照してください。

以下に例を示します。

parameter_defaults:
  ExtraConfig:
    snmp::ro_community: mysecurestring
    snmp::ro_community6: myv6securestring

これにより、全ノードで、読み取り専用の SNMP コミュニティー文字列が変更されます。

13.3. HAProxy の SSL/TLS の暗号およびルールの変更

オーバークラウドで SSL/TLS を有効化した場合には (9章オーバークラウドでの SSL/TLS の有効化を参照)、HAProxy 設定を使用する SSL/TLS の暗号とルールを強化することをお勧めします。これにより、POODLE TLS 脆弱性 などの SSL/TLS の脆弱性を回避することができます。

オーバークラウドの環境ファイルで ExtraConfig フックを使用して、以下の hieradata を設定します。

tripleo::haproxy::ssl_cipher_suite
HAProxy で使用する暗号スイート
tripleo::haproxy::ssl_options
HAProxy で使用する SSL/TLS ルール

たとえば、以下のような暗号およびルールを使用することができます。

  • 暗号: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
  • ルール: no-sslv3 no-tls-tickets

以下の内容で環境ファイルを作成します。

parameter_defaults:
  ExtraConfig:
    tripleo::haproxy::ssl_cipher_suite: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
    tripleo::haproxy::ssl_options: no-sslv3 no-tls-tickets
注記

暗号のコレクションは、改行せずに 1 行に記述します。

オーバークラウドの作成時にこの環境ファイルを追加します。

第14章 その他の設定

14.1. 外部の負荷分散機能の設定

オーバークラウドは、複数のコントローラーを合わせて、高可用性クラスターとして使用し、OpenStack サービスのオペレーションパフォーマンスを最大限に保つようにします。さらに、クラスターにより、OpenStack サービスへのアクセスの負荷分散が行われ、コントローラーノードに均等にトラフィックを分配して、各ノードのサーバーで過剰負荷を軽減します。また、外部のロードバランサーを使用して、この分散を実行することも可能です。たとえば、組織で、コントローラーノードへのトラフィックの分散処理に、ハードウェアベースのロードバランサーを使用する場合などです。

外部の負荷分散機能の設定に関する詳しい情報は、全手順が記載されている専用の オーバークラウドのための外部負荷分散 を参照してください。

14.2. IPv6 ネットワークの設定

デフォルトでは、オーバークラウドは、インターネットプロトコルのバージョン 4 (IPv4) を使用してサービスのエンドポイントを設定します。ただし、オーバークラウドはインターネットプロトコルのバージョン 6 (IPv6) のエンドポイントもサポートします。これは、IPv6 のインフラストラクチャーをサポートする組織には便利です。director には、IPv6 ベースのオーバークラウドの作成に役立つ環境ファイルのセットが含まれています。

オーバークラウドでの IPv6 の設定に関する詳しい情報は、全手順が記載されている専用の オーバークラウドのための IPv6 ネットワーキング を参照してください。

付録A ネットワーク環境オプション

表A.1 ネットワーク環境オプション

パラメーター説明

InternalApiNetCidr

内部 API ネットワークのネットワークとサブネット

172.17.0.0/24

StorageNetCidr

ストレージネットワークのネットワークとサブネット

 

StorageMgmtNetCidr

ストレージ管理ネットワークのネットワークとサブネット

 

TenantNetCidr

テナントネットワークのネットワークとサブネット

 

ExternalNetCidr

外部ネットワークのネットワークとサブネット

 

InternalApiAllocationPools

タプル形式の内部 API ネットワークの割り当てプール

{ 開始: 172.17.0.10終了: 172.17.0.200 }

StorageAllocationPools

タプル形式の Storage ネットワークの割り当てプール

 

StorageMgmtAllocationPools

タプル形式のストレージ管理ネットワークの割り当てプール

 

TenantAllocationPools

タプル形式のテナントネットワークの割り当てプール

 

ExternalAllocationPools

タプル形式の外部ネットワークの割り当てプール

 

InternalApiNetworkVlanID

内部 API ネットワークの VLAN ID

200

StorageNetworkVlanID

ストレージネットワークの VLAN ID

 

StorageMgmtNetworkVlanID

ストレージ管理ネットワークの VLAN ID

 

TenantNetworkVlanID

テナントネットワークの VLAN ID

 

ExternalNetworkVlanID

外部ネットワークの VLAN ID

 

ExternalInterfaceDefaultRoute

外部ネットワークのゲートウェイ IP アドレス

10.1.2.1

ControlPlaneDefaultRoute

プロビジョニングネットワーク (またはアンダークラウド IP) のゲートウェイルーター

ControlPlaneDefaultRoute: 192.0.2.254

ControlPlaneSubnetCidr

ネットワークをプロビジョニングするための CIDR サブネットマスクの長さ

ControlPlaneSubnetCidr: 24

EC2MetadataIp

EC2 メタデータサーバーの IP アドレス。通常、アンダークラウドの IP。

EC2MetadataIp: 192.0.2.1

DnsServers

オーバークラウドノードの DNS サーバーを定義します。最大 2 つまで含めます。

DnsServers: ["8.8.8.8","8.8.4.4"]

BondInterfaceOvsOptions

ボンディングインターフェイスのオプション。

BondInterfaceOvsOptions:"bond_mode=balance-slb"

NeutronFlatNetworks

フラットなネットワークが neutron プラグインで設定されるように定義します。外部ネットワークを作成ができるようにデフォルトは datacentre に設定されています。

NeutronFlatNetworks: "datacentre"

NeutronExternalNetworkBridge

各ハイパーバイザーで作成する Open vSwitch ブリッジ。通常、このパラメーターを変更する必要はありません。

NeutronExternalNetworkBridge: "''"

NeutronBridgeMappings

使用する論理ブリッジから物理ブリッジへのマッピング。ホストの外部ブリッジ (br-ex) を物理名 (datacentre) にマッピングするようにデフォルト設定されています。これは、デフォルトの Floating ネットワークに使用されます。

NeutronBridgeMappings: "datacentre:br-ex"

NeutronPublicInterface

ネットワークノード向けに br-ex にブリッジするインターフェイスを定義します。

NeutronPublicInterface: "eth0"

NeutronNetworkType

Neutron のテナントネットワーク種別

NeutronNetworkType: "vxlan"

NeutronTunnelTypes

neutron テナントネットワークのトンネリング種別。複数の値を指定するには、コンマ区切りの文字列を使用します。

NeutronTunnelTypes: gre,vxlan

NeutronTunnelIdRanges

テナントネットワークを割り当てに使用できる GRE トンネリングの ID 範囲

NeutronTunnelIdRanges "1:1000"

NeutronVniRanges

テナントネットワークを割り当てに使用できる VXLAN VNI の ID 範囲

NeutronVniRanges: "1:1000"

NeutronEnableTunnelling

Neutron で VLAN セグメント化ネットワークまたはフラットネットワークを使用する場合に、トンネリングを有効にするか無効にするかを定義します。デフォルトでは有効に設定されています。

 

NeutronNetworkVLANRanges

サポートされる neutron ML2 および Open vSwitch VLAN マッピングの範囲。デフォルトでは、物理ネットワーク datacentre 上の VLAN を許可するように設定されています。

NeutronNetworkVLANRanges: "datacentre:1:1000"

NeutronMechanismDrivers

neutron テナントネットワークのメカニズムドライバー。デフォルトは openvswitch です。複数の値を指定するには、コンマ区切りの文字列を使用します。

NeutronMechanismDrivers: openvswitch,l2population

付録B ネットワークインターフェイステンプレートの例

この付録では、Heat テンプレートの例をいくつか示して、ネットワークインターフェイスの設定を示します。

B.1. インターフェイスの設定

インターフェイスは個別に変更を加える必要がある場合があります。以下の例では、DHCP アドレスでインフラストラクチャーネットワークへ接続するための 2 つ目の NIC、ボンディング用の 3 つ目/4 つ目の NIC を使用するのに必要となる変更を紹介します。

network_config:
  # Add a DHCP infrastructure network to nic2
  -
    type: interface
    name: nic2
    use_dhcp: true
  -
    type: ovs_bridge
    name: br-bond
    members:
      -
        type: ovs_bond
        name: bond1
        ovs_options: {get_param: BondInterfaceOvsOptions}
        members:
          # Modify bond NICs to use nic3 and nic4
          -
            type: interface
            name: nic3
            primary: true
          -
            type: interface
            name: nic4

ネットワークインターフェイスのテンプレートは、実際のインターフェイス名 (eth0、eth1、enp0s25) または番号付きのインターフェイス (nic1、nic2、nic3) のいずれかを使用します。名前付きのインターフェイス (eth0eno2 など) ではなく、番号付きのインターフェイス (nic1nic2 など) を使用した場合には、ロール内のホストのネットワークインターフェイスは、全く同じである必要はありません。たとえば、あるホストに em1em2 のインターフェイスが指定されており、別のホストには eno1eno2 が指定されていても、両ホストの NIC は nic1 および nic2 として参照することができます。

番号付きのインターフェイスの順序は、名前付きのネットワークインターフェイスのタイプの順序と同じです。

  • eth0eth1 などの ethX。これらは、通常オンボードのインターフェイスです。
  • eno0eno1 などの enoX。これらは、通常オンボードのインターフェイスです。
  • enp3s0enp3s1ens3 などの英数字順の enX インターフェイス。これらは、通常アドオンのインターフェイスです。

番号付きの NIC スキームは、ライブのインターフェイス (例: スイッチに接続されているケーブル) のみ考慮します。4 つのインターフェイスを持つホストと、6 つのインターフェイスを持つホストがある場合に、各ホストで nic1 から nic4 を使用してケーブル 4 本のみを結線します。

B.2. ルートおよびデフォルトルートの設定

ホストにデフォルトのルートセットを指定するには 2 つの方法があります。インターフェイスが DHCP を使用しており、DHCP がゲートウェイアドレスを提供している場合には、システムは対象のゲートウェイに対してデフォルトルートを使用します。それ以外の場合には、静的な IP を使用するインターフェイスにデフォルトのルートを設定することができます。

Linux カーネルは複数のデフォルトゲートウェイをサポートしますが、最も低いメトリックが指定されたゲートウェイのみを使用します。複数の DHCP インターフェイスがある場合には、どのデフォルトゲートウェイが使用されるかが推測できなくなります。このような場合には、デフォルトルートを使用しないインターフェイスに defroute=no を設定することを推奨します。

たとえば、DHCP インターフェイス (nic3) をデフォルトのルートに指定する場合があります。そのためには、以下の YAML を使用して別の DHCP インターフェイス (nic2) 上のデフォルトのルートを無効にします。

# No default route on this DHCP interface
- type: interface
  name: nic2
  use_dhcp: true
  defroute: false
# Instead use this DHCP interface as the default route
- type: interface
  name: nic3
  use_dhcp: true
注記

defroute パラメーターは DHCP で取得したルートのみに適用されます。

静的な IP が指定されたインターフェイスに静的なルートを設定するには、サブネットにルートを指定します。たとえば、Internal API ネットワーク上のゲートウェイ 172.17.0.1 を経由してサブネット 10.1.2.0/24 へのルートを設定します。

    - type: vlan
      device: bond1
      vlan_id: {get_param: InternalApiNetworkVlanID}
      addresses:
      - ip_netmask: {get_param: InternalApiIpSubnet}
      routes:
      - ip_netmask: 10.1.2.0/24
        next_hop: 172.17.0.1

B.3. フローティング IP にネイティブ VLAN を使用する

Neutron は、Neutron の外部のブリッジマッピングにデフォルトの空の文字列を使用します。これにより、物理インターフェイスは br-ex の代わりに br-int を使用して直接マッピングされます。このモデルにより、VLAN または複数の物理接続のいずれかを使用した複数の Floating IP ネットワークが可能となります。

ネットワーク分離環境ファイルの parameter_defaults セクションで NeutronExternalNetworkBridge パラメーターを使用します。

  parameter_defaults:
    # Set to "br-ex" when using floating IPs on the native VLAN
    NeutronExternalNetworkBridge: "''"

ブリッジのネイティブ VLAN 上で使用する Floating IP ネットワークが 1 つのみの場合には、オプションで Neutron の外部ブリッジを設定できます。これにより、パケットが通過するブリッジは 2 つではなく 1 つとなり、Floating IP ネットワーク上でトラフィックを渡す際の CPU の使用率がやや低くなる可能性があります。

B.4. トランクインターフェイスでのネイティブ VLAN の使用

トランキングされたインターフェイスまたはボンディングに、ネイティブ VLAN を使用したネットワークがある場合には、IP アドレスはブリッジに直接割り当てられ、VLAN インターフェイスはありません。

たとえば、External ネットワークがネイティブ VLAN に存在する場合には、ボンディングの設定は以下のようになります。

network_config:
  - type: ovs_bridge
    name: {get_input: bridge_name}
    dns_servers: {get_param: DnsServers}
    addresses:
      - ip_netmask: {get_param: ExternalIpSubnet}
    routes:
      - ip_netmask: 0.0.0.0/0
        next_hop: {get_param: ExternalInterfaceDefaultRoute}
    members:
      - type: ovs_bond
        name: bond1
        ovs_options: {get_param: BondInterfaceOvsOptions}
        members:
          - type: interface
            name: nic3
            primary: true
          - type: interface
            name: nic4
注記

アドレス (またはルート) のステートメントをブリッジに移動する場合には、対応する VLAN インターフェイスをそのブリッジから削除します。該当する全ロールに変更を加えます。External ネットワークはコントローラーのみに存在するため、変更する必要があるのはコントローラーのテンプレートだけです。反対に、Storage ネットワークは全ロールにアタッチされているため、Storage ネットワークがデフォルトの VLAN の場合には、全ロールを変更する必要があります。

B.5. ジャンボフレームの設定

最大伝送単位 (MTU) の設定は、単一の Ethernet フレームで転送されるデータの最大量を決定します。各フレームはヘッダー形式でデータを追加するため、より大きい値を指定すると、オーバーヘッドが少なくなります。デフォルト値が 1500 で、1500 より高い値を使用する場合には、ジャンボフレームをサポートするスイッチポートの設定が必要になります。大半のスイッチは、9000 以上の MTU 値をサポートしていますが、それらの多くはデフォルトで 1500 に指定されています。

VLAN の MTU は、物理インターフェイスの MTU を超えることができません。ボンディングまたはインターフェイスで MTU 値を含めるようにしてください。

ジャンボフレームは、Storage、Storage Management、Internal API、Tenant ネットワーキングのすべてにメリットをもたらします。テストでは、ジャンボフレームを VXLAN トンネルと組み合わせて使用すると、テナントネットワークのスループットが 300% 以上向上しました。

注記

プロビジョニングインターフェイス、外部インターフェイス、Floating IP インターフェイスの MTU はデフォルトの 1500 のままにしておくことを推奨します。変更すると、接続性の問題が発生する可能性があります。これは、ルーターが通常レイヤー 3 の境界を超えてジャンボフレームでのデータを転送できないためです。

- type: ovs_bond
  name: bond1
  mtu: 9000
  ovs_options: {get_param: BondInterfaceOvsOptions}
  members:
    - type: interface
      name: nic3
      mtu: 9000
      primary: true
    - type: interface
      name: nic4
      mtu: 9000

# The external interface should stay at default
- type: vlan
  device: bond1
  vlan_id: {get_param: ExternalNetworkVlanID}
  addresses:
    - ip_netmask: {get_param: ExternalIpSubnet}
  routes:
    - ip_netmask: 0.0.0.0/0
      next_hop: {get_param: ExternalInterfaceDefaultRoute}

# MTU 9000 for Internal API, Storage, and Storage Management
- type: vlan
  device: bond1
  mtu: 9000
  vlan_id: {get_param: InternalApiNetworkVlanID}
  addresses:
  - ip_netmask: {get_param: InternalApiIpSubnet}

付録C ネットワークインターフェイスパラメーター

次の表では、ネットワークインターフェイスタイプの Heat テンプレートパラメーターを定義しています。

C.1. interface のオプション

オプション

デフォルト

説明

name

 

インターフェイス名

use_dhcp

False

DHCP を使用して IP アドレスを取得します。

use_dhcpv6

False

DHCP を使用して v6 の IP アドレスを取得します。

addresses

 

インターフェイスに割り当てられた一連の IP アドレス

routes

 

インターフェイスに割り当てられた一連のルート

mtu

1500

接続の最大伝送単位 (MTU: Maximum Transmission Unit)

primary

False

プライマリーインターフェイスとしてインターフェイスを定義します。

defroute

True

このインターフェイスをデフォルトルートとして使用する

persist_mapping

False

システム名の代わりにデバイスのエイリアス設定を記述します。

dhclient_args

なし

DHCP クライアントに渡す引数

dns_servers

なし

インターフェイスに使用する DNS サーバーの一覧

C.2. VLAN のオプション

オプション

デフォルト

説明

vlan_id

 

VLAN ID

device

 

VLAN を接続する VLAN の親デバイス。たとえば、このパラメーターを使用して、ボンディングされたインターフェイスデバイスに VLAN を接続します。

use_dhcp

False

DHCP を使用して IP アドレスを取得します。

use_dhcpv6

False

DHCP を使用して v6 の IP アドレスを取得します。

addresses

 

VLAN に割り当てられた一連の IP アドレス

routes

 

VLAN に割り当てられた一連のルート

mtu

1500

接続の最大伝送単位 (MTU: Maximum Transmission Unit)

primary

False

プライマリーインターフェイスとして VLAN を定義します。

defroute

True

このインターフェイスをデフォルトルートとして使用する

persist_mapping

False

システム名の代わりにデバイスのエイリアス設定を記述します。

dhclient_args

なし

DHCP クライアントに渡す引数

dns_servers

なし

VLAN に使用する DNS サーバーの一覧

C.3. OVS Bond のオプション

オプション

デフォルト

説明

name

 

ボンディング名

use_dhcp

False

DHCP を使用して IP アドレスを取得します。

use_dhcpv6

False

DHCP を使用して v6 の IP アドレスを取得します。

addresses

 

ボンドに割り当てられた一連の IP アドレス

routes

 

ボンドに割り当てられた一連のルート

mtu

1500

接続の最大伝送単位 (MTU: Maximum Transmission Unit)

primary

False

プライマリーインターフェイスとしてインターフェイスを定義します。

members

 

ボンディングで使用するインターフェイスオブジェクトの一覧

ovs_options

 

ボンディング作成時に OVS に渡すオプションのセット

ovs_extra

 

ボンディングのネットワーク設定ファイルで OVS_EXTRA パラメーターとして設定するオプションのセット

defroute

True

このインターフェイスをデフォルトルートとして使用する

persist_mapping

False

システム名の代わりにデバイスのエイリアス設定を記述します。

dhclient_args

なし

DHCP クライアントに渡す引数

dns_servers

なし

ボンディングに使用する DNS サーバーの一覧

C.4. OVS Bridge のオプション

オプション

デフォルト

説明

name

 

ブリッジ名

use_dhcp

False

DHCP を使用して IP アドレスを取得します。

use_dhcpv6

False

DHCP を使用して v6 の IP アドレスを取得します。

addresses

 

ブリッジに割り当てられた一連の IP アドレス

routes

 

ブリッジに割り当てられた一連のルート

mtu

1500

接続の最大伝送単位 (MTU: Maximum Transmission Unit)

members

 

ブリッジで使用するインターフェイス、VLAN、ボンディングオブジェクトの一覧

ovs_options

 

ブリッジ作成時に OVS に渡すオプションのセット

ovs_extra

 

ブリッジのネットワーク設定ファイルで OVS_EXTRA パラメーターとして設定するオプションのセット

defroute

True

このインターフェイスをデフォルトルートとして使用する

persist_mapping

False

システム名の代わりにデバイスのエイリアス設定を記述します。

dhclient_args

なし

DHCP クライアントに渡す引数

dns_servers

なし

ブリッジに使用する DNS サーバーの一覧

C.5. Linux Bond のオプション

オプション

デフォルト

説明

name

 

ボンディング名

use_dhcp

False

DHCP を使用して IP アドレスを取得します。

use_dhcpv6

False

DHCP を使用して v6 の IP アドレスを取得します。

addresses

 

ボンドに割り当てられた一連の IP アドレス

routes

 

ボンドに割り当てられた一連のルート

mtu

1500

接続の最大伝送単位 (MTU: Maximum Transmission Unit)

primary

False

プライマリーインターフェイスとしてインターフェイスを定義します。

members

 

ボンディングで使用するインターフェイスオブジェクトの一覧

bonding_options

 

ボンディングを作成する際のオプションのセット。Linux ボンディングオプションの詳細については、次を参照してください。 4.5.1.結合モジュールディレクティブRed Hat Enterprise Linux 7 ネットワークガイドに記載されています。

defroute

True

このインターフェイスをデフォルトルートとして使用する

persist_mapping

False

システム名の代わりにデバイスのエイリアス設定を記述します。

dhclient_args

なし

DHCP クライアントに渡す引数

dns_servers

なし

ボンディングに使用する DNS サーバーの一覧

C.6. Linux Bridge のオプション

オプション

デフォルト

説明

name

 

ブリッジ名

use_dhcp

False

DHCP を使用して IP アドレスを取得します。

use_dhcpv6

False

DHCP を使用して v6 の IP アドレスを取得します。

addresses

 

ブリッジに割り当てられた一連の IP アドレス

routes

 

ブリッジに割り当てられた一連のルート

mtu

1500

接続の最大伝送単位 (MTU: Maximum Transmission Unit)

members

 

ブリッジで使用するインターフェイス、VLAN、ボンディングオブジェクトの一覧

defroute

True

このインターフェイスをデフォルトルートとして使用する

persist_mapping

False

システム名の代わりにデバイスのエイリアス設定を記述します。

dhclient_args

なし

DHCP クライアントに渡す引数

dns_servers

なし

ブリッジに使用する DNS サーバーの一覧

付録D ボンディングオプション

複数の物理 NIC をバンドルして、単一の論理チャネルを形成することができます。この設定はボンディングとも呼ばれます。ボンディング設定にすることにより、高可用性システムに冗長性を持たせたり、スループットを向上させたりすることができます。

D.2. Open vSwitch ボンディングのオプション

オーバークラウドは、Open vSwtich (OVS) を介してネットワークを提供します。以下の表は、ボンディングされたインターフェイスに関する OVS カーネルおよび OVS-DPDK のサポートについてまとめています。OVS/OVS-DPDK balance-tcp モードは、テクノロジープレビューとしてのみ利用可能です。

注記

次の表で説明するボンディングオプションには、OVS 2.9 以降が必要です。

OVS ボンディングモード

用途

備考

互換性のある LACP オプション

active-backup

高可用性 (active-passive)

 

active、passive、または off

balance-slb

スループットの向上 (active-active)

  • パフォーマンスは、パケットあたりの追加パース量の影響を受けます。
  • vhost-user ロック競合が生じる可能性があります。

active、passive、または off

balance-tcp (テクノロジープレビューのみ)

推奨されない (active-active)

  • L4 ハッシュに必要な再循環が、パフォーマンスに影響を及ぼします。
  • balance-slb と同様に、パフォーマンスはパケットあたりの追加パース量の影響を受け、vhost-user ロック競合が生じる可能性があります。
  • LACP を有効にする必要があります。

active または passive

以下の例に示すように、ネットワークの環境ファイルで BondInterfaceOvsOptions パラメーターを使用して、ボンディングされたインターフェイスを設定することができます。

parameter_defaults:
  BondInterfaceOvsOptions: "bond_mode=balance-slb"

D.3. balance-tcp モードに関する考慮事項

テクニカルプレビューステータスと既知のパフォーマンスの問題にもかかわらず、balance-tcp モードを使用することにした場合は、デプロイメント前に各ネットワークインターフェイス設定 (NIC) ファイルから次の行を手動で削除する必要があります。

    constraints:
      - allowed_pattern: "^((?!balance.tcp).)*$"
        description: |
          The balance-tcp bond mode is known to cause packet loss and
          should not be used in BondInterfaceOvsOptions.

各 NIC ファイルから制約を削除した後、ボンディングインターフェイスパラメーターでボンディングモードオプションを設定できます。

  BondInterfaceOvsOptions:
    "bond_mode=balance-tcp"

D.4. Linux Bonding のオプション

ネットワークインターフェイスのテンプレートにおいて、LACP を Linux ボンディングで使用することができます。以下に例を示します。

      - type: linux_bond
        name: bond1
        members:
        - type: interface
          name: nic2
        - type: interface
          name: nic3
        bonding_options: "mode=802.3ad lacp_rate=[fast|slow] updelay=1000 miimon=100"
  • mode: LACP を有効にします。
  • lacp_rate: LACP パケットの送信間隔を 1 秒または 30 秒に定義します。
  • updelay: インターフェイスをトラフィックに使用する前にそのインターフェイスがアクティブである必要のある最低限の時間を定義します (これは、ポートフラッピングによる停止を軽減するのに役立ちます)。
  • miimon: ドライバーの MIIMON 機能を使用してポートの状態を監視する間隔 (ミリ秒単位)。

Linux ボンディングオプションの詳細については、Red Hat Enterprise Linux 7 ネットワークガイド 4.5.1. 結合モジュールディレクティブ を参照してください。

D.5. ボンディングオプション

以下の表には、これらのオプションについての説明と、ハードウェアに応じた代替手段を記載しています。

表D.1 ボンディングオプション

bond_mode=balance-slb

送信元の MAC アドレスと出力の VLAN に基づいてフローのバランスを取り、トラフィックパターンの変化に応じて定期的にリバランスを行います。ボンディングを balance-slb に設定することにより、リモートスイッチについての知識や協力なしに限定された形態の負荷分散が可能となります。SLB は送信元 MAC アドレスと VLAN の各ペアをリンクに割り当て、そのリンクを介して、対象の MAC アドレスと LAN からのパケットをすべて伝送します。このモードはトラフィックパターンの変化に応じて定期的にリバランスを行う、送信元 MAC アドレスと VLAN の番号に基づいた、簡単なハッシュアルゴリズムを使用します。このモードは、Linux ボンディングドライバーで使用されているモード 2 のボンディングに類似しています。

bond_mode=active-backup

このモードは、アクティブな接続が失敗した場合にスタンバイの NIC がネットワーク操作を再開するアクティブ/スタンバイ設定のフェイルオーバーを提供します。物理スイッチに提示される MAC アドレスは 1 つのみです。このモードには、特別なスイッチのサポートや設定は必要なく、リンクが別のスイッチに接続された際に機能します。このモードは、負荷分散機能は提供しません。

lacp=[active|passive|off]

Link Aggregation Control Protocol (LACP) の動作を制御します。LACP をサポートしているのは特定のスイッチのみです。お使いのスイッチが LACP に対応していない場合には bond_mode=balance-slb または bond_mode=active-backup を使用してください。

other-config:lacp-fallback-ab=true

フォールバックとして bond_mode=active-backup に切り替わるように LACP の動作を設定します。

other_config:lacp-time=[fast|slow]

LACP のハートビートを 1 秒 (高速) または 30 秒 (低速) に設定します。デフォルトは低速です。

other_config:bond-detect-mode=[miimon|carrier]

リンク検出に miimon ハートビート (miimon) またはモニターキャリア (carrier) を設定します。デフォルトは carrier です。

other_config:bond-miimon-interval=100

miimon を使用する場合には、ハートビートの間隔をミリ秒単位で設定します。

bond_updelay=1000

フラッピングを防ぐためにアクティブ化してリンクが Up の状態である必要のある時間 (ミリ秒単位)

other_config:bond-rebalance-interval=10000

ボンディングメンバー間のリバランシングフローの間隔 (ミリ秒単位)。無効にするにはゼロに設定します。

法律上の通知

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.