ETSI NFV-SOL VNF 部署为 VM,带 LCM 操作用户数据¶
本文档描述了使用 Tacker v1 API 通过 CLI 命令如何部署带有 LCM 操作用户数据的 VNF 作为 VM。请查看 LCM-user-data 规范 和 NFV-SOL014 v2.8.1 以获取有关 LCM 操作用户数据的更多信息。
注意
这是 Tacker v1 API 的文档。有关 Tacker v2 API,请参阅 ETSI NFV-SOL VNF 部署为 VM,带 LCM 操作用户数据。
注意
大部分内容与 ETSI NFV-SOL VNF 部署为 VM,带 TOSCA 相同,但有些内容包含“LCM 操作用户数据”的具体描述。该部分将使用标注 [这是 UserData 特定的部分] 进行说明。
概述¶
下图显示了 VNF 部署的概述。
请求创建 VNF
用户通过上传 VNF 包并请求
create VNF,向 tacker-server 请求创建 VNF。VNF 包应包含BaseHOT和UserData,除了VNFD之外。这些内容的详细说明可以在 VNF 包 中找到。请求实例化 VNF
用户通过请求
instantiate VNF并提供实例化参数,向 tacker-server 请求实例化创建的 VNF。调用 OpenStack Heat API
收到请求后,tacker-server 会将其重定向到 tacker-conductor。在 tacker-conductor 中,请求会根据实例化参数的内容再次重定向到适当的 infra-driver(在本例中为 OpenStack infra-driver)。然后,OpenStack infra-driver 调用 OpenStack Heat APIs 以创建 VM 作为 VNF。
创建 VM
OpenStack Heat 根据 API 调用创建 VM。
先决条件¶
应安装以下软件包
tacker
python-tackerclient
应根据 VIM 管理 注册默认 VIM。
下面使用的 VNF 包(sample_vnf_package_csar.zip)是通过参考 VNF 包 准备的。
注意
[这是 UserData 特定的部分] 为了使用 LCM 操作用户数据部署 VNF,有必要在 VNF 包中包含 BaseHOT 和 UserData,在 VNF 包 中它们是可选的。
VNF 部署过程(作为虚拟机)¶
为了将 VNF 部署为 VM,有必要执行以下步骤。CLI 命令的详细信息在 VNF 包管理 和 使用 v1 Tacker 进行 VNF 生命周期管理 中描述。
许多步骤与 ETSI NFV-SOL VNF 部署为 VM,带 TOSCA 相同,因此请参阅该文档了解这些步骤。
1. 创建 VNF 包信息¶
请参阅 ETSI NFV-SOL VNF 部署为 VM,带 TOSCA 中的步骤。
2. 上传 VNF 包¶
请参阅 ETSI NFV-SOL VNF 部署为 VM,带 TOSCA 中的步骤。
3. 创建 VNF 标识符¶
请参阅 ETSI NFV-SOL VNF 部署为 VM,带 TOSCA 中的步骤。
4. 实例化 VNF¶
使用以下格式创建 sample_param_file.json 文件。 这是定义实例化请求参数的文件。 这些参数将在实例化请求的主体中设置。
必需参数
flavourId
additionalParams
注意
flavorId 的详细信息在 基于 ETSI NFV-SOL001 的 VNF 描述符 (VNFD) 中描述。
注意
[这是 UserData 特定的部分] additionalParams 是一个可以由 KeyValuePairs 描述的参数。通过在此参数中设置以下两个参数,可以使用 LCM 操作用户数据进行实例化。对于 file_name.py 和 class_name,请设置 Prerequisites 中描述的文件名和类名。
lcm-operation-user-data: ./UserData/file_name.py
lcm-operation-user-data-class: class_name
可选参数
instantiationLevelId
extVirtualLinks
extManagedVirtualLinks
vimConnectionInfo
注意
只有在您拥有 VIM 管理 中描述的默认 VIM 时,才能跳过 vimConnectionInfo。
注意
此操作可以指定 VNF 实例的 vimConnectionInfo。即使此操作指定与一个 VNF 实例关联的多个 vimConnectionInfo,也只会使用其中一个用于生命周期管理操作。
仅包含必需参数的参数文件的示例
{
"flavourId":"simple",
"additionalParams": {
"lcm-operation-user-data": "./UserData/lcm_user_data.py",
"lcm-operation-user-data-class": "SampleUserData"
}
}
包含可选参数的参数文件的示例
{
"flavourId": "simple",
"instantiationLevelId": "instantiation_level_1",
"extVirtualLinks": [
{
"id": "net0",
"resourceId": "4bf3e646-7a24-4f04-a985-d8f4bb1203de", #Set the uuid of the network to use
"extCps": [
{
"cpdId": "CP1",
"cpConfig": [
{
"cpProtocolData": [
{
"layerProtocol": "IP_OVER_ETHERNET",
"ipOverEthernet": {
"ipAddresses": [
{
"type": "IPV4",
"fixedAddresses": [
"10.10.0.49" #Set the ip address from subnet range
],
"subnetId": "06709e3e-33ff-4221-9d07-565c3fd55223" #Set the subnetID of net0
}
]
}
}
]
}
]
}
]
}
],
"vimConnectionInfo": [
{
"id": "e24f9796-a8e9-4cb0-85ce-5920dcddafa1", #Set a random uuid.
"vimId": "8a0fd79d-e224-4c27-85f5-ee79c6e0d870", #Set the uuid of the VIM to use
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_2"
}
],
"additionalParams": {
"lcm-operation-user-data": "./UserData/lcm_user_data.py",
"lcm-operation-user-data-class": "SampleUserData"
}
}
本文档中使用的 samlple_param_file.json 如下所示。
{
"flavourId": "simple",
"extVirtualLinks": [
{
"id": "net0",
"resourceId": "${network_uuid}",
"extCps": [
{
"cpdId": "CP1",
"cpConfig": [
{
"cpProtocolData": [
{
"layerProtocol": "IP_OVER_ETHERNET",
"ipOverEthernet": {
"ipAddresses": [
{
"type": "IPV4",
"numDynamicAddresses": 1,
"subnetId": "${subnet_uuid}"
}
]
}
}
]
}
]
}
]
}
],
"vimConnectionInfo": [
{
"id": "e24f9796-a8e9-4cb0-85ce-5920dcddafa1",
"vimId": "${vim_uuid}",
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_2"
}
],
"additionalParams": {
"lcm-operation-user-data": "./UserData/lcm_user_data.py",
"lcm-operation-user-data-class": "SampleUserData"
}
}
执行以下 CLI 命令来实例化 VNF 实例。
$ openstack vnflcm instantiate VNF_INSTANCE_ID ./sample_param_file.json
结果
Instantiate request for VNF Instance 810d8c9b-e467-4b06-9265-ac9dce015fce has been accepted.
之后,执行以下 CLI 命令并确认 VNF 实例实例化成功。
确认“Instantiation State”为“INSTANTIATED”。
$ openstack vnflcm show VNF_INSTANCE_ID -c 'Instantiation State'
结果
+---------------------+--------------+
| Field | Value |
+---------------------+--------------+
| Instantiation State | INSTANTIATED |
+---------------------+--------------+
5. 终止 VNF¶
请参阅 ETSI NFV-SOL VNF 部署为 VM,带 TOSCA 中的步骤。
6. 删除 VNF 标识符¶
请参阅 ETSI NFV-SOL VNF 部署为 VM,带 TOSCA 中的步骤。