10.2. 为内存加密设计 AMD SEV Compute 节点
要为使用内存加密的实例指定 AMD SEV Compute 节点,您必须创建一个新角色文件来配置 AMD SEV 角色,并配置一个新的 overcloud 类别和 AMD SEV 资源类,以用于标记 Compute 节点以进行内存加密。
流程
-
以
stack用户的身份登录 undercloud。 Source
stackrc文件:[stack@director ~]$ source ~/stackrc生成包含
ComputeAMDSEV角色的新角色数据文件,以及 overcloud 所需的任何其他角色。以下示例生成角色数据文件roles_data_amd_sev.yaml,其中包括角色Controller和ComputeAMDSEV:(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_amd_sev.yaml \ Compute:ComputeAMDSEV Controller打开
roles_data_amd_sev.yaml并编辑或添加以下参数和部分:Expand section/Parameter 当前值 新值 角色注释
Role: ComputeRole: ComputeAMDSEV角色名称
名称 :Compute名称 :ComputeAMDSEVdescription基本 Compute 节点角色AMD SEV Compute 节点角色HostnameFormatDefault%stackname%-novacompute-%index%%stackname%-novacomputeamdsev-%index%deprecated_nic_config_namecompute.yamlcompute-amd-sev.yaml-
将 overcloud 的 AMD SEV Compute 节点添加到节点定义模板、
node.json或node.yaml中,以注册它们。有关更多信息,请参阅 Director 安装和使用 指南中的 为 overcloud 注册节点。 检查节点硬件:
(undercloud)$ openstack overcloud node introspect \ --all-manageable --provide如需更多信息,请参阅 Director 安装和使用指南中的 创建裸机节点硬件清单。
为 AMD SEV Compute 节点创建
compute-amd-sevovercloud 类别:(undercloud)$ openstack flavor create --id auto \ --ram <ram_size_mb> --disk <disk_size_gb> \ --vcpus <no_vcpus> compute-amd-sev-
将
<ram_size_mb>替换为裸机节点的 RAM,以 MB 为单位。 -
将
<disk_size_gb>替换为裸机节点中的磁盘大小(以 GB 为单位)。 将
<no_vcpus>替换为裸机节点中的 CPU 数量。注意这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。
-
将
检索节点列表来识别它们的 UUID:
(undercloud)$ openstack baremetal node list使用自定义 AMD SEV 资源类标记您要为内存加密指定的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.AMD-SEV <node>将
<node>替换为裸机节点的 ID。将
compute-amd-sev类别与自定义 AMD SEV 资源类关联:(undercloud)$ openstack flavor set \ --property resources:CUSTOM_BAREMETAL_AMD_SEV=1 \ compute-amd-sev要确定与 Bare Metal 服务节点的资源类型对应的自定义资源类的名称,请将资源类转换为大写,将每个 punctuation 标记替换为下划线,并使用
CUSTOM_前缀。注意类别只能请求一个裸机资源类实例。
设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 compute-amd-sev可选:如果
ComputeAMDSEV角色的网络拓扑与Compute角色的网络拓扑不同,则创建自定义网络接口模板。有关更多信息,请参阅高级 Overcloud 自定义指南中的自定义网络接口模板。如果
ComputeAMDSEV角色的网络拓扑与Compute角色相同,您可以使用compute.yaml中定义的默认网络拓扑。在
network-environment.yaml文件中注册ComputeAMDSEV角色的Net::SoftwareConfig:resource_registry: OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::ComputeCPUPinning::Net::SoftwareConfig: /home/stack/templates/nic-configs/<amd_sev_net_top>.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml将 <
amd_sev_net_top> 替换为包含ComputeAMDSEV角色的网络拓扑的文件名称,如compute.yaml以使用默认网络拓扑。在
node-info.yaml文件中添加以下参数,以指定 AMD SEV Compute 节点的数量,以及用于指定 AMD SEV 的 Compute 节点使用的 flavor:parameter_defaults: OvercloudComputeAMDSEVFlavor: compute-amd-sev ComputeAMDSEVCount: 3要验证角色是否已创建,请输入以下命令:
(undercloud)$ openstack baremetal node list --long -c "UUID" \ -c "Instance UUID" -c "Resource Class" -c "Provisioning State" \ -c "Power State" -c "Last Error" -c "Fault" -c "Name" -f json输出示例:
[ { "Fault": null, "Instance UUID": "e8e60d37-d7c7-4210-acf7-f04b245582ea", "Last Error": null, "Name": "compute-0", "Power State": "power on", "Provisioning State": "active", "Resource Class": "baremetal.AMD-SEV", "UUID": "b5a9ac58-63a7-49ba-b4ad-33d84000ccb4" }, { "Fault": null, "Instance UUID": "3ec34c0b-c4f5-4535-9bd3-8a1649d2e1bd", "Last Error": null, "Name": "compute-1", "Power State": "power on", "Provisioning State": "active", "Resource Class": "compute", "UUID": "432e7f86-8da2-44a6-9b14-dfacdf611366" }, { "Fault": null, "Instance UUID": "4992c2da-adde-41b3-bef1-3a5b8e356fc0", "Last Error": null, "Name": "controller-0", "Power State": "power on", "Provisioning State": "active", "Resource Class": "controller", "UUID": "474c2fc8-b884-4377-b6d7-781082a3a9c0" } ]