tacker/samples/practical_vnf_package/BaseHOT/scalable/scalable_hot.yaml
Masaki Oyama 2ee465438c Add a VNF package sample for practical use cases
Added a sample VNF package for practical use cases.

In this sample, the use cases listed below is supported.
  - using multiple deployment flavours
  - deploying VNF connected to an external network
  - deploying VNF as HA cluster
  - deploying scalable VNF

Implements: blueprint add-vnf-package-sample-for-practical-use-cases
Spec: https://review.opendev.org/c/openstack/tacker-specs/+/814511
Change-Id: I1c55e028b96ba3c1ad26270d359e0b1165670078
2022-03-14 08:04:13 +00:00

130 lines
3.4 KiB
YAML

heat_template_version: newton
description: "Sample VNF HOT"
parameters:
nfv:
type: json
security_group:
type: string
vdu0_availabilityzone:
type: string
default: "nova"
vdu1_availabilityzone:
type: string
default: "nova"
vdu2_availabilityzone:
type: string
default: "nova"
resources:
int_net:
type: OS::Neutron::Net
properties:
name: int_net
admin_state_up: true
value_specs:
mtu: 1450
int_subnet:
type: OS::Neutron::Subnet
depends_on: [ int_net ]
properties:
name: int_subnet
network: { get_resource: int_net }
cidr: 192.168.1.0/24
enable_dhcp: true
gateway_ip: 192.168.1.254
VDU_0:
type: OS::Heat::AutoScalingGroup
properties:
cooldown: 120
desired_capacity: 1
max_size: 1
min_size: 1
resource:
type: VDU_0.yaml
properties:
Image: { get_param: [ nfv, VDU, VDU_0, image ] }
Flavor: { get_param: [ nfv, VDU, VDU_0, flavor ] }
IntNetwork: { get_resource: int_net }
IntFixedIP: 192.168.1.10
ExtNetwork: { get_param: [ nfv, CP, VDU0_CP1, network_id ] }
ExtFixedIP:
get_param: [ nfv, CP, VDU0_CP1, subnets, 0, fixed_ip_addresses, 0 ]
AvailabilityZone: { get_param: vdu0_availabilityzone }
Server_Group: { get_resource: vdu_placement_policy }
VDU_1:
type: OS::Heat::AutoScalingGroup
properties:
cooldown: 120
desired_capacity: 1
max_size: 1
min_size: 1
resource:
type: VDU_1.yaml
properties:
Image: { get_param: [ nfv, VDU, VDU_1, image ] }
Flavor: { get_param: [ nfv, VDU, VDU_1, flavor ] }
IntNetwork: { get_resource: int_net }
IntFixedIP: 192.168.1.11
ExtNetwork: { get_param: [ nfv, CP, VDU1_CP1, network_id ] }
ExtFixedIP:
get_param: [ nfv, CP, VDU1_CP1, subnets, 0, fixed_ip_addresses, 0 ]
AvailabilityZone: { get_param: vdu1_availabilityzone }
Server_Group: { get_resource: vdu_placement_policy }
VDU_2:
type: OS::Heat::AutoScalingGroup
properties:
cooldown: 120
desired_capacity: { get_param: [nfv, VDU, VDU_2, number_of_instance ] }
max_size: 1
min_size: 0
resource:
type: VDU_2.yaml
properties:
Image: { get_param: [ nfv, VDU, VDU_2, image ] }
Flavor: { get_param: [ nfv, VDU, VDU_2, flavor ] }
IntNetwork: { get_resource: int_net }
IntFixedIP: 192.168.1.13
ExtNetwork: { get_param: [ nfv, CP, VDU2_CP1, network_id ] }
ExtFixedIP:
get_param: [ nfv, CP, VDU2_CP1, subnets, 0, fixed_ip_addresses, 0 ]
AvailabilityZone: { get_param: vdu2_availabilityzone }
Server_Group: { get_resource: vdu_placement_policy }
VDU_2_scale_in:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id:
get_resource: VDU_2
cooldown: 120
scaling_adjustment: -1
VDU_2_scale_out:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id:
get_resource: VDU_2
cooldown: 120
scaling_adjustment: 1
vdu_placement_policy:
type: OS::Nova::ServerGroup
properties:
name: vdu_placement_policy
policies:
- soft-anti-affinity
outputs: