19.3. DNS がポートに割り当てる名前の指定

Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) のポートエクステンション用 DNS ドメイン (dns_domain_ports) を有効にすると、内部 DNS によりポートに割り当てられる名前を指定することができます。

YAML 形式の環境ファイルで RHOSP Orchestration (heat) NeutronPluginExtensions パラメーターを宣言して、ポートエクステンション用 DNS ドメインを有効にします。対応するパラメーター NeutronDnsDomain を使用して、デフォルト値 openstacklocal をオーバーライドするドメイン名を指定します。オーバークラウドの再デプロイ後に、OpenStack Client ポートコマンド port set または port create--dns-name を指定して、ポート名を割り当てることができます。

重要

RHOSP 環境でポートの名前を内部的に解決するには、DNS のポートエクステンションの DNS ドメイン (dns_domain_ports) を有効にする必要があります。NeutronDnsDomain のデフォルト値 (openstacklocal) を使用する場合、ネットワークサービスは DNS のポート名を内部的に解決しません。

また、ポートエクステンション用 DNS ドメインを有効にすると、仮想マシンインスタンスのブート中に、Compute サービスが dns_name 属性にインスタンスの hostname 属性を自動的に設定します。ブートプロセスの最後に、dnsmasq はインスタンスのホスト名で割り当てられたポートを認識します。

手順

  1. アンダークラウドに stack ユーザーとしてログインし、source コマンドで stackrc ファイルを読み込み、director コマンドラインツールを有効にします。

    例:

    $ source ~/stackrc

  2. カスタム YAML 環境ファイル (my-neutron-environment.yaml) を作成します。

    注記

    丸かっこ内の値は、この手順のコマンド例で使用されるサンプルの値です。これらのサンプル値を、実際のサイトに適した値に置き換えてください。

    例:

    $ vi /home/stack/templates/my-neutron-environment.yaml

    ヒント

    アンダークラウドには、オーバークラウドの作成プランを形作るさまざまな Orchestration サービスのテンプレートが含まれます。YAML フォーマットの環境ファイルを使用して、オーバークラウドの特性をカスタマイズすることができます。このファイルで、Orchestration サービスのコアテンプレートコレクションのパラメーターおよびリソースを上書きします。必要に応じていくつでも環境ファイルを追加することができます。

  3. 環境ファイルに parameter_defaults セクションを追加します。このセクションで、ポートエクステンション用 DNS ドメイン dns_domain_ports を追加します。

    例:

    parameter_defaults:
      NeutronPluginExtensions: "qos,port_security,dns_domain_ports"

    注記

    dns_domain_ports を設定する場合は、デプロイメントで DNS Integration エクステンション dns_domain も使用しないようにしてください。これらのエクステンションは互換性がなく、両方のエクステンションを同時に定義することはできません。

  4. また、parameter_defaults セクションで、NeutronDnsDomain パラメーターを使用してドメイン名 (example.com) を追加します。

    例:

    parameter_defaults:
        NeutronPluginExtensions: "qos,port_security,dns_domain_ports"
        NeutronDnsDomain: "example.com"

  5. コア Orchestration テンプレート、環境ファイル、およびこの新しい環境ファイルを指定して、openstack overcloud deploy コマンドを実行します。

    重要

    後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。

    例:

    $ openstack overcloud deploy --templates \
    -e [your-environment-files] \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml

検証

  1. オーバークラウドにログインし、ネットワーク (public) に新しいポート (new_port) を作成します。DNS 名 (my_port) をポートに割り当てます。

    例:

    $ source ~/overcloudrc
    $ openstack port create --network public --dns-name my_port new_port

  2. ポート (new_port) の詳細を表示します。

    例:

    $ openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port

    出力

    +-------------------------+----------------------------------------------+
    | Field                   | Value                                        |
    +-------------------------+----------------------------------------------+
    | dns_assignment          | fqdn='my_port.example.com',                  |
    |                         | hostname='my_port',                          |
    |                         | ip_address='10.65.176.113'                   |
    | dns_domain              | example.com                                  |
    | dns_name                | my_port                                      |
    | name                    | new_port                                     |
    +-------------------------+----------------------------------------------+

    dns_assignment セクションにおいて、ポートの完全修飾ドメイン名 (fqdn) 値には、DNS 名 (my_port) と、前のステップで NeutronDnsDomain で設定したドメイン名 (example.com) の連結が含まれています。

  3. 作成したポート (new_port) を使用して、新しい仮想マシンインスタンス (my_vm) を作成します。

    例:

    $ openstack server create --image rhel --flavor m1.small --port new_port my_vm

  4. ポート (new_port) の詳細を表示します。

    例:

    $ openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port

    出力

    +-------------------------+----------------------------------------------+
    | Field                   | Value                                        |
    +-------------------------+----------------------------------------------+
    | dns_assignment          | fqdn='my_vm.example.com',                    |
    |                         | hostname='my_vm',                            |
    |                         | ip_address='10.65.176.113'                   |
    | dns_domain              | example.com                                  |
    | dns_name                | my_vm                                        |
    | name                    | new_port                                     |
    +-------------------------+----------------------------------------------+

    Compute サービスは、dns_name 属性を元の値 (my_port) からポートが関連付けられたインスタンスの名前 (my_vm) に変更します。

関連情報