5.4. プロビジョニングされていないノードが含まれるネットワーカーノードセットの OpenStackDataPlaneNodeSet CR を作成する
プロビジョニングされていないノードが含まれるネットワーカーノードを作成するには、次のタスクを実行する必要があります。
-
各ベアメタルネットワーカーノードに対して
BareMetalHostカスタムリソース (CR) を作成します。 -
ネットワーカーノードの
OpenStackDataPlaneNodeSetCR を定義します。
前提条件
- RHOCP クラスターがベアメタルノードのプロビジョニングをサポートしている。詳細は、デプロイメントの計画 の ベアメタルデータプレーンノードのプロビジョニングの計画 を参照してください。
- Cluster Baremetal Operator (CBO) がプロビジョニング用に設定されている。詳細は、RHOCP API リファレンス の プロビジョニング [metal3.io/v1alpha1] を参照してください。
5.4.1. プロビジョニングされていないネットワーカーノードの BareMetalHost CR を作成する リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルネットワーカーノードごとに BareMetalHost カスタムリソース (CR) を作成する必要があります。少なくとも、残りのインストール手順でノードにアクセスして設定を実行できるように、ネットワーク上にベアメタルネットワーカーノードを追加するために必要なデータを提供する必要があります。
プロビジョニングに ctlplane インターフェイスを使用する場合は、カーネルの rp_filter ロジックがトラフィックがドロップしないように、ctlplane アドレス範囲とは異なるアドレス範囲を使用するように DHCP サービスを設定します。これにより、戻りトラフィックがマシンのネットワークインターフェイス上に残るようになります。
手順
Bare Metal Operator (BMO) は、デフォルトで
openshift-machine-apinamespace 内のBareMetalHostカスタムリソース (CR) を管理します。すべての namespace を監視するようにProvisioningCR を更新します。$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'ベアメタルネットワーカーノードに仮想メディアブートを使用しており、ノードがプロビジョニングネットワークに接続されていない場合は、
ProvisioningCR を更新してvirtualMediaViaExternalNetworkを有効にする必要があります。これにより、外部ネットワーク経由でベアメタル接続が有効になります。$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"virtualMediaViaExternalNetwork": true }}'ノードセット内の各ベアメタルネットワーカーノードのベースボード管理コントローラー (BMC) にアクセスするための認証情報を含む
SecretCR を定義するファイルをワークステーションに作成します。apiVersion: v1 kind: Secret metadata: name: edpm-networker-0-bmc-secret namespace: openstack type: Opaque data: username: <base64_username> password: <base64_password><base64_username>と<base64_password>を base64 でエンコードされた文字列に置き換えます。次のコマンドを使用して、base64 でエンコードされた文字列を生成できます。$ echo -n <string> | base64ヒントユーザー名とパスワードを base64 でエンコードする必要がない場合は、
dataフィールドの代わりにstringDataフィールドを使用してユーザー名とパスワードを設定します。
ワークステーションに
bmh_networker_nodes.yamlという名前のファイルを作成し、各ベアメタルネットワーカーノードのBareMetalHostCR を定義します。次の例では、プロビジョニング方法 Redfish 仮想メディアを使用してBareMetalHostCR を作成します。apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: edpm-networker-0 namespace: openstack labels:1 app: openstack-networker workload: networker spec: ... bmc: address: redfish-virtualmedia+http://192.168.111.1:8000/redfish/v1/Systems/e8efd888-f844-4fe0-9e2e-498f4ab7806d2 credentialsName: edpm-networker-0-bmc-secret3 bootMACAddress: 00:c7:e4:a7:e7:f3 bootMode: UEFI online: false [preprovisioningNetworkDataName: <network_config_secret_name>]4 - 1
app、workload、nodeNameなどのメタデータラベルは、ノードのラベル付けにさまざまなレベルの粒度を指定するためのキーと値のペアです。これらのラベルは、OpenStackDataPlaneNodeSetCR の作成時に使用して、プロビジョニングするベアメタルノードの設定を記述したり、ノードセット内のノードを定義したりできます。- 2
- ノードの BMC コントローラーと通信するための URL。他のプロビジョニング方法での BMC アドレス指定の詳細は、インストーラーでプロビジョニングされたクラスターのベアメタルへのデプロイ ガイドの BMC アドレス指定 を参照してください。
- 3
- ノードの BMC にアクセスするために前の手順で作成した
SecretCR の名前。 - 4
- オプション: 事前にプロビジョニングされたイメージに渡す、ローカル namespace のネットワーク設定シークレットの名前。ネットワーク設定は
nmstate形式である必要があります。
BareMetalHostCR を作成する方法の詳細は、RHOCP の インストール後の設定 ガイドの BareMetalHost リソースについて を参照してください。BareMetalHostリソースを作成します。$ oc create -f bmh_networker_nodes.yamlBareMetalHostリソースが作成され、Available状態になっていることを確認します。$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-networker-0 Available openstack-edpm true 2d21h edpm-networker-1 Available openstack-edpm true 2d21h ...
5.4.2. プロビジョニングされていないノードが含まれるネットワーカーノードセットの OpenStackDataPlaneNodeSet CR を作成する リンクのコピーリンクがクリップボードにコピーされました!
ネットワーカーノードのグループに対して OpenStackDataPlaneNodeSet カスタムリソース (CR) を定義します。デプロイメントに応じて必要な数のノードセットを定義できます。各ノードは、1 つの OpenStackDataPlaneNodeSet CR にのみ含めることができます。
nodeTemplate フィールドを使用して OpenStackDataPlaneNodeSet CR 内のすべてのノードに適用する共通プロパティーを設定し、nodeTemplate.nodes フィールドを使用してノード固有のプロパティーを設定します。ノード固有の設定は、nodeTemplate から継承された値をオーバーライドします。
プロビジョニングされていないネットワーカーノードからノードセットを作成する OpenStackDataPlaneNodeSet CR の例については、OVS-DPDK を備えたプロビジョニングされていないネットワーカーノードのノードセット CR の例 を参照してください。
前提条件
-
各ノードセットに含めるプロビジョニングされていないノードごとに、
BareMetalHostCR が作成されます。詳細は、プロビジョニングされていないノードのBareMetalHostCR の作成 を参照してください。
手順
ワークステーションに
openstack_unprovisioned_node_set.yamlという名前のファイルを作成し、OpenStackDataPlaneNodeSetCR を定義します。apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: openstack-data-plane1 namespace: openstack spec: tlsEnabled: true env:2 - name: ANSIBLE_FORCE_COLOR value: "True"データプレーンをコントロールプレーンネットワークに接続します。
spec: ... networkAttachments: - ctlplaneこのセット内のノードはプロビジョニングされていないため、リソースの作成時にプロビジョニングする必要があることを指定します。
preProvisioned: falseリソース作成時にプロビジョニングする必要があるベアメタルノードの設定を記述するには、
baremetalSetTemplateフィールドを定義します。baremetalSetTemplate: deploymentSSHSecret: dataplane-ansible-ssh-private-key-secret bmhNamespace: <bmh_namespace> cloudUserName: <ansible_ssh_user> bmhLabelSelector: app: <bmh_label> ctlplaneInterface: <interface>-
<bmh_namespace>は、ノードの対応するBareMetalHostCR で定義されている namespace (例:openshift-machine-api) に置き換えます。 -
<ansible_ssh_user>は、Ansible SSH ユーザーのユーザー名 (例:cloud-admin) に置き換えます。 -
<bmh_label>は、ノードの対応するBareMetalHostCR で定義されているラベル (例:openstack-networker) に置き換えます。app、workload、nodeNameなどのメタデータラベルは、ノードのラベル付けにさまざまなレベルの粒度を指定するためのキーと値のペアです。対応するBareMetalHostCR 内のラベルと一致するラベルに基づいてデータプレーンノードを選択するには、bmhLabelSelectorフィールドを設定します。 -
<interface>は、ノードが接続するコントロールプレーンインターフェイス (例:enp6s0) に置き換えます。
-
カスタム
OpenStackProvisionServerCR を作成した場合は、それをbaremetalSetTemplate定義に追加します。baremetalSetTemplate: ... provisionServerName: my-os-provision-serverAnsible がデータプレーンノードに接続できるようにするために作成した SSH 鍵シークレットを追加します。
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>-
<secret-key>は、<link>[データプレーンシークレットの作成] で作成した SSH 鍵のSecretCR の名前 (例:dataplane-ansible-ssh-private-key-secret) に置き換えます。
-
-
ログを保存するために、Red Hat OpenShift Container Platform (RHOCP) クラスターの
openstacknamespace に永続ボリューム要求 (PVC) を作成します。volumeModeをFilesystemに、accessModesをReadWriteOnceに設定します。NFS ボリュームプラグインを使用する PersistentVolume (PV) からのログのストレージを要求しないでください。NFS は FIFO と互換性がないため、ansible-runnerはログを保存するために書き込む FIFO ファイルを作成します。PVC の詳細は、RHOCP ストレージ ガイドの 永続ストレージについて、および デプロイメントのプランニング の Red Hat OpenShift Container Platform クラスターの要件 を参照してください。 データプレーンノードの永続的なロギングを有効にします。
nodeTemplate: ... extraMounts: - extraVolType: Logs volumes: - name: ansible-logs persistentVolumeClaim: claimName: <pvc_name> mounts: - name: ansible-logs mountPath: "/runner/artifacts"-
<pvc_name>を、RHOCP クラスター上の PVC ストレージの名前に置き換えます。
-
管理ネットワークを指定します。
nodeTemplate: ... managementNetwork: ctlplaneRed Hat カスタマーポータルに登録されていないノードのオペレーティングシステムを登録するためのユーザー名とパスワードの取得に使用する
SecretCR を指定し、ノードのリポジトリーを有効にします。次の例は、ノードを Red Hat コンテンツ配信ネットワーク (CDN) に登録する方法を示しています。Red Hat Satellite 6.13 でノードを登録する方法については、ホストの管理 を参照してください。nodeTemplate: ansible: ansibleUser: cloud-admin1 ansiblePort: 22 ansibleVarsFrom: - secretRef: name: subscription-manager - secretRef: name: redhat-registry ansibleVars:2 rhc_release: 9.4 rhc_repositories: - {name: "*", state: disabled} - {name: "rhel-9-for-x86_64-baseos-eus-rpms", state: enabled} - {name: "rhel-9-for-x86_64-appstream-eus-rpms", state: enabled} - {name: "rhel-9-for-x86_64-highavailability-eus-rpms", state: enabled} - {name: "fast-datapath-for-rhel-9-x86_64-rpms", state: enabled} - {name: "rhoso-18.0-for-rhel-9-x86_64-rpms", state: enabled} - {name: "rhceph-7-tools-for-rhel-9-x86_64-rpms", state: enabled} edpm_bootstrap_release_version_package: []- 1
- <link>[データプレーンシークレットの作成] で作成したシークレットに関連付けられているユーザー。
- 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 を参照してください。データプレーンノードに適用するネットワーク設定テンプレートを追加します。
nodeTemplate: ... ansible: ... ansiblePort: 22 ansibleUser: cloud-admin ansibleVars: ... edpm_enable_chassis_gw: true edpm_network_config_nmstate: true ... neutron_physical_bridge_name: br-ex neutron_public_interface_name: eth0 edpm_network_config_update: false1 - 1
- ノードセットの初回デプロイ時には、
edpm_network_config_update変数をfalseに設定します。ノードセットを更新または導入する場合は、edpm_network_config_update変数をtrueに設定して、更新時にネットワーク設定の変更を適用します。この変数は、更新後または導入後にfalseにリセットします。これをfalseにリセットしないと、configure-networkサービスが含まれるOpenStackDataPlaneDeploymentCR が作成されるたびに、更新されたネットワーク設定が再適用されます。
次の例では、DPDK を使用してデータプレーンネットワーカーノードのセットに VLAN ネットワーク設定を適用します。
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_user_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: ovs_dpdk_port driver: mlx5_core name: dpdk0 mtu: {{ min_viable_mtu }} members: - type: sriov_vf device: nic6 vfid: 0 - 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 %}次の例では、DPDK を使用せずに VLAN ネットワーク設定をデータプレーンネットワーカーノードのセットに適用します。
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: nic2 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 %}データプレーンネットワーク設定の詳細は、ネットワークサービスの設定 の データプレーンネットワークのカスタマイズ を参照してください。
-
このグループ内のノードセットの共通設定を
nodeTemplateセクションに追加します。このOpenStackDataPlaneNodeSet内の各ノードがこの設定を継承します。共通のノード属性を設定するために使用できるプロパティーの詳細は、Red Hat OpenStack Services on OpenShift のデプロイ ガイドのOpenStackDataPlaneNodeSetCR の spec プロパティー を参照してください。 このノードセット内の各ノードを定義します。
nodes: edpm-networker-0:1 hostName: networker-0 networks:2 - name: ctlplane subnetName: subnet1 defaultRoute: true fixedIP: 192.168.122.1003 - 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-networker-0.example.com bmhLabelSelector:4 nodeName: edpm-networker-0 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 ansible: ansibleHost: 192.168.122.101 ansibleUser: cloud-admin ansibleVars: fqdn_internal_api: edpm-networker-1.example.com bmhLabelSelector: nodeName: edpm-networker-1- 1
- ノード定義の参照 (例:
edpm-networker-0)。ノードセット内の各ノードにノード定義が必要です。 - 2
- ノードの IPAM と DNS レコードを定義します。
- 3
- ネットワークの予測可能な IP アドレスを指定します。この場合、
NetConfigCR でネットワークに定義された割り当て範囲内のアドレスでなければなりません。 - 4
- オプション: データプレーンノードの
BareMetalHostCR を選択するBareMetalHostCR メタデータラベル。ラベルは、BareMetalHostCR に対して定義されている任意のラベルにすることができます。このラベルは、baremetalSetTemplate定義で設定されたbmhLabelSelectorラベルとともに使用され、ノードのBareMetalHostを選択します。
注記-
nodesセクションに定義するノードには、nodeTemplateセクションで設定されているのと同じ Ansible 変数を設定できます。Ansible 変数が特定のノードとnodeTemplateセクション内の両方に設定されている場合は、ノード固有の値がnodeTemplateセクションの値をオーバーライドします。 -
ノードのすべての
nodeTemplateAnsible 変数を複製してデフォルトをオーバーライドし、ノード固有の値を設定する必要はありません。設定する必要があるのは、オーバーライドするノードの Ansible 変数だけです。 -
多くの
ansibleVarsの名前にはedpmが含まれています。これは "External Data Plane Management (外部データプレーン管理)" の略です。
共通のノード属性を設定するために使用できるプロパティーの詳細は、Red Hat OpenStack Services on OpenShift のデプロイ ガイドの
OpenStackDataPlaneNodeSetCR の spec プロパティー を参照してください。-
openstack_unprovisioned_node_set.yaml定義ファイルを保存します。 データプレーンリソースを作成します。
$ oc create --save-config -f openstack_unprovisioned_node_set.yaml -n openstackステータスが
SetupReadyであることを確認して、データプレーンリソースが作成されたことを確認します。$ oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10mステータスが
SetupReadyの場合、コマンドはcondition metメッセージを返し、それ以外の場合はタイムアウトエラーを返します。データプレーンの条件と状態の詳細は、Red Hat OpenStack Services on OpenShift のデプロイ の データプレーンの条件と状態 を参照してください。
ノードセットの
Secretリソースが作成されたことを確認します。$ oc get secret -n openstack | grep openstack-data-plane dataplanenodeset-openstack-data-plane Opaque 1 3m50sノードが
provisioned状態に移行したことを確認します。$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-networker-0 provisioned openstack-data-plane true 3d21hサービスが作成されたことを確認します。
$ oc get openstackdataplaneservice -n openstack NAME AGE bootstrap 8m40s ceph-client 8m40s ceph-hci-pre 8m40s configure-network 8m40s configure-os 8m40s ...
5.4.3. OVS-DPDK を備えたプロビジョニングされていないネットワーカーノードのノードセット CR の例 リンクのコピーリンクがクリップボードにコピーされました!
次の OpenStackDataPlaneNodeSet CR の例では、OVS-DPDK とノード固有の設定を使用して、プロビジョニングされていないネットワーカーノードからノードセットを作成します。プロビジョニングされていないネットワーカーノードは、ノードセットの作成時にプロビジョニングされます。この例の OpenStackDataPlaneNodeSet CR の名前を、セット内のノードを表す名前に更新してください。OpenStackDataPlaneNodeSet CR 名は、一意であり、小文字の英数字と - (ハイフン) または . (ピリオド) のみが含まれ、先頭と末尾は英数字で、最大長 53 文字である必要があります。
apiVersion: dataplane.openstack.org/v1beta1
kind: OpenStackDataPlaneNodeSet
metadata:
name: networker-nodes
namespace: openstack
services:
- redhat
- bootstrap
- download-cache
- reboot-os
- configure-ovs-dpdk
- configure-network
- validate-network
- install-os
- configure-os
- ssh-known-hosts
- run-os
- install-certs
- ovn
- neutron-metadata
nodeTemplate:
ansible:
ansibleVars:
edpm_enable_chassis_gw: true
edpm_kernel_args: default_hugepagesz=1GB hugepagesz=1G hugepages=64 iommu=pt
intel_iommu=on tsx=off isolcpus=2-47,50-95
edpm_network_config_nmstate: true
...
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: interface
name: nic1
use_dhcp: false
- type: sriov_pf
name: nic6
mtu: 9000
numvfs: 2
use_dhcp: false
defroute: false
nm_controlled: true
hotplug: true
promisc: false
- type: ovs_user_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: ovs_dpdk_port
driver: mlx5_core
name: dpdk0
mtu: {{ min_viable_mtu }}
members:
- type: sriov_vf
device: nic6
vfid: 0
- type: linux_bond
name: bond_api
use_dhcp: false
bonding_options: "mode=active-backup"
dns_servers: {{ ctlplane_dns_nameservers }}
members:
- type: sriov_vf
device: nic6
driver: mlx5_core
mtu: {{ min_viable_mtu }}
spoofcheck: false
promisc: false
vfid: 1
primary: true
- type: vlan
vlan_id: {{ lookup('vars', networks_lower['internalapi'] ~ '_vlan_id') }}
device: bond_api
addresses:
- ip_netmask: {{ lookup('vars', networks_lower['internalapi'] ~ '_ip') }}/{{ lookup('vars', networks_lower['internalapi'] ~ '_cidr') }}
- type: ovs_user_bridge
name: br-link0
use_dhcp: false
ovs_extra: "set port br-link0 tag={{ lookup('vars', networks_lower['tenant'] ~ '_vlan_id') }}"
addresses:
- ip_netmask: {{ lookup('vars', networks_lower['tenant'] ~ '_ip') }}/{{ lookup('vars', networks_lower['tenant'] ~ '_cidr')}}
members:
- type: ovs_dpdk_bond
name: dpdkbond0
mtu: 9000
rx_queue: 1
ovs_extra: "set port dpdkbond0 bond_mode=balance-slb"
members:
- type: ovs_dpdk_port
name: dpdk1
members:
- type: interface
name: nic4
- type: ovs_dpdk_port
name: dpdk2
members:
- type: interface
name: nic5
- type: ovs_user_bridge
name: br-link1
use_dhcp: false
members:
- type: ovs_dpdk_bond
name: dpdkbond1
mtu: 9000
rx_queue: 1
ovs_extra: "set port dpdkbond1 bond_mode=balance-slb"
members:
- type: ovs_dpdk_port
name: dpdk3
members:
- type: interface
name: nic2
- type: ovs_dpdk_port
name: dpdk4
members:
- type: interface
name: nic3
edpm_ovn_bridge_mappings:
- access:br-ex
- dpdkmgmt:br-link0
- dpdkdata0:br-link1
edpm_ovs_dpdk_memory_channels: 4
edpm_ovs_dpdk_pmd_core_list: 2,3,50,51
edpm_ovs_dpdk_socket_memory: 4096,4096
edpm_tuned_isolated_cores: 2-47,50-95
edpm_tuned_profile: cpu-partitioning
neutron_physical_bridge_name: br-ex
neutron_public_interface_name: eth0