第3章 novajoin を使用した IdM との統合
novajoin により、使用するノードをデプロイメントプロセスの一部として Red Hat Identity Manager (IdM) に登録できます。その結果、OpenStack デプロイメントで、ID、kerberos 認証情報、アクセス制御などの IdM の機能を統合することができます。
現在、novajoin を使用した IdM の登録は、アンダークラウドとオーバークラウドのノードのみで利用可能です。オーバークラウドインスタンス向けの novajoin の統合は、今後のリリースでサポートされるようになる見込みです。
3.1. アンダークラウドでの novajoin のインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
3.1.1. CA へのアンダークラウドの追加 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドをデプロイする前には、アンダークラウドを認証局 (CA) に追加する必要があります。
アンダークラウドノードで、
python-novajoinパッケージをインストールします。sudo yum install python-novajoin
$ sudo yum install python-novajoinCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードで
novajoin-ipa-setupスクリプトを実行します。値はデプロイメントに応じて調整します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の項では、ここで設定されたワンタイムパスワード (OTP) を使用してアンダークラウドを登録します。
3.1.2. アンダークラウドを IdM に追加します。 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、アンダークラウドを IdM に登録して novajoin を設定します。
novajoin サービスは、デフォルトで無効にされます。有効化するには、
undercloud.confにエントリーを追加します。enable_novajoin = true
enable_novajoin = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードをIdM に登録するためのワンタイムパスワード (OTP) を設定する必要があります。
ipa_otp = <otp>
ipa_otp = <otp>Copy to Clipboard Copied! Toggle word wrap Toggle overflow neutron の DHCP サーバーによって提供されるオーバークラウドのドメイン名が IdM ドメインと一致するようにします (小文字の kerberos レルム)。
overcloud_domain_name = <domain>
overcloud_domain_name = <domain>Copy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドに適切なホスト名を設定します。
undercloud_hostname = <undercloud FQDN>
undercloud_hostname = <undercloud FQDN>Copy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドのネームサーバーとして IdM を設定します。
undercloud_nameservers = <IdM IP>
undercloud_nameservers = <IdM IP>Copy to Clipboard Copied! Toggle word wrap Toggle overflow より大きな環境の場合には、novajoin の接続タイムアウト値を確認する必要があります。
undercloud.confで、undercloud-timeout.yamlという名前の新規ファイルへの参照を追加します。hieradata_override = /home/stack/undercloud-timeout.yaml
hieradata_override = /home/stack/undercloud-timeout.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow undercloud-timeout.yamlに以下のオプションを追加します。タイムアウト値は秒単位で指定することができます (例:5)。nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>
nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
undercloud.confファイルを保存します。 アンダークラウドのデプロイコマンドを実行して、既存のアンダークラウドに変更を適用します。
openstack undercloud install
$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. オーバークラウドでの novajoin のインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の項では、オーバークラウドノードを IdM で登録する方法について説明します。
3.2.1. オーバークラウド DNS の設定 リンクのコピーリンクがクリップボードにコピーされました!
IdM 環境を自動検出して、登録をより簡単にするには、IdM を DNS サーバーとして使用することを検討してください。
アンダークラウドに接続します。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow DNS ネームサーバーとして IdM を使用するためのコントロールプレーンサブネットを設定します。
openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
$ openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow IdM サーバーを使用するように環境ファイルの
DnsServersパラメーターを設定します。parameter_defaults: DnsServers: ["<idm_server_address>"]
parameter_defaults: DnsServers: ["<idm_server_address>"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow このパラメーターは、通常カスタムの
network-environment.yamlファイルで定義されます。
3.2.2. novajoin を使用するためのオーバークラウドの設定 リンクのコピーリンクがクリップボードにコピーされました!
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
$ cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \ /home/stack/templates/custom-domain.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow /home/stack/templates/custom-domain.yaml環境ファイルを編集して、デプロイメントに適したCloudDomainとCloudName*の値を設定します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドのデプロイプロセスで以下の環境ファイルを追加します。
-
/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 \
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 \Copy to Clipboard Copied! Toggle word wrap Toggle overflow その結果、デプロイされるオーバークラウドノードは自動的に IdM で登録されるようになります。
-
これで設定されるのは、内部エンドポイント向けの TLS のみです。外部エンドポイントには、
./tripleo-heat-templates/environments/enable-tls.yaml環境ファイル (カスタムの証明書とキーを追加するように編集する必要あり) で TLS を追加する通常の方法を使用することができます。そのため、openstack deployコマンドは以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow また、IdM を使用して公開証明書を発行することもできます。その場合には、
./tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml環境ファイルを使用する必要があります。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. IdM におけるノードの検証 リンクのコピーリンクがクリップボードにコピーされました!
IdM でオーバークラウドノードを特定し、ホストのエントリーに
Keytab:Trueが含まれていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow そのノードに SSH 接続し、sssd が IdM ユーザーをクエリーできることを確認します。たとえば、
susanという名前の IdM ユーザーをクエリーするには、以下のコマンドを実行します。getent passwd susan uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)
$ getent passwd susan uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)Copy to Clipboard Copied! Toggle word wrap Toggle overflow