7.3. 動的ルーティング用に事前プロビジョニングされたノードを含む OpenStackDataPlaneNodeSet CR を作成する


事前にプロビジョニングされたノードを使用した Red Hat OpenStack Services on OpenShift (RHOSO) 環境で動的ルーティング用にデータプレーンを設定するには、Compute ノードの OpenStackDataPlaneNodeSet CR と Networker ノードの OpenStackDataPlaneNodeSet CR を作成します。Networker ノードに OVN ゲートウェイシャーシが含まれています。

Compute ノードであるデータプレーン内の事前にプロビジョニングされたノードの論理グループ用に OpenStackDataPlaneNodeSet カスタムリソース (CR) を定義します。デプロイメントに必要な数だけ、Compute ノードセットを定義できます。各ノードは、1 つの OpenStackDataPlaneNodeSet CR にのみ含めることができます。各ノードセットは、1 つの Compute セルにのみ接続できます。デフォルトでは、ノードセットは cell1 に接続されます。コントロールプレーンをカスタマイズして Compute セルを追加する場合は、ノードセットの接続先のセルを指定する必要があります。Compute セルの追加の詳細は、Red Hat OpenStack Services on OpenShift デプロイメントのカスタマイズ ガイドの OpenStackDataPlaneNodeSet CR を Compute セルに接続する を参照してください。

重要

現在、動的ルーティング環境では、RHOSO コントロールプレーンを分散できないという制限があります。このため、OVN ゲートウェイシャーシをホストする専用の Networker ノードが必要です。この制限は、今後の RHOSO リリースで解決される予定です。詳細は、OSPRH-661 を参照してください。

nodeTemplate フィールドを使用して OpenStackDataPlaneNodeSet CR 内のすべてのノードに適用する共通プロパティーを設定し、nodeTemplate.nodes フィールドを使用してノード固有のプロパティーを設定します。ノード固有の設定は、nodeTemplate から継承された値をオーバーライドします。

ヒント

事前にプロビジョニングされた Compute ノードからノードが設定する OpenStackDataPlaneNodeSet CR の例は、事前にプロビジョニングされたノードの OpenStackDataPlaneNodeSet CR の例 を参照してください。

手順

  1. openstack_compute_node_set.yaml という名前のワークステーションにファイルを作成し、OpenStackDataPlaneNodeSet CR を定義します。

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneNodeSet
    metadata:
      name: openstack-compute-nodes 
    1
    
      namespace: openstack
    spec:
      env: 
    2
    
        - name: ANSIBLE_FORCE_COLOR
          value: "True"
    1
    OpenStackDataPlaneNodeSet CR 名は、一意であり、小文字の英数字、- (ハイフン)、または . (ピリオド) で構成され、先頭と末尾が英数字である必要があります。この例の名前を、セット内のノードを表す名前に更新してください。
    2
    オプション: Pod に渡す環境変数のリスト。
  2. データプレーン上の Compute ノードをコントロールプレーンネットワークに接続します。

    spec:
      ...
      networkAttachments:
        - ctlplane
  3. このセット内のノードが事前にプロビジョニングされていることを指定します。

      preProvisioned: true
  4. 作成した SSH キーシークレットを追加して、Ansible がデータプレーン上の Compute ノードに接続できるようにします。

      nodeTemplate:
        ansibleSSHPrivateKeySecret: <secret-key>
  5. ログを保存するために、Red Hat OpenShift Container Platform (RHOCP) クラスターの openstack namespace に永続ボリューム要求 (PVC) を作成します。volumeModeFilesystem に、accessModesReadWriteOnce に設定します。NFS ボリュームプラグインを使用する PersistentVolume (PV) からのログのストレージを要求しないでください。NFS は FIFO と互換性がないため、ansible-runner はログを保存するために書き込む FIFO ファイルを作成します。PVC の詳細は、RHOCP ストレージ ガイドの 永続ストレージについて、および デプロイメントのプランニングRed Hat OpenShift Container Platform クラスターの要件 を参照してください。
  6. データプレーンノードの永続的なロギングを有効にします。

      nodeTemplate:
        ...
        extraMounts:
          - extraVolType: Logs
            volumes:
            - name: ansible-logs
              persistentVolumeClaim:
                claimName: <pvc_name>
            mounts:
            - name: ansible-logs
              mountPath: "/runner/artifacts"
    • <pvc_name> を、RHOCP クラスター上の PVC ストレージの名前に置き換えます。
  7. 管理ネットワークを指定します。

      nodeTemplate:
        ...
        managementNetwork: ctlplane
  8. ノードのオペレーティングシステムを登録し、リポジトリーを有効にするためのユーザー名とパスワードの取得に使用される Secret CR を指定します。次の例は、ノードを CDN に登録する方法を示しています。Red Hat Satellite 6.13 にノードを登録する方法の詳細は、ホストの管理 を参照してください。

      nodeTemplate:
        ...
        ansible:
          ansibleUser: cloud-admin 
    1
    
          ansiblePort: 22
          ansibleVarsFrom:
            - prefix: subscription_manager_
              secretRef:
                name: subscription-manager
            - prefix: registry_
              secretRef:
                name: redhat-registry
          ansibleVars: 
    2
    
            edpm_bootstrap_command: |
              subscription-manager register --username {{ subscription_manager_username }} --password {{ subscription_manager_password }}
              subscription-manager release --set=9.4
              subscription-manager repos --disable=*
              subscription-manager repos --enable=rhel-9-for-x86_64-baseos-eus-rpms --enable=rhel-9-for-x86_64-appstream-eus-rpms --enable=rhel-9-for-x86_64-highavailability-eus-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms --enable=rhoso-18.0-for-rhel-9-x86_64-rpms --enable=rhceph-7-tools-for-rhel-9-x86_64-rpms
            edpm_bootstrap_release_version_package: []
    1
    データプレーンシークレットの作成 で作成したシークレットに関連付けられているユーザー。
    2
    ノードのセットをカスタマイズする Ansible 変数。使用できる Ansible 変数のリストは、https://openstack-k8s-operators.github.io/edpm-ansible/ を参照してください。

    Red Hat カスタマーポータル登録コマンドの完全なリストは、https://access.redhat.com/solutions/253273 を参照してください。registry.redhat.io にログインする方法は、https://access.redhat.com/RegistryAuthentication#creating-registry-service-accounts-6 を参照してください。

  9. Compute ノードに適用するネットワーク設定テンプレートを追加します。次の例では、1 つの NIC VLAN ネットワーク設定をデータプレーンノードに適用します。

      nodeTemplate:
        ...
        ansible:
          ...
          ansibleVars:
            ...
            edpm_network_config_os_net_config_mappings:
              edpm-compute-0:
                nic1: 52:54:04:60:55:22 
    1
    
            neutron_physical_bridge_name: br-ex
            neutron_public_interface_name: eth0
            edpm_network_config_template: |
              ---
              {% set mtu_list = [ctlplane_mtu] %}
              {% for network in nodeset_networks %}
              {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
              {%- endfor %}
              {% set min_viable_mtu = mtu_list | max %}
              network_config:
              - type: ovs_bridge
                name: {{ neutron_physical_bridge_name }}
                use_dhcp: false
                use_dhcpv6: true
              - type: interface
                name: nic1
                use_dhcp: true
                defroute: false
              - type: interface
                name: nic2
                use_dhcp: false
                defroute: false
                dns_servers: {{ ctlplane_dns_nameservers }}
                domain: {{ dns_search_domains }}
                addresses:
                - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
              - type: interface
                name: nic3
                use_dhcp: false
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpnet0_ip') }}/30
              - type: interface
                name: nic4
                use_dhcp: false
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpnet1_ip') }}/30
              - type: interface
                name: lo
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpmainnet_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'bgpmainnetv6_ip') }}/128
                - ip_netmask: {{ lookup('vars', 'internalapi_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'storage_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'tenant_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'octavia_ip') }}/32
    1
    nic1 を、Compute ノードのネットワーク設定に使用する NIC に割り当てられた MAC アドレスに更新します。

    別のテンプレートは、roles/edpm_network_config/templates を参照してください。データプレーンネットワーク設定の詳細は、ネットワークサービスの設定データプレーンネットワークのカスタマイズ を参照してください。

  10. このグループの Compute ノードセットの共通設定を nodeTemplate セクションに追加します。この OpenStackDataPlaneNodeSet 内の各ノードがこの設定を継承します。

    edpm_frr_bgp_ipv4_src_network: bgpmainnet
    edpm_frr_bgp_neighbor_password: f00barZ
    edpm_frr_bgp_uplinks:
    - nic3
    - nic4
    edpm_ovn_encap_ip: '{{ lookup(''vars'', ''bgpmainnet_ip'') }}'

    共通のノード属性の設定に使用できるプロパティーの詳細は、動的ルーティングの OpenStackDataPlaneNodeSet CR spec プロパティー を参照してください。

  11. このノードセット内の各ノードを定義します。

      nodes:
        edpm-compute-0: 
    1
    
          hostName: edpm-compute-0
          networks: 
    2
    
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.100 
    3
    
          - name: internalapi
            subnetName: subnet1
            fixedIP: 172.17.0.100
          - name: storage
            subnetName: subnet1
            fixedIP: 172.18.0.100
          - name: tenant
            subnetName: subnet1
            fixedIP: 172.19.0.100
          - name: BgpNet0
            subnetName: subnet0
            fixedIP: 100.64.0.2
          - name: BgpNet1
            subnetName: subnet0
            fixedIP: 100.65.0.2
          - name: BgpMainNet
            subnetName: subnet0
            fixedIP: 172.30.0.2
          ansible:
            ansibleHost: 192.168.122.100
            ansibleUser: cloud-admin
            ansibleVars: 
    4
    
              fqdn_internal_api: edpm-compute-0.example.com
        edpm-compute-1:
          hostName: edpm-compute-1
          networks:
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.101
          - name: internalapi
            subnetName: subnet1
            fixedIP: 172.17.0.101
          - name: storage
            subnetName: subnet1
            fixedIP: 172.18.0.101
          - name: tenant
            subnetName: subnet1
            fixedIP: 172.19.0.101
          - name: BgpNet0
            subnetName: subnet0
            fixedIP: 100.64.1.2
          - name: BgpNet1
            subnetName: subnet0
            fixedIP: 100.65.1.2
          - name: BgpMainNet
            subnetName: subnet0
            fixedIP: 172.30.1.2
          ansible:
            ansibleHost: 192.168.122.101
            ansibleUser: cloud-admin
            ansibleVars:
              fqdn_internal_api: edpm-compute-1.example.com
    1
    ノード定義の参照 (例: edpm-compute-0)。ノードセット内の各ノードにノード定義が必要です。
    2
    ノードの IPAM と DNS レコードを定義します。
    3
    ネットワークの予測可能な IP アドレスを指定します。この場合、NetConfig CR でネットワークに定義された割り当て範囲内のアドレスでなければなりません。
    4
    ノードをカスタマイズするノード固有の Ansible 変数。
    注記
    • nodes セクションに定義するノードには、nodeTemplate セクションで設定されているのと同じ Ansible 変数を設定できます。Ansible 変数が特定のノードと nodeTemplate セクション内の両方に設定されている場合は、ノード固有の値が nodeTemplate セクションの値をオーバーライドします。
    • ノードのすべての nodeTemplate Ansible 変数を複製してデフォルトをオーバーライドし、ノード固有の値を設定する必要はありません。設定する必要があるのは、オーバーライドするノードの Ansible 変数だけです。
    • 多くの ansibleVars の名前には edpm が含まれています。これは "External Data Plane Management (外部データプレーン管理)" の略です。

    ノード属性を設定するために使用できるプロパティーの詳細は、OpenStackDataPlaneNodeSet CR のプロパティー を参照してください。

  12. services セクションに、frr および ovn-bgp-agent サービスが含まれていることを確認します。

    services:
    - download-cache
    - redhat
    - bootstrap
    - configure-network
    - install-os
    - configure-os
    - frr
    - validate-network
    - ssh-known-hosts
    - run-os
    - reboot-os
    - install-certs
    - ovn
    - neutron-metadata
    - ovn-bgp-agent
    - libvirt
    - nova
  13. openstack_compute_node_set.yaml 定義ファイルを保存します。
  14. データプレーンリソースを作成します。

    $ oc create --save-config -f openstack_compute_node_set.yaml -n openstack
  15. ステータスが SetupReady であることを確認して、データプレーンリソースが作成されたことを確認します。

    $ oc wait openstackdataplanenodeset openstack-compute-nodes \
    --for condition=SetupReady --timeout=10m

    ステータスが SetupReady の場合、コマンドは condition met メッセージを返し、それ以外の場合はタイムアウトエラーを返します。

    データプレーンの状態の詳細は、データプレーンの状態 を参照してください。

  16. ノードセットの Secret リソースが作成されたことを確認します。

    $ oc get secret | grep openstack-compute-nodes
    dataplanenodeset-openstack-compute-nodes Opaque 1 3m50s
  17. サービスが作成されたことを確認します。

    $ oc get openstackdataplaneservice -n openstack
    NAME                AGE
    download-cache      46m
    bootstrap           46m
    configure-network   46m
    validate-network    46m
    frr                 46m
    install-os          46m
    ...

Networker ノードであるデータプレーン内の事前にプロビジョニングされたノードの論理グループ用に OpenStackDataPlaneNodeSet カスタムリソース (CR) を定義します。デプロイメントに必要な数の Networker ノードセットを定義できます。

重要

現在、動的ルーティング環境では、RHOSO コントロールプレーンを分散できないという制限があります。このため、OVN ゲートウェイシャーシをホストする専用の Networker ノードが必要です。この制限は、今後の RHOSO リリースで解決される予定です。詳細は、OSPRH-661 を参照してください。

nodeTemplate フィールドを使用して OpenStackDataPlaneNodeSet CR 内のすべてのノードに適用する共通プロパティーを設定し、nodeTemplate.nodes フィールドを使用してノード固有のプロパティーを設定します。ノード固有の設定は、nodeTemplate から継承された値をオーバーライドします。

ヒント

事前にプロビジョニングされた Networker ノードからノードを設定する OpenStackDataPlaneNodeSet CR の例は、事前にプロビジョニングされたノードの OpenStackDataPlaneNodeSet CR の例 を参照してください。

手順

  1. openstack_networker_node_set.yaml という名前のワークステーションにファイルを作成し、OpenStackDataPlaneNodeSet CR を定義します。

    apiVersion: dataplane.openstack.org/v1beta1
    kind: OpenStackDataPlaneNodeSet
    metadata:
      name: openstack-networker-nodes 
    1
    
      namespace: openstack
    spec:
      env: 
    2
    
        - name: ANSIBLE_FORCE_COLOR
          value: "True"
    1
    OpenStackDataPlaneNodeSet CR 名は、一意であり、小文字の英数字、- (ハイフン)、または . (ピリオド) で構成され、先頭と末尾が英数字である必要があります。この例の名前を、セット内のノードを表す名前に更新してください。
    2
    オプション: Pod に渡す環境変数のリスト。
  2. データプレーン上の Networker ノードをコントロールプレーンネットワークに接続します。

    spec:
      ...
      networkAttachments:
        - ctlplane
  3. このセット内のノードが事前にプロビジョニングされていることを指定します。

      preProvisioned: true
  4. 作成した SSH キーシークレットを追加して、Ansible がデータプレーン上の Networker ノードに接続できるようにします。

      nodeTemplate:
        ansibleSSHPrivateKeySecret: <secret-key>
  5. ログを保存するために、Red Hat OpenShift Container Platform (RHOCP) クラスターの openstack namespace に永続ボリューム要求 (PVC) を作成します。volumeModeFilesystem に、accessModesReadWriteOnce に設定します。NFS ボリュームプラグインを使用する PersistentVolume (PV) からのログのストレージを要求しないでください。NFS は FIFO と互換性がないため、ansible-runner はログを保存するために書き込む FIFO ファイルを作成します。PVC の詳細は、RHOCP ストレージ ガイドの 永続ストレージについて、および デプロイメントのプランニングRed Hat OpenShift Container Platform クラスターの要件 を参照してください。
  6. データプレーンノードの永続的なロギングを有効にします。

      nodeTemplate:
        ...
        extraMounts:
          - extraVolType: Logs
            volumes:
            - name: ansible-logs
              persistentVolumeClaim:
                claimName: <pvc_name>
            mounts:
            - name: ansible-logs
              mountPath: "/runner/artifacts"
    • <pvc_name> を、RHOCP クラスター上の PVC ストレージの名前に置き換えます。
  7. 管理ネットワークを指定します。

      nodeTemplate:
        ...
        managementNetwork: ctlplane
  8. ノードのオペレーティングシステムを登録し、リポジトリーを有効にするためのユーザー名とパスワードの取得に使用される Secret CR を指定します。次の例は、ノードを CDN に登録する方法を示しています。Red Hat Satellite 6.13 にノードを登録する方法の詳細は、ホストの管理 を参照してください。

      nodeTemplate:
        ...
        ansible:
          ansibleUser: cloud-admin 
    1
    
          ansiblePort: 22
          ansibleVarsFrom:
            - prefix: subscription_manager_
              secretRef:
                name: subscription-manager
            - prefix: registry_
              secretRef:
                name: redhat-registry
          ansibleVars: 
    2
    
            edpm_bootstrap_command: |
              subscription-manager register --username {{ subscription_manager_username }} --password {{ subscription_manager_password }}
              subscription-manager release --set=9.4
              subscription-manager repos --disable=*
              subscription-manager repos --enable=rhel-9-for-x86_64-baseos-eus-rpms --enable=rhel-9-for-x86_64-appstream-eus-rpms --enable=rhel-9-for-x86_64-highavailability-eus-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms --enable=rhoso-18.0-for-rhel-9-x86_64-rpms --enable=rhceph-7-tools-for-rhel-9-x86_64-rpms
            edpm_bootstrap_release_version_package: []
    1
    データプレーンシークレットの作成 で作成したシークレットに関連付けられているユーザー。
    2
    ノードのセットをカスタマイズする Ansible 変数。使用できる Ansible 変数のリストは、https://openstack-k8s-operators.github.io/edpm-ansible/ を参照してください。

    Red Hat カスタマーポータル登録コマンドの完全なリストは、https://access.redhat.com/solutions/253273 を参照してください。registry.redhat.io にログインする方法は、https://access.redhat.com/RegistryAuthentication#creating-registry-service-accounts-6 を参照してください。

  9. Networker ノードに適用するネットワーク設定テンプレートを追加します。次の例では、1 つの NIC VLAN ネットワーク設定をデータプレーンノードに適用します。

      nodeTemplate:
        ...
        ansible:
          ...
          ansibleVars:
            ...
            edpm_network_config_os_net_config_mappings:
              edpm-networker-0:
                nic1: 52:54:04:60:55:22 
    1
    
            neutron_physical_bridge_name: br-ex
            neutron_public_interface_name: eth0
            edpm_network_config_template: |
              ---
              {% set mtu_list = [ctlplane_mtu] %}
              {% for network in nodeset_networks %}
              {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
              {%- endfor %}
              {% set min_viable_mtu = mtu_list | max %}
              network_config:
              - type: ovs_bridge
                name: {{ neutron_physical_bridge_name }}
                use_dhcp: false
                use_dhcpv6: true
              - type: interface
                name: nic1
                use_dhcp: true
                defroute: false
              - type: interface
                name: nic2
                use_dhcp: false
                defroute: false
                dns_servers: {{ ctlplane_dns_nameservers }}
                domain: {{ dns_search_domains }}
                addresses:
                - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
              - type: interface
                name: nic3
                use_dhcp: false
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpnet0_ip') }}/30
              - type: interface
                name: nic4
                use_dhcp: false
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpnet1_ip') }}/30
              - type: interface
                name: lo
                addresses:
                - ip_netmask: {{ lookup('vars', 'bgpmainnet_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'bgpmainnetv6_ip') }}/128
                - ip_netmask: {{ lookup('vars', 'internalapi_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'storage_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'tenant_ip') }}/32
                - ip_netmask: {{ lookup('vars', 'octavia_ip') }}/32
    1
    nic1 を、Compute ノードのネットワーク設定に使用する NIC に割り当てられた MAC アドレスに更新します。

    別のテンプレートは、roles/edpm_network_config/templates を参照してください。データプレーンネットワーク設定の詳細は、ネットワークサービスの設定 ガイドの データプレーンネットワークのカスタマイズ を参照してください。

  10. このグループの Networker ノードセットの共通設定を nodeTemplate セクションの下に追加します。この OpenStackDataPlaneNodeSet 内の各ノードがこの設定を継承します。

    edpm_frr_bgp_ipv4_src_network: bgpmainnet
    edpm_frr_bgp_neighbor_password: f00barZ
    edpm_frr_bgp_uplinks:
    - nic3
    - nic4
    edpm_ovn_encap_ip: '{{ lookup(''vars'', ''bgpmainnet_ip'') }}'

    共通のノード属性の設定に使用できるプロパティーの詳細は、動的ルーティングの OpenStackDataPlaneNodeSet CR spec プロパティー を参照してください。

  11. このノードセット内の各ノードを定義します。

      nodes:
        edpm-networker-0: 
    1
    
          hostName: edpm-networker-0
          networks: 
    2
    
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.100 
    3
    
          - name: internalapi
            subnetName: subnet1
            fixedIP: 172.17.0.100
          - name: storage
            subnetName: subnet1
            fixedIP: 172.18.0.100
          - name: tenant
            subnetName: subnet1
            fixedIP: 172.19.0.100
          - name: BgpNet0
            subnetName: subnet0
            fixedIP: 100.64.0.2
          - name: BgpNet1
            subnetName: subnet0
            fixedIP: 100.65.0.2
          - name: BgpMainNet
            subnetName: subnet0
            fixedIP: 172.30.0.2
          ansible:
            ansibleHost: 192.168.122.100
            ansibleUser: cloud-admin
            ansibleVars: 
    4
    
              fqdn_internal_api: edpm-networker-0.example.com
        edpm-networker-1:
          hostName: edpm-networker-1
          networks:
          - name: ctlplane
            subnetName: subnet1
            defaultRoute: true
            fixedIP: 192.168.122.101
          - name: internalapi
            subnetName: subnet1
            fixedIP: 172.17.0.101
          - name: storage
            subnetName: subnet1
            fixedIP: 172.18.0.101
          - name: tenant
            subnetName: subnet1
            fixedIP: 172.19.0.101
          - name: BgpNet0
            subnetName: subnet0
            fixedIP: 100.64.0.2
          - name: BgpNet1
            subnetName: subnet0
            fixedIP: 100.65.0.2
          - name: BgpMainNet
            subnetName: subnet0
            fixedIP: 172.30.0.2
          ansible:
            ansibleHost: 192.168.122.101
            ansibleUser: cloud-admin
            ansibleVars:
              fqdn_internal_api: edpm-networker-1.example.com
    1
    ノード定義の参照 (例: edpm-networker-0)。ノードセット内の各ノードにノード定義が必要です。
    2
    ノードの IPAM と DNS レコードを定義します。
    3
    ネットワークの予測可能な IP アドレスを指定します。この場合、NetConfig CR でネットワークに定義された割り当て範囲内のアドレスでなければなりません。
    4
    ノードをカスタマイズするノード固有の Ansible 変数。
    注記
    • nodes セクションに定義するノードには、nodeTemplate セクションで設定されているのと同じ Ansible 変数を設定できます。Ansible 変数が特定のノードと nodeTemplate セクション内の両方に設定されている場合は、ノード固有の値が nodeTemplate セクションの値をオーバーライドします。
    • ノードのすべての nodeTemplate Ansible 変数を複製してデフォルトをオーバーライドし、ノード固有の値を設定する必要はありません。設定する必要があるのは、オーバーライドするノードの Ansible 変数だけです。
    • 多くの ansibleVars の名前には edpm が含まれています。これは "External Data Plane Management (外部データプレーン管理)" の略です。

    ノード属性を設定するために使用できるプロパティーの詳細は、OpenStackDataPlaneNodeSet CR のプロパティー を参照してください。

  12. services セクションに、frr サービスおよび ovn-bgp-agent サービスが含まれていることを確認します。

    注記

    ssh-known-hosts サービスは Compute ノードセット CR にすでに含まれているため、このノードセットには 追加しない でください。このサービスはグローバルサービスであるため、単一のノードセット CR のみ に含まれています。

    services:
    - download-cache
    - bootstrap
    - configure-network
    - install-os
    - configure-os
    - frr
    - validate-network
    - run-os
    - reboot-os
    - install-certs
    - ovn
    - neutron-metadata
    - ovn-bgp-agent
  13. openstack_networker_node_set.yaml 定義ファイルを保存します。
  14. データプレーンの Networker ノードリソースを作成します。

    $ oc create --save-config -f openstack_networker_node_set.yaml -n openstack
  15. ステータスが SetupReady であることを確認して、データプレーンリソースが作成されたことを確認します。

    $ oc wait openstackdataplanenodeset openstack-networker-nodes --for condition=SetupReady --timeout=10m

    ステータスが SetupReady の場合、コマンドは condition met メッセージを返し、それ以外の場合はタイムアウトエラーを返します。

    データプレーンの状態の詳細は、データプレーンの状態 を参照してください。

  16. ノードセットの Secret リソースが作成されたことを確認します。

    $ oc get secret | grep openstack-networker-nodes
    dataplanenodeset-openstack-networker-nodes Opaque 1 3m50s
  17. サービスが作成されたことを確認します。

    $ oc get openstackdataplaneservice -n openstack
    NAME                AGE
    download-cache      46m
    bootstrap           46m
    configure-network   46m
    validate-network    46m
    frr                 46m
    install-os          46m
    ...

次の OpenStackDataPlaneNodeSet CR の例では、ノード固有の設定を使用して、事前にプロビジョニングされた Compute ノードからノードセットを作成します。例にはオプションのフィールドが含まれています。この例を確認し、オプションのフィールドを環境に適した値に更新するか、削除します。その後、Red Hat OpenStack Services on OpenShift (RHOSO) デプロイメントでこの例を使用します。

この例の OpenStackDataPlaneNodeSet CR の名前を、セット内のノードを表す名前に更新してください。OpenStackDataPlaneNodeSet CR 名は、一意であり、小文字の英数字と - (ハイフン) または . (ピリオド) のみが含まれ、先頭と末尾は英数字で、最大長 53 文字である必要があります。

apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneNodeSet
metadata:
  name: openstack-compute-nodes
  namespace: openstack
spec:
  env:
    - name: ANSIBLE_FORCE_COLOR
      value: "True"
  networkAttachments:
    - ctlplane
  preProvisioned: true
  nodeTemplate:
    ansibleSSHPrivateKeySecret: dataplane-ansible-ssh-private-key-secret
    extraMounts:
      - extraVolType: Logs
        volumes:
        - name: ansible-logs
          persistentVolumeClaim:
            claimName: <pvc_name>
        mounts:
        - name: ansible-logs
          mountPath: "/runner/artifacts"
    managementNetwork: ctlplane
    ansible:
      ansibleUser: cloud-admin
      ansiblePort: 22
      ansibleVarsFrom:
        - prefix: subscription_manager_
          secretRef:
            name: subscription-manager
        - prefix: registry_
          secretRef:
            name: redhat-registry
      ansibleVars:
        edpm_bootstrap_command: |
          subscription-manager register --username {{ subscription_manager_username }} --password {{ subscription_manager_password }}
          subscription-manager release --set=9.4
          subscription-manager repos --disable=*
          subscription-manager repos --enable=rhel-9-for-x86_64-baseos-eus-rpms --enable=rhel-9-for-x86_64-appstream-eus-rpms --enable=rhel-9-for-x86_64-highavailability-eus-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms --enable=rhoso-18.0-for-rhel-9-x86_64-rpms --enable=rhceph-7-tools-for-rhel-9-x86_64-rpms
        edpm_bootstrap_release_version_package: []
        edpm_network_config_os_net_config_mappings:
          edpm-compute-0:
            nic1: 52:54:04:60:55:22
        neutron_physical_bridge_name: br-ex
        neutron_public_interface_name: eth0
        edpm_network_config_template: |
          ---
          {% set mtu_list = [ctlplane_mtu] %}
          {% for network in nodeset_networks %}
          {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }}
          {%- endfor %}
          {% set min_viable_mtu = mtu_list | max %}
          network_config:
          - type: ovs_bridge
            name: {{ neutron_physical_bridge_name }}
            mtu: {{ min_viable_mtu }}
            use_dhcp: false
            dns_servers: {{ ctlplane_dns_nameservers }}
            domain: {{ dns_search_domains }}
            addresses:
            - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
            routes: {{ ctlplane_host_routes }}
            members:
            - type: interface
              name: nic1
              mtu: {{ min_viable_mtu }}
              # force the MAC address of the bridge to this interface
              primary: true
          {% for network in nodeset_networks %}
            - type: vlan
              mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
              vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }}
              addresses:
              - ip_netmask:
                  {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
              routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
          {% endfor %}
  nodes:
    edpm-compute-0:
      hostName: edpm-compute-0
      networks:
      - name: ctlplane
        subnetName: subnet1
        defaultRoute: true
        fixedIP: 192.168.122.100
      - name: internalapi
        subnetName: subnet1
        fixedIP: 172.17.0.100
      - name: storage
        subnetName: subnet1
        fixedIP: 172.18.0.100
      - name: tenant
        subnetName: subnet1
        fixedIP: 172.19.0.100
      ansible:
        ansibleHost: 192.168.122.100
        ansibleUser: cloud-admin
        ansibleVars:
          fqdn_internal_api: edpm-compute-0.example.com
    edpm-compute-1:
      hostName: edpm-compute-1
      networks:
      - name: ctlplane
        subnetName: subnet1
        defaultRoute: true
        fixedIP: 192.168.122.101
      - name: internalapi
        subnetName: subnet1
        fixedIP: 172.17.0.101
      - name: storage
        subnetName: subnet1
        fixedIP: 172.18.0.101
      - name: tenant
        subnetName: subnet1
        fixedIP: 172.19.0.101
      ansible:
        ansibleHost: 192.168.122.101
        ansibleUser: cloud-admin
        ansibleVars:
          fqdn_internal_api: edpm-compute-1.example.com
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る