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 統合を続行する前に、登録プロセスを実行する必要があります。登録プロセスには、以下の手順が含まれます。
- アンダークラウドノードを認証局 (CA) に追加する
- アンダークラウドノードを IdM に追加する
- (オプション) オーバークラウドの DNS サーバーとして IdM サーバーを設定する
- 環境ファイルを準備しオーバークラウドをデプロイする
- IdM および RHOSP でオーバークラウドの登録をテストする
- (オプション) IdM に novajoin の DNS エントリーを追加する
現在、novajoin を使用した IdM の登録は、アンダークラウドとオーバークラウドのノードのみで利用可能です。オーバークラウドインスタンス向けの novajoin の統合は、今後のリリースでサポートされる見込みです。
2.4.1. 認証局へのアンダークラウドノードの追加
オーバークラウドをデプロイする前に、アンダークラウドノードに python3-novajoin
パッケージをインストールし、novajoin-ipa-setup
スクリプトを実行して、アンダークラウドを認証局 (CA) に追加します。
手順
アンダークラウドノードで、
python3-novajoin
パッケージをインストールします。$ sudo dnf install python3-novajoin
アンダークラウドノードで
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]
セクションで、以下の設定を行います。
手順
novajoin
サービスを有効にします。[DEFAULT] enable_novajoin = true
アンダークラウドノードを IdM に登録できるように、ワンタイムパスワード (OTP) を設定します。
ipa_otp = <otp>
neutron の DHCP サーバーにより提供されるように、オーバークラウドのドメイン名を設定します。
overcloud_domain_name = <domain>
アンダークラウドのホスト名を設定します。
undercloud_hostname = <undercloud FQDN>
アンダークラウドのネームサーバーとして IdM を設定します。
undercloud_nameservers = <IdM IP>
より大規模な環境の場合には、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>
オプション: ローカルの openSSL 認証局に director のパブリックエンドポイントの SSL 証明書を生成させる場合は、
generate_service_certificate
パラメーターをtrue
に設定します。generate_service_certificate = true
-
undercloud.conf
ファイルを保存します。 アンダークラウドのデプロイコマンドを実行して、既存のアンダークラウドに変更を適用します。
$ openstack undercloud install
検証
以下の手順を実施して、アンダークラウドが正しく登録されたことを確認します。
IdM のホストをリスト表示します。
$ kinit admin $ ipa host-find
アンダークラウドに
/etc/novajoin/krb5.keytab
が存在することを確認します。ls /etc/novajoin/krb5.keytab
2.4.3. オーバークラウドの DNS サーバーとしての Red Hat Identity Manager (IdM) の設定
IdM 環境を自動検出して、簡単に登録できるようにするには、IdM を DNS サーバーとして設定します。この手順はオプションですが、推奨されます。
手順
アンダークラウドに接続します。
$ source ~/stackrc
DNS ネームサーバーとして IdM を使用するようにコントロールプレーンサブネットを設定します。
$ openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
IdM サーバーを使用するように環境ファイルの
DnsServers
パラメーターを設定します。parameter_defaults: DnsServers: ["<idm_server_address>"]
このパラメーターは、通常カスタムの
network-environment.yaml
ファイルで定義されます。
2.4.4. 環境ファイルの準備と novajoin 登録によるオーバークラウドのデプロイ
IdM 統合でオーバークラウドをデプロイするには、環境ファイルを作成および編集し、オーバークラウドで定義するドメインに基づいて、カスタムドメインパラメーター CloudDomain
および CloudName
を使用するようにオーバークラウドを設定します。次に、すべての環境ファイルとデプロイメントに必要な追加の環境ファイルを指定して、オーバークラウドをデプロイします。
手順
/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
/home/stack/templates/custom-domain.yaml
環境ファイルを編集して、デプロイメントに適したCloudDomain
とCloudName*
の値を設定します。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
環境に適した TLS の実装を選択します。
enable-tls.yaml
環境ファイルを使用して、カスタム証明書が含まれる外部エンドポイントを保護します。-
/usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml
を/home/stack/templates
にコピーします。 -
カスタム証明書および鍵が含まれるように
/home/stack/enable-tls.yaml
環境ファイル変更します。 以下の環境ファイルをデプロイメントに追加して、内部および外部エンドポイントを保護します。
- 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 エントリーを作成する必要があります。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
/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'}]
それぞれの 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
以下の環境ファイルをデプロイメントに追加して、内部および外部エンドポイントを保護します。
- 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 ユーザーにクエリーを行うことができることも確認できます。
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
オーバークラウドノードにログインし、
sssd
を使用して IdM ユーザーにクエリーを行うことができることを確認します。たとえば、susan
という名前の IdM ユーザーをクエリーするには、以下のコマンドを実行します。$ getent passwd susan uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)