ETSI NFV-SOL VNF 变更当前 VNF 包,使用 StandardUserData

本文档描述了在使用 Tacker 中,当 UserData 类为 StandardUserData 时,如何变更 VNF 的当前 VNF 包。

注意

有关 StandardUserData(不使用 AutoScalingGroup 的 userdata 脚本),请参阅 UserData 脚本 (VNF LCM v2)

注意

本文档的内容已确认使用以下 VNF 包有效。

请参考以下示例。

如果您使用这些示例,您需要添加以下文件

  • Definitions/etsi_nfv_sol001_common_types.yaml

  • Definitions/etsi_nfv_sol001_vnfd_types.yaml

  • Files/images/cirros-0.5.2-x86_64-disk.img

这些示例会进行以下更新

  • VDU1

    • 更改镜像

    • 更改规格

    • 添加网络

  • VDU2

    • 更改镜像

    • 添加网络

  • VDU3

    • 无变更

概述

下图显示了更改当前 VNF 包的概述。

  1. 请求更改当前 VNF 包

    用户通过请求 change current vnf package,向 tacker-server 请求变更 VNF 实例的当前 VNF 包。

  2. 调用 OpenStack Heat API

    收到来自 tacker-client 的请求后,tacker-server 会将其重定向到 tacker-conductor。在 tacker-conductor 中,请求会再次根据 VNF 实例的内容重定向到适当的 infra-driver(在本例中为 OpenStack infra-driver)。然后,OpenStack infra-driver 调用 OpenStack Heat APIs。

  3. 变更 VM 的资源

    OpenStack Heat 根据 API 调用变更 VM 的资源(镜像、规格、外部网络)。

../../../../_images/chg_vnfpkg2.svg

先决条件

应安装以下软件包

  • tacker

  • python-tackerclient

至少需要一个状态为 INSTANTIATED 的 VNF 实例。有关实例化 VNF 的过程,请参阅 ETSI NFV-SOL VNF 部署为使用 LCM 操作 User Data 的 VM

有关上传 VNF 包的操作,请参阅 VNF 包

注意

您可以直接通过镜像或卷部署 VM。因此,在更新 VM 的镜像时,将存在两种情况。

使用通用 VNF 包和 flavor_id 进行实例化,然后使用相应链接中的 VNF 包执行 change current vnf package 操作,您可以以以下两种方式更新 VM 的镜像。

  1. 将通过镜像创建的 VM 更改为通过新镜像创建的 VM

  2. 将通过卷创建的 VM 更改为通过新卷创建的 VM

更改当前 VNF 包

如前提条件中所述,在执行更改当前 VNF 包之前,必须先创建 VNF。

注意

当前,此操作仅支持 Change Current VNF Package 的某些功能。

  • 有几种方法可以更新 VDU,但在 Bobcat 版本中,Tacker 仅支持 RollingUpdate 类型。您可以通过 upgrade_type 参数进行设置。

  • 支持的更新

    • 更改 VM 的镜像

    • 更改 VM 的规格

    • 修改、添加和删除外部网络

  • 不支持的更新

    • 根据 VNF 包增加或减少 VNFc 的数量

    • 添加和删除整个 VDU

在执行变更当前 VNF 包之前,您需要上传您想要更改的 VNF 包。

CLI 命令的详细信息在 v2 Tacker 的 VNF 生命周期管理 中描述。

注意

如果您想在变更当前 VNF 包之前和之后更改 HOT 定义,您需要更改 nested 目录下的文件名。在本文档中的操作示例中,文件名在变更当前 VNF 包之前和之后如下所示。

  • VDU1

    • 之前:BaseHOT/simple/nested/VDU1.yaml

    • 之后:BaseHOT/simple/nested/VDU1-ver2.yaml

  • VDU2

    • 之前:BaseHOT/simple/nested/VDU2.yaml

    • 之后:BaseHOT/simple/VDU2-ver2.yaml

对于变更当前 VNF 包,您需要在运行命令之前准备一个 JSON 格式的定义文件。

sample_param_file_for_standard_user_data.json

{
  "vnfdId": "5b09fc55-5324-47b4-9f3d-70d1ca59a765",
  "extVirtualLinks": [{
    "id": "ext_vl_id_net4",
    "resourceId": "1dad756e-a9d2-4c49-b490-d26940c6cbaf",
    "extCps": [{
      "cpdId": "VDU1_CP4",
      "cpConfig": {
        "VDU1_CP4_1": {
          "cpProtocolData": [{
            "layerProtocol": "IP_OVER_ETHERNET",
            "ipOverEthernet": {
              "ipAddresses": [{
                "type": "IPV4",
                "numDynamicAddresses": 1
              }]
            }
          }]
        }
      }
    },
    {
      "cpdId": "VDU2_CP4",
      "cpConfig": {
        "VDU2_CP4_1": {
          "cpProtocolData": [{
            "layerProtocol": "IP_OVER_ETHERNET",
            "ipOverEthernet": {
              "ipAddresses": [{
                "type": "IPV4",
                "numDynamicAddresses": 1
              }]
            }
          }]
        }
      }
    }]
  }],
  "extManagedVirtualLinks": [{
    "id": "ext_managed_vl_1",
    "vnfVirtualLinkDescId": "internalVL1",
    "resourceId": "4daf6f6c-8f19-4cc6-96b5-0e3ccc9c7c93"
  }],
  "additionalParams": {
    "upgrade_type": "RollingUpdate",
    "lcm-operation-coordinate-old-vnf": "./Scripts/coordinate_old_vnf.py",
    "lcm-operation-coordinate-new-vnf": "./Scripts/coordinate_new_vnf.py",
    "vdu_params": [{
      "vdu_id": "VDU1",
      "old_vnfc_param": {
        "cp_name": "VDU1_CP1",
        "username": "ubuntu",
        "password": "ubuntu"
      },
      "new_vnfc_param": {
        "cp_name": "VDU1_CP1",
        "username": "ubuntu",
        "password": "ubuntu"
      }
    },
    {
      "vdu_id": "VDU2",
      "old_vnfc_param": {
        "cp_name": "VDU2_CP1",
        "username": "ubuntu",
        "password": "ubuntu"
      },
      "new_vnfc_param": {
        "cp_name": "VDU2_CP1",
        "username": "ubuntu",
        "password": "ubuntu"
      }
    }],
    "lcm-operation-user-data": "./UserData/userdata_standard.py",
    "lcm-operation-user-data-class": "StandardUserData",
    "nfv": {
      "VDU": {
        "VDU1-0": {
          "name": "VDU1-a-001-change_vnfpkg"
        },
        "VDU1-1": {
          "name": "VDU1-a-010-change_vnfpkg"
        },
        "VDU1-2": {
          "name": "VDU1-a-011-change_vnfpkg"
        }
      }
    }
  },
  "vimConnectionInfo": {
    "vim1": {
      "accessInfo": {
        "password": "devstack",
        "project": "nfv",
        "projectDomain": "Default",
        "region": "RegionOne",
        "userDomain": "Default",
        "username": "nfv_user"
      },
      "extra": {
        "new-key": "new-val"
      },
      "interfaceInfo": {
        "endpoint": "https:///identity/v3"
      },
      "vimId": "defb2f96-5670-4bef-8036-27bf61267fc1",
      "vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
    }
  },
  "vnfConfigurableProperties": {
    "key": "value"
  },
  "extensions": {
    "key": "value"
  }
}

注意

  • vnfdId 是您上传的新 VNF 包的 VNFD id。

  • extVirtualLinks 是一个可选参数。此操作可以更改 VNF 实例的外部 CP。

  • extManagedVirtualLinks 是一个可选参数。请注意,如果 VNF 实例使用 extManagedVirtualLinkInfo,则需要在请求参数中设置 extManagedVirtualLinks,无论是否更改。

  • lcm-operation-coordinate-old-vnflcm-operation-coordinate-new-vnf 是 Tacker 的独特实现,用于模拟 ETSI NFV-SOL002 v3.6.1 中的协调接口。主要是一个可以在 VM 创建后与 VM 通信、执行 VM 的特殊自定义或确认 VM 状态的脚本。

  • vimConnectionInfo 是一个可选参数。此操作可以指定 VNF 实例的 vimConnectionInfo。即使此操作指定与一个 VNF 实例关联的多个 vimConnectionInfo,也只会使用其中一个用于生命周期管理操作。无法删除已注册的 vimConnectionInfo 的键。

  • vnfConfigurablePropertiesextensions 是可选参数。与更新操作一样,这些值通过对请求参数中设置的值进行 JSON Merge Patch 与当前值进行更新。

您可以在 additionalParams 中设置以下参数

additionalParams

属性名称

基数

参数描述

upgrade_type

1

文件更新操作方法的类型。指定 Blue-Green 或 Rolling update。

lcm-operation-coordinate-old-vnf

0..1

模拟旧 VNF 的 CoordinateVNF 行为的脚本的文件路径。

lcm-operation-coordinate-new-vnf

0..1

模拟新 VNF 的 CoordinateVNF 行为的脚本的文件路径。

vdu_params

1..N

要更新的目标 VDU 的 VDU 信息。

> vdu_id

1

要更新的目标 VDU 的 VDU 名称。

> old_vnfc_param

0..1

旧 VNFC 连接信息。用于 CoordinateVNF 操作中为了应用配置到 VNFC 的 ssh 连接。

>> cp_name

1

要更新的旧 VNFC 的连接点名称。

>> username

1

要更新的旧 VNFC 的用户名。

>> password

1

要更新的旧 VNFC 的密码。

> new_vnfc_param

0..1

新的 VNFC 连接信息。用于 CoordinateVNF 操作中为了应用配置到 VNFC 的 ssh 连接。

>> cp_name

1

要更新的新 VNFC 的连接点名称。

>> username

1

要更新的新 VNFC 的用户名。

>> password

1

要更新的新 VNFC 的密码。

external_lb_param

0..1

需要配置更改的负载均衡器信息。仅适用于 OpenStack VIM 的 Blue-Green 部署过程。

> ip_address

1

负载均衡器服务器的 IP 地址。

> username

1

负载均衡器服务器的用户名。

> password

1

负载均衡器服务器的密码。

lcm-operation-user-data

1

要使用的 UserData 文件名。

lcm-operation-user-data-class

1

要使用的 UserData 类名。

nfv

0..1

HOT 中使用的参数。

注意

当使用 StandardUserData 作为 UserData 时,需要在 additionalParams 中进行以下设置:

  • “lcm-operation-user-data”: “./UserData/userdata_standard.py”

  • “lcm-operation-user-data-class”: “StandardUserData”

如何更改通过镜像创建的 VM 的镜像

执行变更当前 VNF 包 CLI 命令。完成此变更操作后,您应该通过 Heat CLI 命令检查资源状态。

1. 检查操作之前和之后的堆栈的 ‘ID’ 和 ‘Stack Status’。这是为了确认操作之前和之后堆栈 ‘ID’ 没有更改,并且堆栈更新已成功更新。

2. 检查 VDU 及其父资源的 ‘physical_resource_id’ 和 ‘resource_status’。这是为了确认操作之前和之后 VDU 的 ‘physical_resource_id’ 没有更改,并且 ‘resource_status’ 已成功更新。

3. 检查操作之前和之后的 VDU 的 ‘image’ 信息。这是为了确认 VDU 的镜像已成功更改。有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考

  • 操作前检查点 1

    操作前的堆栈信息

    $ openstack stack list -c 'ID' -c 'Stack Name' -c 'Stack Status'
    

    结果

    +--------------------------------------+------------------------------------------+-----------------+
    | ID                                   | Stack Name                               | Stack Status    |
    +--------------------------------------+------------------------------------------+-----------------+
    | 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 | vnf-63ae20b2-dbe0-4892-a06f-81dbb7396dfb | CREATE_COMPLETE |
    +--------------------------------------+------------------------------------------+-----------------+
    
  • 操作前检查点 2

    操作前的堆栈资源信息

    $ openstack stack resource list 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 \
      --filter type='VDU1.yaml'
    

    结果

    +---------------+--------------------------------------+---------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type | resource_status | updated_time         |
    +---------------+--------------------------------------+---------------+-----------------+----------------------+
    | VDU1-0        | 5d6d3b48-4743-404f-a9a3-31750915d1fe | VDU1.yaml     | CREATE_COMPLETE | 2023-12-04T09:47:40Z |
    +---------------+--------------------------------------+---------------+-----------------+----------------------+
    

    操作前的 VDU 信息

    $ openstack stack resource list 5d6d3b48-4743-404f-a9a3-31750915d1fe \
      --filter type='OS::Nova::Server'
    

    结果

    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type    | resource_status | updated_time         |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | VDU1          | cb821a5e-91a6-4272-b953-f4e72350034b | OS::Nova::Server | CREATE_COMPLETE | 2023-12-04T09:47:41Z |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    
  • 操作前检查点 3

    操作前的 VDU 详细信息

    $ openstack stack resource show 5d6d3b48-4743-404f-a9a3-31750915d1fe VDU1 \
      -f json | jq .attributes.image.id
    

    结果

    "6813ef65-0344-48e6-a726-22cb714bef1b"
    
  • 执行变更当前 VNF 包

    整个 VNF 的更改当前 VNF 包执行

    $ openstack vnflcm change-vnfpkg VNF_INSTANCE_ID \
      ./sample_param_file_for_standard_user_data.json \
      --os-tacker-api-version 2
    

    结果

    Change Current VNF Package for VNF Instance 63ae20b2-dbe0-4892-a06f-81dbb7396dfb has been accepted.
    
  • 操作后检查点 1

    操作后的堆栈信息

    $ openstack stack list -c 'ID' -c 'Stack Name' -c 'Stack Status'
    

    结果

    +--------------------------------------+------------------------------------------+-----------------+
    | ID                                   | Stack Name                               | Stack Status    |
    +--------------------------------------+------------------------------------------+-----------------+
    | 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 | vnf-63ae20b2-dbe0-4892-a06f-81dbb7396dfb | UPDATE_COMPLETE |
    +--------------------------------------+------------------------------------------+-----------------+
    

    注意

    “堆栈状态”过渡到 UPDATE_COMPLETE。

  • 操作后检查点 2

    操作后的堆栈资源信息

    $ openstack stack resource list 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 \
      --filter type='VDU1-ver2.yaml'
    

    结果

    +---------------+--------------------------------------+----------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type  | resource_status | updated_time         |
    +---------------+--------------------------------------+----------------+-----------------+----------------------+
    | VDU1-0        | 5d6d3b48-4743-404f-a9a3-31750915d1fe | VDU1-ver2.yaml | UPDATE_COMPLETE | 2023-12-06T05:20:01Z |
    +---------------+--------------------------------------+----------------+-----------------+----------------------+
    

    操作后的 VDU 信息

    $ openstack stack resource list 5d6d3b48-4743-404f-a9a3-31750915d1fe \
      --filter type='OS::Nova::Server'
    

    结果

    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type    | resource_status | updated_time         |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | VDU1          | cb821a5e-91a6-4272-b953-f4e72350034b | OS::Nova::Server | UPDATE_COMPLETE | 2023-12-06T05:19:08Z |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    

    注意

    ‘resource_status’ 转换为 UPDATE_COMPLETE。

  • 操作后检查点 3

    操作后的 VDU 详细信息

    $ openstack stack resource show 5d6d3b48-4743-404f-a9a3-31750915d1fe VDU1 \
      -f json | jq .attributes.image.id
    

    结果

    "8879b7f5-8d5f-4752-a740-c067002fa430"
    

    注意

    您可以检查 ‘attributes.image.id’ 是否已从 ‘6813ef65-0344-48e6-a726-22cb714bef1b’ 更改为 ‘8879b7f5-8d5f-4752-a740-c067002fa430’。

如何更改通过卷创建的 VM 的镜像

执行变更当前 VNF 包 CLI 命令。完成此变更操作后,您应该通过 Heat CLI 命令检查资源状态。

1. 检查操作之前和之后的堆栈的 ‘ID’ 和 ‘Stack Status’。这是为了确认操作之前和之后堆栈 ‘ID’ 没有更改,并且堆栈更新已成功更新。

2. 检查 VDU 及其父资源的 ‘physical_resource_id’ 和 ‘resource_status’。这是为了确认操作之前和之后 VDU 的 ‘physical_resource_id’ 已更改,VDU 父资源的 ‘physical_resource_id’ 在操作之前和之后没有更改,并且 VDU 的 ‘resource_status’ 已成功创建,VDU 父资源的 ‘resource_status’ 已成功更新。

3. 检查操作之前和之后的 VDU 的 ‘os-extended-volumes:volumes_attached’ 信息。这是为了确认 VDU 的镜像已成功更改。有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考

  • 操作前检查点 1

    操作前的堆栈信息

    $ openstack stack list -c 'ID' -c 'Stack Name' -c 'Stack Status'
    

    结果

    +--------------------------------------+------------------------------------------+-----------------+
    | ID                                   | Stack Name                               | Stack Status    |
    +--------------------------------------+------------------------------------------+-----------------+
    | 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 | vnf-63ae20b2-dbe0-4892-a06f-81dbb7396dfb | CREATE_COMPLETE |
    +--------------------------------------+------------------------------------------+-----------------+
    
  • 操作前检查点 2

    操作前的堆栈资源信息

    $ openstack stack resource list 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 \
      --filter type='VDU2.yaml'
    

    结果

    +---------------+--------------------------------------+---------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type | resource_status | updated_time         |
    +---------------+--------------------------------------+---------------+-----------------+----------------------+
    | VDU2-0        | 0417d111-780a-4efd-b47b-8108e4437502 | VDU2.yaml     | CREATE_COMPLETE | 2023-12-04T09:47:40Z |
    +---------------+--------------------------------------+---------------+-----------------+----------------------+
    

    操作前的 VDU 信息

    $ openstack stack resource list 0417d111-780a-4efd-b47b-8108e4437502 \
      --filter type='OS::Nova::Server'
    

    结果

    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type    | resource_status | updated_time         |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | VDU2          | 35fb4948-66b1-4c1a-86e5-328793889f5d | OS::Nova::Server | CREATE_COMPLETE | 2023-12-04T09:47:42Z |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    
  • 操作前检查点 3

    操作前的 VDU 详细信息

    $ openstack stack resource show 0417d111-780a-4efd-b47b-8108e4437502 VDU2 \
      -f json | jq '.attributes."os-extended-volumes:volumes_attached"[].id'
    

    结果

    "5e12516f-7726-411f-8693-e0b20649d3c7"
    
  • 执行变更当前 VNF 包

    整个 VNF 的更改当前 VNF 包执行

    $ openstack vnflcm change-vnfpkg VNF_INSTANCE_ID \
      ./sample_param_file_for_standard_user_data.json \
      --os-tacker-api-version 2
    

    结果

    Change Current VNF Package for VNF Instance 63ae20b2-dbe0-4892-a06f-81dbb7396dfb has been accepted.
    
  • 操作后检查点 1

    操作后的堆栈信息

    $ openstack stack list -c 'ID' -c 'Stack Name' -c 'Stack Status'
    

    结果

    +--------------------------------------+------------------------------------------+-----------------+
    | ID                                   | Stack Name                               | Stack Status    |
    +--------------------------------------+------------------------------------------+-----------------+
    | 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 | vnf-63ae20b2-dbe0-4892-a06f-81dbb7396dfb | UPDATE_COMPLETE |
    +--------------------------------------+------------------------------------------+-----------------+
    

    注意

    “堆栈状态”过渡到 UPDATE_COMPLETE。

  • 操作后检查点 2

    操作前的堆栈资源信息

    $ openstack stack resource list 74bd6e1f-6e69-49ad-a3b4-2af00f35d5a3 \
      --filter type='VDU2-ver2.yaml'
    

    结果

    +---------------+--------------------------------------+----------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type  | resource_status | updated_time         |
    +---------------+--------------------------------------+----------------+-----------------+----------------------+
    | VDU2-0        | 0417d111-780a-4efd-b47b-8108e4437502 | VDU2-ver2.yaml | UPDATE_COMPLETE | 2023-12-06T05:20:02Z |
    +---------------+--------------------------------------+----------------+-----------------+----------------------+
    

    操作后的 VDU 信息

    $ openstack stack resource list 0417d111-780a-4efd-b47b-8108e4437502 \
      --filter type='OS::Nova::Server'
    

    结果

    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type    | resource_status | updated_time         |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    | VDU2          | b4380e6a-5f8f-4fa4-b2a9-bc8026a19428 | OS::Nova::Server | CREATE_COMPLETE | 2023-12-06T05:18:42Z |
    +---------------+--------------------------------------+------------------+-----------------+----------------------+
    

    注意

    ‘resource_status’ 转换为 CREATE_COMPLETE。‘physical_resource_id’ 已从 ‘35fb4948-66b1-4c1a-86e5-328793889f5d’ 更改为 ‘b4380e6a-5f8f-4fa4-b2a9-bc8026a19428’。

  • 操作后检查点 3

    操作后的 VDU 详细信息

    $ openstack stack resource show 0417d111-780a-4efd-b47b-8108e4437502 VDU2 \
      -f json | jq '.attributes."os-extended-volumes:volumes_attached"[].id'
    

    结果

    "2c55612d-78cb-4d42-b9de-8f65e382a067"
    

    注意

    您可以检查 ‘attributes.os-extended-volumes:volumes_attached.id’ 是否已从 ‘5e12516f-7726-411f-8693-e0b20649d3c7’ 更改为 ‘2c55612d-78cb-4d42-b9de-8f65e382a067’。

如何更改 VM 的规格

执行变更当前 VNF 包 CLI 命令。完成此变更操作后,您应该通过 Heat CLI 命令检查资源状态。

1. 检查操作之前和之后的 VDU 的 ‘flavor’ 信息。这是为了确认 VDU 的规格已成功更改。有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考

  • 操作前检查点 1

    操作前的 VDU 详细信息

    $ openstack stack resource show 0417d111-780a-4efd-b47b-8108e4437502 VDU2 \
      -f json | jq .attributes.flavor
    

    结果

    {
      "vcpus": 1,
      "ram": 512,
      "disk": 1,
      "ephemeral": 0,
      "swap": 0,
      "original_name": "m1.tiny",
      "extra_specs": {
        "hw_rng:allowed": "True"
      }
    }
    
  • 执行变更当前 VNF 包

    整个 VNF 的更改当前 VNF 包执行

    $ openstack vnflcm change-vnfpkg VNF_INSTANCE_ID \
      ./sample_param_file_for_standard_user_data.json \
      --os-tacker-api-version 2
    

    结果

    Change Current VNF Package for VNF Instance 63ae20b2-dbe0-4892-a06f-81dbb7396dfb has been accepted.
    
  • 操作后检查点 1

    操作后的 VDU 详细信息

    $ openstack stack resource show 0417d111-780a-4efd-b47b-8108e4437502 VDU2 \
      -f json | jq .attributes.flavor
    

    结果

    {
      "vcpus": 1,
      "ram": 2048,
      "disk": 20,
      "ephemeral": 0,
      "swap": 0,
      "original_name": "m1.small",
      "extra_specs": {
        "hw_rng:allowed": "True"
      }
    }
    

    注意

    您可以检查 ‘attributes.flavor’ 已更改。在本例中,它已更改如下:

    • ‘attributes.flavor.ram’ 已从 ‘512’ 更改为 ‘2048’

    • ‘attributes.flavor.disk’ 已从 ‘1’ 更改为 ‘20’

    • ‘attributes.flavor.original_name’ 已从 ‘m1.tiny’ 更改为 ‘m1.small’

如何更改外部网络

执行变更当前 VNF 包 CLI 命令。完成此变更操作后,您应该通过 Heat CLI 命令检查资源状态。

1. 检查外部网络资源的数量或 ‘physical_resource_id’。在添加和删除的情况下,这是为了确认操作之前和之后资源数量已更改。在修改的情况下,这是为了确认 ‘physical_resource_id’ 已更改。

2. 检查操作之前和之后的 VDU 的 ‘address’ 信息。这是为了确认 VDU 的外部网络已成功更改。有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考

  • 操作前检查点 1

    操作前的外部网络信息

    $ openstack stack resource list 5d6d3b48-4743-404f-a9a3-31750915d1fe \
      --filter type='OS::Neutron::Port'
    

    结果

    +---------------+--------------------------------------+-------------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type     | resource_status | updated_time         |
    +---------------+--------------------------------------+-------------------+-----------------+----------------------+
    | VDU1_CP2      | 6c0b9376-ed4f-4738-af67-4f8d56673e46 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-04T09:47:41Z |
    | VDU1_CP1      | 08640038-877c-407f-b476-f3ca070585fb | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-04T09:47:41Z |
    | VDU1_CP3      | 9ba1f07c-4fb4-4415-b9ad-d0619c19b046 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-04T09:47:41Z |
    +---------------+--------------------------------------+-------------------+-----------------+----------------------+
    
  • 操作前检查点 2

    操作前的外部网络详细信息

    $ openstack stack resource show 5d6d3b48-4743-404f-a9a3-31750915d1fe VDU1 \
      -f json | jq .attributes.addresses
    

    结果

    {
      "net1": [
        {
          "version": 4,
          "addr": "10.10.1.110",
          "OS-EXT-IPS:type": "fixed",
          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:ee:a7"
        }
      ],
      "net_mgmt": [
        {
          "version": 4,
          "addr": "192.168.120.138",
          "OS-EXT-IPS:type": "fixed",
          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:f2:25:9a"
        }
      ],
      "vnf-63ae20b2-dbe0-4892-a06f-81dbb7396dfb-internalVL2-ckz5kksjbtfl": [
        {
          "version": 4,
          "addr": "192.168.4.170",
          "OS-EXT-IPS:type": "fixed",
          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:c8:b4:e9"
        }
      ]
    }
    
  • 执行变更当前 VNF 包

    整个 VNF 的更改当前 VNF 包执行

    $ openstack vnflcm change-vnfpkg VNF_INSTANCE_ID \
      ./sample_param_file_for_standard_user_data.json \
      --os-tacker-api-version 2
    

    结果

    Change Current VNF Package for VNF Instance 63ae20b2-dbe0-4892-a06f-81dbb7396dfb has been accepted.
    
  • 操作后检查点 1

    操作后的外部网络信息

    $ openstack stack resource list 5d6d3b48-4743-404f-a9a3-31750915d1fe \
      --filter type='OS::Neutron::Port'
    

    结果

    +---------------+--------------------------------------+-------------------+-----------------+----------------------+
    | resource_name | physical_resource_id                 | resource_type     | resource_status | updated_time         |
    +---------------+--------------------------------------+-------------------+-----------------+----------------------+
    | VDU1_CP2      | 6c0b9376-ed4f-4738-af67-4f8d56673e46 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-04T09:47:41Z |
    | VDU1_CP1      | 08640038-877c-407f-b476-f3ca070585fb | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-04T09:47:41Z |
    | VDU1_CP4      | 82eb5cee-9b20-4b5c-b769-f49aba71332a | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-06T05:19:04Z |
    | VDU1_CP3      | 91515973-1432-4612-ab75-0538cef81933 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-06T05:19:06Z |
    +---------------+--------------------------------------+-------------------+-----------------+----------------------+
    

    注意

    外部网络资源的数量或 ‘resource_status’ 已更改。在本例中,数量已从 ‘3’ 更改为 ‘4’。

  • 操作后检查点 2

    操作后的外部网络详细信息

    $ openstack stack resource show 5d6d3b48-4743-404f-a9a3-31750915d1fe VDU1 \
      -f json | jq .attributes.addresses
    

    结果

    {
      "net1": [
        {
          "version": 4,
          "addr": "10.10.1.110",
          "OS-EXT-IPS:type": "fixed",
          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:ee:a7"
        }
      ],
      "net_mgmt": [
        {
          "version": 4,
          "addr": "192.168.120.138",
          "OS-EXT-IPS:type": "fixed",
          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:f2:25:9a"
        }
      ],
      "vnf-63ae20b2-dbe0-4892-a06f-81dbb7396dfb-internalVL3-eefvoasioxui": [
        {
          "version": 4,
          "addr": "192.168.5.164",
          "OS-EXT-IPS:type": "fixed",
          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:23:4a:86"
        }
      ],
      "net0": [
        {
          "version": 4,
          "addr": "10.10.0.242",
          "OS-EXT-IPS:type": "fixed",
          "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:39:75:f0"
        }
      ]
    }
    

    注意

    您可以检查 ‘attributes.addresses’ 已更改。在本例中,已添加 ‘net0’。