blob: d332078d3599df9d17a02d32ec8685876ab092de [file] [log] [blame]
heat_template_version: 2013-05-23
#################################
#
# Changes in v0.2:
# - Unique availability zone for each VM
# - LAN8 and SLAN networks removed according to latest Prod/Type I diagram
# - 2 DB VMs added
# - Images corrected
# - VM start-up order: SMP->DB->BE->FE (no error handling yet)
# - Provisioning scripts placeholders
#
#################################
description: ASC Template
parameters:
# availability_zone_smp0:
# type: string
# default: nova
# availability_zone_smp1:
# type: string
# default: nova
# availability_zone_fe0:
# type: string
# default: nova
# availability_zone_fe1:
# type: string
# default: nova
# availability_zone_db0:
# type: string
# default: nova
# availability_zone_db1:
# type: string
# default: nova
# availability_zone_be0:
# type: string
# default: nova
# availability_zone_be1:
# type: string
# default: nova
# availability_zone_be2:
# type: string
# default: nova
# availability_zone_be3:
# type: string
# default: nova
# availability_zone_be4:
# type: string
# default: nova
vnf_name:
type: string
description: Unique name for this VNF instance
default: This_is_the_SCP_name
vnf_id:
type: string
description: Unique ID for this VNF instance
default: This_is_ths_SCP_id
flavor_scp_be_id:
type: string
description: flavor type
default: a1.Small
flavor_scp_fe_id:
type: string
description: flavor type
default: a1.Small
flavor_smp_id:
type: string
description: flavor type
default: a1.Small
flavor_db_id:
type: string
description: flavor type
default: a1.Small
image_scp_be_id:
type: string
description: Image use to boot a server
default: asc_base_image_be
image_scp_fe_id:
type: string
description: Image use to boot a server
default: asc_base_image_fe
image_smp_id:
type: string
description: Image use to boot a server
default: asc_base_image_smp
image_db_id:
type: string
description: Image use to boot a server
default: asc_base_image_db
int_vscp_fe_cluster_net_id:
type: string
description: LAN2 FE Cluster/KA
int_vscp_fe_cluster_cidr:
type: string
description: Private Network2 Address (CIDR notation)
int_vscp_cluster_net_id:
type: string
description: LAN3 Cluster
int_vscp_cluster_cidr:
type: string
description: Private Network3 Address (CIDR notation)
int_vscp_db_network_net_id:
type: string
description: LAN4 DB
int_vscp_db_network_cidr:
type: string
description: Private Network4 Address (CIDR notation)
SIGNET_vrf_A1_direct_net_id:
type: string
description: Network name for SIGTRAN_A
SIGNET_vrf_B1_direct_net_id:
type: string
description: Network name for SIGTRAN_B
Cricket_OCS_protected_net_id:
type: string
description: Network name for CRICKET_OCS
OAM_direct_net_id:
type: string
description: Network name for OAM
be0_Cricket_OCS_protected_ips:
type: string
label: be0 port 5 OAM ip address
description: be0 port 5 OAM ip address
be1_Cricket_OCS_protected_ips:
type: string
label: be1 port 5 OAM ip address
description: be1 port 5 OAM ip address
be2_Cricket_OCS_protected_ips:
type: string
label: be2 port 5 OAM ip address
description: be2 port 5 OAM ip address
be3_Cricket_OCS_protected_ips:
type: string
label: be3 port 5 OAM ip address
description: be3 port 5 OAM ip address
be4_Cricket_OCS_protected_ips:
type: string
label: be4 port 5 OAM ip address
description: be4 port 5 OAM ip address
be0_OAM_direct_ips:
type: string
label: be0 port 7 OAM ip address
description: be0 port 7 OAM ip address
be1_OAM_direct_ips:
type: string
label: be1 port 7 OAM ip address
description: be1 port 7 OAM ip address
be2_OAM_direct_ips:
type: string
label: be2 port 7 OAM ip address
description: be2 port 7 OAM ip address
be3_OAM_direct_ips:
type: string
label: be3 port 7 OAM ip address
description: be3 port 7 OAM ip address
be4_OAM_direct_ips:
type: string
label: be4 port 7 OAM ip address
description: be4 port 7 OAM ip address
fe0_SIGNET_vrf_A1_direct_ips:
type: string
label: fe0 port 0 SIGTRAN ip address
description: fe0 port 0 SIGTRAN ip address
fe0_OAM_direct_ips:
type: string
label: fe0 port 7 OAM ip address
description: fe0 port 7 OAM ip address
fe1_SIGNET_vrf_B1_direct_ips:
type: string
label: fe1 port 1 SIGTRAN ip address
description: fe1 port 1 SIGTRAN ip address
fe1_OAM_direct_ips:
type: string
label: fe1 port 7 OAM ip address
description: fe1 port 7 OAM ip address
smp0_OAM_direct_ips:
type: string
label: smp0 port 7 OAM ip address
description: smp0 port 7 OAM ip address
smp1_OAM_direct_ips:
type: string
label: smp1 port 7 OAM ip address
description: smp1 port 7 OAM ip address
db0_OAM_direct_ips:
type: string
label: db0 port 7 OAM ip address
description: smp0 port 7 OAM ip address
db1_OAM_direct_ips:
type: string
label: smp1 port 7 OAM ip address
description: db1 port 7 OAM ip address
vm_scp_be0_name:
type: string
default: vSCP_BE0
description: name of VM
vm_scp_be1_name:
type: string
default: vSCP_BE1
description: name of VM
vm_scp_be2_name:
type: string
default: vSCP_BE2
description: name of VM
vm_scp_be3_name:
type: string
default: vSCP_BE3
description: name of VM
vm_scp_be4_name:
type: string
default: vSCP_BE4
description: name of VM
vm_scp_fe0_name:
type: string
default: vSCP_FE0
description: name of VM
vm_scp_fe1_name:
type: string
default: vSCP_FE1
description: name of VM
vm_smp0_name:
type: string
default: vSMP0
description: name of VM
vm_smp1_name:
type: string
default: vSMP1
description: name of VM
vm_db0_name:
type: string
default: vDB0
description: name of VM
vm_db1_name:
type: string
default: vDB1
description: name of VM
resources:
# scp_be_wait_condition:
# type: OS::Heat::WaitCondition
# properties:
# handle: { get_resource: scp_be_wait_handle }
# count: 5
# timeout: 300
# scp_be_wait_handle:
# type: OS::Heat::WaitConditionHandle
#
# scp_fe_wait_condition:
# type: OS::Heat::WaitCondition
# properties:
# handle: { get_resource: scp_fe_wait_handle }
# count: 2
# timeout: 300
# scp_fe_wait_handle:
# type: OS::Heat::WaitConditionHandle
#
# smp_wait_condition:
# type: OS::Heat::WaitCondition
# properties:
# handle: { get_resource: smp_wait_handle }
# count: 2
# timeout: 300
# smp_wait_handle:
# type: OS::Heat::WaitConditionHandle
#
# db_wait_condition:
# type: OS::Heat::WaitCondition
# properties:
# handle: { get_resource: db_wait_handle }
# count: 2
# timeout: 300
# db_wait_handle:
# type: OS::Heat::WaitConditionHandle
FE_Affinity:
type: OS::Nova::ServerGroup
properties:
policies: ["anti-affinity"]
BE_Affinity:
type: OS::Nova::ServerGroup
properties:
policies: ["anti-affinity"]
SMP_Affinity:
type: OS::Nova::ServerGroup
properties:
policies: ["anti-affinity"]
DB_Affinity:
type: OS::Nova::ServerGroup
properties:
policies: ["anti-affinity"]
FE_Clustering_KA:
type: OS::Contrail::VirtualNetwork
properties:
name: { get_param: int_vscp_fe_cluster_net_id }
FE_Clustering_subnet:
type: OS::Neutron::Subnet
properties:
network_id: { get_resource: FE_Clustering_KA }
cidr: { get_param: int_vscp_fe_cluster_cidr }
Clustering_Network:
type: OS::Contrail::VirtualNetwork
properties:
name: { get_param: int_vscp_cluster_net_id }
Clustering_Network_subnet:
type: OS::Neutron::Subnet
properties:
network_id: { get_resource: Clustering_Network }
cidr: { get_param: int_vscp_cluster_cidr }
DB_Network:
type: OS::Contrail::VirtualNetwork
properties:
name: { get_param: int_vscp_db_network_net_id }
DB_Network_subnet:
type: OS::Neutron::Subnet
properties:
network_id: { get_resource: DB_Network }
cidr: { get_param: int_vscp_db_network_cidr }
server_scp_be0:
type: OS::Nova::Server
# depends on: db_wait_condition
properties:
name: { get_param: vm_scp_be0_name }
image: { get_param: image_scp_be_id }
# availability_zone: { get_param: availability_zone_be0 }
flavor: { get_param: flavor_scp_be_id }
scheduler_hints: { group: { get_resource: BE_Affinity } }
networks:
- port: { get_resource: be0_port_3 }
- port: { get_resource: be0_port_4 }
- port: { get_resource: be0_port_5 }
- port: { get_resource: be0_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_scp_be0_name}
# wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
be0_port_2:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
be0_port_3:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
be0_port_4:
type: OS::Neutron::Port
properties:
network_id: { get_resource: DB_Network }
be0_port_5:
type: OS::Neutron::Port
properties:
network: { get_param: Cricket_OCS_protected_net_id }
fixed_ips: [{"ip_address": {get_param: be0_Cricket_OCS_protected_ips}}]
be0_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: be0_OAM_direct_ips}}]
server_scp_be1:
type: OS::Nova::Server
# depends on: db_wait_condition
properties:
name: { get_param: vm_scp_be1_name }
image: { get_param: image_scp_be_id }
# availability_zone: { get_param: availability_zone_be1 }
flavor: { get_param: flavor_scp_be_id }
scheduler_hints: { group: { get_resource: BE_Affinity } }
networks:
- port: { get_resource: be1_port_3 }
- port: { get_resource: be1_port_4 }
- port: { get_resource: be1_port_5 }
- port: { get_resource: be1_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_scp_be1_name}
# wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
be1_port_3:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
be1_port_4:
type: OS::Neutron::Port
properties:
network_id: { get_resource: DB_Network }
be1_port_5:
type: OS::Neutron::Port
properties:
network: { get_param: Cricket_OCS_protected_net_id }
fixed_ips: [{"ip_address": {get_param: be1_Cricket_OCS_protected_ips}}]
be1_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: be1_OAM_direct_ips}}]
server_scp_be2:
type: OS::Nova::Server
# depends on: db_wait_condition
properties:
name: { get_param: vm_scp_be2_name }
image: { get_param: image_scp_be_id }
# availability_zone: { get_param: availability_zone_be2 }
flavor: { get_param: flavor_scp_be_id }
scheduler_hints: { group: { get_resource: BE_Affinity } }
networks:
- port: { get_resource: be2_port_3 }
- port: { get_resource: be2_port_4 }
- port: { get_resource: be2_port_5 }
- port: { get_resource: be2_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_scp_be2_name}
# wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
be2_port_3:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
be2_port_4:
type: OS::Neutron::Port
properties:
network_id: { get_resource: DB_Network }
be2_port_5:
type: OS::Neutron::Port
properties:
network: { get_param: Cricket_OCS_protected_net_id }
fixed_ips: [{"ip_address": {get_param: be2_Cricket_OCS_protected_ips}}]
be2_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: be2_OAM_direct_ips}}]
server_scp_be3:
type: OS::Nova::Server
# depends on: db_wait_condition
properties:
name: { get_param: vm_scp_be3_name }
image: { get_param: image_scp_be_id }
# availability_zone: { get_param: availability_zone_be3 }
flavor: { get_param: flavor_scp_be_id }
scheduler_hints: { group: { get_resource: BE_Affinity } }
networks:
- port: { get_resource: be3_port_3 }
- port: { get_resource: be3_port_4 }
- port: { get_resource: be3_port_5 }
- port: { get_resource: be3_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_scp_be3_name}
# wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
be3_port_3:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
be3_port_4:
type: OS::Neutron::Port
properties:
network_id: { get_resource: DB_Network }
be3_port_5:
type: OS::Neutron::Port
properties:
network: { get_param: Cricket_OCS_protected_net_id }
fixed_ips: [{"ip_address": {get_param: be3_Cricket_OCS_protected_ips}}]
be3_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: be3_OAM_direct_ips}}]
server_scp_be4:
type: OS::Nova::Server
# depends on: db_wait_condition
properties:
name: { get_param: vm_scp_be4_name }
image: { get_param: image_scp_be_id }
# availability_zone: { get_param: availability_zone_be4 }
flavor: { get_param: flavor_scp_be_id }
scheduler_hints: { group: { get_resource: BE_Affinity } }
networks:
- port: { get_resource: be4_port_3 }
- port: { get_resource: be4_port_4 }
- port: { get_resource: be4_port_5 }
- port: { get_resource: be4_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_scp_be4_name}
# wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
be4_port_3:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
be4_port_4:
type: OS::Neutron::Port
properties:
network_id: { get_resource: DB_Network }
be4_port_5:
type: OS::Neutron::Port
properties:
network: { get_param: Cricket_OCS_protected_net_id }
fixed_ips: [{"ip_address": {get_param: be4_Cricket_OCS_protected_ips}}]
be4_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: be4_OAM_direct_ips}}]
server_scp_fe0:
type: OS::Nova::Server
# depends on: scp_be_wait_condition
properties:
name: { get_param: vm_scp_fe0_name }
image: { get_param: image_scp_fe_id }
# availability_zone: { get_param: availability_zone_fe0 }
flavor: { get_param: flavor_scp_fe_id }
scheduler_hints: { group: { get_resource: FE_Affinity } }
networks:
- port: { get_resource: fe0_port_0 }
- port: { get_resource: fe0_port_2 }
- port: { get_resource: fe0_port_3 }
- port: { get_resource: fe0_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_scp_fe0_name}
# wc_notify: { get_attr: ['scp_fe_wait_handle', 'curl_cli'] }
fe0_port_0:
type: OS::Neutron::Port
properties:
network: { get_param: SIGNET_vrf_A1_direct_net_id }
fixed_ips: [{"ip_address": {get_param: fe0_SIGNET_vrf_A1_direct_ips}}]
fe0_port_2:
type: OS::Neutron::Port
properties:
network_id: { get_resource: FE_Clustering_KA }
fe0_port_3:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
fe0_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: fe0_OAM_direct_ips}}]
server_scp_fe1:
type: OS::Nova::Server
# depends on: scp_be_wait_condition
properties:
name: { get_param: vm_scp_fe1_name }
image: { get_param: image_scp_fe_id }
# availability_zone: { get_param: availability_zone_fe1 }
flavor: { get_param: flavor_scp_fe_id }
scheduler_hints: { group: { get_resource: FE_Affinity } }
networks:
- port: { get_resource: fe1_port_1 }
- port: { get_resource: fe1_port_2 }
- port: { get_resource: fe1_port_3 }
- port: { get_resource: fe1_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_scp_fe1_name}
# wc_notify: { get_attr: ['scp_fe_wait_handle', 'curl_cli'] }
fe1_port_1:
type: OS::Neutron::Port
properties:
network: { get_param: SIGNET_vrf_B1_direct_net_id }
fixed_ips: [{"ip_address": {get_param: fe1_SIGNET_vrf_B1_direct_ips}}]
fe1_port_2:
type: OS::Neutron::Port
properties:
network_id: { get_resource: FE_Clustering_KA }
fe1_port_3:
type: OS::Neutron::Port
properties:
network_id: { get_resource: Clustering_Network }
fe1_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: fe1_OAM_direct_ips}}]
server_smp0:
type: OS::Nova::Server
properties:
name: { get_param: vm_smp0_name }
image: { get_param: image_smp_id }
# availability_zone: { get_param: availability_zone_smp0 }
flavor: { get_param: flavor_smp_id }
scheduler_hints: { group: { get_resource: SMP_Affinity } }
networks:
- port: { get_resource: smp0_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_smp0_name}
# wc_notify: { get_attr: ['smp_wait_handle', 'curl_cli'] }
smp0_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: smp0_OAM_direct_ips}}]
server_smp1:
type: OS::Nova::Server
properties:
name: { get_param: vm_smp1_name }
image: { get_param: image_smp_id }
# availability_zone: { get_param: availability_zone_smp1 }
flavor: { get_param: flavor_smp_id }
scheduler_hints: { group: { get_resource: SMP_Affinity } }
networks:
- port: { get_resource: smp1_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_smp1_name}
# wc_notify: { get_attr: ['smp_wait_handle', 'curl_cli'] }
smp1_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: smp1_OAM_direct_ips}}]
server_db0:
type: OS::Nova::Server
# depends_on: smp_wait_condition
properties:
name: { get_param: vm_db0_name }
image: { get_param: image_db_id }
# availability_zone: { get_param: availability_zone_db0 }
flavor: { get_param: flavor_db_id }
scheduler_hints: { group: { get_resource: DB_Affinity } }
networks:
- port: { get_resource: db0_port_4 }
- port: { get_resource: db0_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_db0_name}
# wc_notify: { get_attr: ['db_wait_handle', 'curl_cli'] }
db0_port_4:
type: OS::Neutron::Port
properties:
network_id: { get_resource: DB_Network }
db0_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: db0_OAM_direct_ips}}]
server_db1:
type: OS::Nova::Server
# depends_on: smp_wait_condition
properties:
name: { get_param: vm_db1_name }
image: { get_param: image_db_id }
# availability_zone: { get_param: availability_zone_db1 }
flavor: { get_param: flavor_db_id }
scheduler_hints: { group: { get_resource: DB_Affinity } }
networks:
- port: { get_resource: db1_port_4 }
- port: { get_resource: db1_port_7 }
metadata:
vnf_id: { get_param: vnf_id }
user_data:
str_replace:
template: |
#!/bin/bash
#todo: provision $vm_name
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
$vm_name: {get_param: vm_db1_name}
# wc_notify: { get_attr: ['db_wait_handle', 'curl_cli'] }
db1_port_4:
type: OS::Neutron::Port
properties:
network_id: { get_resource: DB_Network }
db1_port_7:
type: OS::Neutron::Port
properties:
network: { get_param: OAM_direct_net_id }
fixed_ips: [{"ip_address": {get_param: db1_OAM_direct_ips}}]