2.4. novajoin を使用した Red Hat Identity Manager (IdM) へのノードの登録

novajoin は、デプロイメントプロセスの一部として、ノードを Red Hat Identity Manager (IdM) に登録するために使用するデフォルトのツールです。Red Hat では、アンダークラウドおよびオーバークラウドに TLS-e を設定するのに、novajoin を使用するデフォルトのソリューションよりも、新たな Ansible ベースの tripleo-ipa ソリューションを推奨しています。詳細については、Ansible を使用した TLS-e の実装を参照してください。

残りの IdM 統合を続行する前に、登録プロセスを実行する必要があります。登録プロセスには、以下の手順が含まれます。

  1. アンダークラウドノードを認証局 (CA) に追加する
  2. アンダークラウドノードを IdM に追加する
  3. (オプション) オーバークラウドの DNS サーバーとして IdM サーバーを設定する
  4. 環境ファイルを準備しオーバークラウドをデプロイする
  5. IdM および RHOSP でオーバークラウドの登録をテストする
  6. (オプション) IdM に novajoin の DNS エントリーを追加する
注記

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

2.4.1. 認証局へのアンダークラウドノードの追加

オーバークラウドをデプロイする前に、アンダークラウドノードに python3-novajoin パッケージをインストールし、novajoin-ipa-setup スクリプトを実行して、アンダークラウドを認証局 (CA) に追加します。

手順

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

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

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

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

2.4.2. Red Hat Identity Manager (IdM) へのアンダークラウドノードの追加

アンダークラウドノードを認証局 (CA) に追加したら、アンダークラウドを IdM に登録して novajoin を設定します。undercloud.conf ファイルの [DEFAULT] セクションで、以下の設定を行います。

手順

  1. novajoin サービスを有効にします。

    [DEFAULT]
    enable_novajoin = true
  2. アンダークラウドノードを IdM に登録できるように、ワンタイムパスワード (OTP) を設定します。

    ipa_otp = <otp>
  3. neutron の DHCP サーバーにより提供されるように、オーバークラウドのドメイン名を設定します。

    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. オプション: ローカルの openSSL 認証局に director のパブリックエンドポイントの SSL 証明書を生成させる場合は、generate_service_certificate パラメーターを true に設定します。

    generate_service_certificate = true
  8. undercloud.conf ファイルを保存します。
  9. アンダークラウドのデプロイコマンドを実行して、既存のアンダークラウドに変更を適用します。

    $ openstack undercloud install

検証

以下の手順を実施して、アンダークラウドが正しく登録されたことを確認します。

  1. IdM のホストをリスト表示します。

    $ kinit admin
    $ ipa host-find
  2. アンダークラウドに /etc/novajoin/krb5.keytab が存在することを確認します。

    ls /etc/novajoin/krb5.keytab

2.4.3. オーバークラウドの DNS サーバーとしての Red Hat Identity Manager (IdM) の設定

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 ファイルで定義されます。

2.4.4. 環境ファイルの準備と novajoin 登録によるオーバークラウドのデプロイ

IdM 統合でオーバークラウドをデプロイするには、環境ファイルを作成および編集し、オーバークラウドで定義するドメインに基づいて、カスタムドメインパラメーター CloudDomain および CloudName を使用するようにオーバークラウドを設定します。次に、すべての環境ファイルとデプロイメントに必要な追加の環境ファイルを指定して、オーバークラウドをデプロイします。

手順

  1. /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. 環境に適した TLS の実装を選択します。

    • enable-tls.yaml 環境ファイルを使用して、カスタム証明書が含まれる外部エンドポイントを保護します。

      1. /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml/home/stack/templates にコピーします。
      2. カスタム証明書および鍵が含まれるように /home/stack/enable-tls.yaml 環境ファイル変更します。
      3. 以下の環境ファイルをデプロイメントに追加して、内部および外部エンドポイントを保護します。

        • enable-internal-tls.yaml
        • tls-every-endpoints-dns.yaml
        • custom-domain.yaml
        • enable-tls.yaml

          openstack overcloud deploy \
            --templates \
            -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml \
            -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml \
            -e /home/stack/templates/custom-domain.yaml \
            -e /home/stack/templates/enable-tls.yaml
    • haproxy-public-tls-certmonger.yaml 環境ファイルを使用して、IdM が発行した証明書が含まれる外部エンドポイントを保護します。この実装では、novajoin が使用する VIP エンドポイントの DNS エントリーを作成する必要があります。

      1. novajoin が使用する VIP エンドポイントの DNS エントリーを作成する必要があります。/home/stack/templates のカスタム network-environment.yaml ファイルにあるオーバークラウドのネットワークを特定します。

        parameter_defaults:
            ControlPlaneDefaultRoute: 192.168.24.1
            ExternalAllocationPools:
            -   end: 10.0.0.149
                start: 10.0.0.101
            InternalApiAllocationPools:
            -   end: 172.17.1.149
                start: 172.17.1.10
            StorageAllocationPools:
            -   end: 172.17.3.149
                start: 172.17.3.10
            StorageMgmtAllocationPools:
            -   end: 172.17.4.149
                start: 172.17.4.10
      2. /home/stack/public_vip.yaml などの heat テンプレートでオーバークラウドネットワークごとに仮想 IP アドレスのリストを作成します。

        parameter_defaults:
            ControlFixedIPs: [{'ip_address':'192.168.24.101'}]
            PublicVirtualFixedIPs: [{'ip_address':'10.0.0.101'}]
            InternalApiVirtualFixedIPs: [{'ip_address':'172.17.1.101'}]
            StorageVirtualFixedIPs: [{'ip_address':'172.17.3.101'}]
            StorageMgmtVirtualFixedIPs: [{'ip_address':'172.17.4.101'}]
            RedisVirtualFixedIPs: [{'ip_address':'172.17.1.102'}]
      3. それぞれの VIP について、DNS エントリーおよびゾーン (必要に応じて) を IdM に追加します。

        ipa dnsrecord-add lab.local overcloud --a-rec 10.0.0.101
        ipa dnszone-add ctlplane.lab.local
        ipa dnsrecord-add ctlplane.lab.local overcloud --a-rec 192.168.24.101
        ipa dnszone-add internalapi.lab.local
        ipa dnsrecord-add internalapi.lab.local overcloud --a-rec 172.17.1.101
        ipa dnszone-add storage.lab.local
        ipa dnsrecord-add storage.lab.local overcloud --a-rec 172.17.3.101
        ipa dnszone-add storagemgmt.lab.local
        ipa dnsrecord-add storagemgmt.lab.local overcloud --a-rec 172.17.4.101
      4. 以下の環境ファイルをデプロイメントに追加して、内部および外部エンドポイントを保護します。

        • enable-internal-tls.yaml
        • tls-everywhere-endpoints-dns.yaml
        • haproxy-public-tls-certmonger.yaml
        • custom-domain.yaml
        • public_vip.yaml

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

novajoin を使用して、既存のデプロイメントに TLS everywhere (TLS-e) を実装することはできません。

2.4.5. Red Hat Identity Manager (IdM) へのオーバークラウド登録のテスト

novajoin を使用して IdM へのアンダークラウドおよびオーバークラウドの登録を完了した後に、IdM でオーバークラウドノードを検索し、ホストエントリーに Keytab:True が含まれることを確認することで、登録が成功したことをテストできます。また、オーバークラウドノードにログインして、sssd コマンドを使用して 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. オーバークラウドノードにログインし、sssd を使用して IdM ユーザーにクエリーを行うことができることを確認します。たとえば、susan という名前の IdM ユーザーをクエリーするには、以下のコマンドを実行します。

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