Red Hat Training

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

第3章 novajoin を使用した IdM との統合

novajoin により、使用するノードをデプロイメントプロセスの一部として Red Hat Identity Manager (IdM) に登録できます。その結果、OpenStack デプロイメントで、ID、kerberos 認証情報、アクセス制御などの IdM の機能を統合することができます。

注記

現在、novajoin を使用した IdM の登録は、アンダークラウドとオーバークラウドのノードのみで利用可能です。オーバークラウドインスタンス向けの novajoin の統合は、今後のリリースでサポートされるようになる見込みです。

3.1. アンダークラウドでの novajoin のインストールと設定

3.1.1. CA へのアンダークラウドの追加

オーバークラウドをデプロイする前には、アンダークラウドを認証局 (CA) に追加する必要があります。

  1. アンダークラウドノードで、python-novajoin パッケージをインストールします。

    $ sudo yum install python-novajoin
  2. アンダークラウドノードで novajoin-ipa-setup スクリプトを実行します。値はデプロイメントに応じて調整します。

    $ sudo /usr/libexec/novajoin-ipa-setup \
        --principal admin \
        --password <IdM admin password> \
        --server <IdM server hostname> \
        --realm <overcloud cloud domain (in upper case)> \
        --domain <overcloud cloud domain> \
        --hostname <undercloud hostname> \
        --precreate

    以下の項では、ここで設定されたワンタイムパスワード (OTP) を使用してアンダークラウドを登録します。

3.1.2. アンダークラウドを IdM に追加します。

以下の手順では、アンダークラウドを IdM に登録して novajoin を設定します。

  1. novajoin サービスは、デフォルトで無効にされます。有効化するには、undercloud.conf にエントリーを追加します。

    enable_novajoin = true
  2. アンダークラウドノードをIdM に登録するためのワンタイムパスワード (OTP) を設定する必要があります。

    ipa_otp = <otp>
  3. neutron の DHCP サーバーによって提供されるオーバークラウドのドメイン名が IdM ドメインと一致するようにします (小文字の kerberos レルム)。

    overcloud_domain_name = <domain>
  4. アンダークラウドに適切なホスト名を設定します。

    undercloud_hostname = <undercloud FQDN>
  5. アンダークラウドのネームサーバーとして IdM を設定します。

    undercloud_nameservers = <IdM IP>
  6. より大きな環境の場合には、novajoin の接続タイムアウト値を確認する必要があります。undercloud.conf で、undercloud-timeout.yaml という名前の新規ファイルへの参照を追加します。

    hieradata_override = /home/stack/undercloud-timeout.yaml

    undercloud-timeout.yaml に以下のオプションを追加します。タイムアウト値は秒単位で指定することができます (例: 5)。

    nova::api::vendordata_dynamic_connect_timeout: <timeout value>
    nova::api::vendordata_dynamic_read_timeout: <timeout value>
  7. undercloud.conf ファイルを保存します。
  8. アンダークラウドのデプロイコマンドを実行して、既存のアンダークラウドに変更を適用します。

    $ openstack undercloud install

3.2. オーバークラウドでの novajoin のインストールと設定

以下の項では、オーバークラウドノードを IdM で登録する方法について説明します。

3.2.1. オーバークラウド DNS の設定

IdM 環境を自動検出して、登録をより簡単にするには、IdM を DNS サーバーとして使用することを検討してください。

  1. アンダークラウドに接続します。

    $ source ~/stackrc
  2. DNS ネームサーバーとして IdM を使用するためのコントロールプレーンサブネットを設定します。

    $ openstack subnet set ctlplane-subnet --dns-nameserver  <idm_server_address>
  3. IdM サーバーを使用するように環境ファイルの DnsServers パラメーターを設定します。

    parameter_defaults:
      DnsServers: ["<idm_server_address>"]

    このパラメーターは、通常カスタムの network-environment.yaml ファイルで定義されます。

3.2.2. novajoin を使用するためのオーバークラウドの設定

  1. IdM 統合を有効化するには、/usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml 環境ファイルのコピーを作成します。

    $ cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \
      /home/stack/templates/custom-domain.yaml
  2. /home/stack/templates/custom-domain.yaml 環境ファイルを編集して、デプロイメントに適した CloudDomainCloudName* の値を設定します。以下に例を示します。

    parameter_defaults:
      CloudDomain: lab.local
      CloudName: overcloud.lab.local
      CloudNameInternal: overcloud.internalapi.lab.local
      CloudNameStorage: overcloud.storage.lab.local
      CloudNameStorageManagement: overcloud.storagemgmt.lab.local
      CloudNameCtlplane: overcloud.ctlplane.lab.local
  3. オーバークラウドのデプロイプロセスで以下の環境ファイルを追加します。

    • /usr/share/openstack-tripleo-heat-templates/environments/enable-internal-tls.yaml
    • /usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml
    • /home/stack/templates/custom-domain.yaml

      以下に例を示します。

      openstack overcloud deploy \
        --templates \
         -e /usr/share/openstack-tripleo-heat-templates/environments/enable-internal-tls.yaml \
         -e /usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml \
         -e /home/stack/templates/custom-domain.yaml \

      その結果、デプロイされるオーバークラウドノードは自動的に IdM で登録されるようになります。

  4. これで設定されるのは、内部エンドポイント向けの TLS のみです。外部エンドポイントには、./tripleo-heat-templates/environments/enable-tls.yaml 環境ファイル (カスタムの証明書とキーを追加するように編集する必要あり) で TLS を追加する通常の方法を使用することができます。そのため、openstack deploy コマンドは以下のようになります。

    openstack overcloud deploy \
      --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/enable-internal-tls.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml \
      -e /home/stack/templates/custom-domain.yaml \
      -e /home/stack/templates/enable-tls.yaml
  5. また、IdM を使用して公開証明書を発行することもできます。その場合には、./tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml 環境ファイルを使用する必要があります。以下に例を示します。

    openstack overcloud deploy \
      --templates \
       -e ./tripleo-heat-templates/environments/enable-internal-tls.yaml \
       -e /usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml \
       -e /home/stack/templates/custom-domain.yaml \
       -e ./tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml

3.3. IdM におけるノードの検証

  1. IdM でオーバークラウドノードを特定し、ホストのエントリーに Keytab:True が含まれていることを確認します。

    $ ipa host-show overcloud-node-01
      Host name: overcloud-node-01.lab.local
      Principal name: host/overcloud-node-01.lab.local@LAB.LOCAL
      Principal alias: host/overcloud-node-01.lab.local@LAB.LOCAL
      SSH public key fingerprint: <snip>
      Password: False
      Keytab: True
      Managed by: overcloud-node-01.lab.local
  2. そのノードに SSH 接続し、sssd が IdM ユーザーをクエリーできることを確認します。たとえば、susan という名前の IdM ユーザーをクエリーするには、以下のコマンドを実行します。

    $ getent passwd susan
    uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)