heat_template_version: 2015-04-30 #file version 1.0 description: OCG Apps template parameters: ocgapp_image_name: type: string description: operative system image ocgapp_flavor_name: type: string description: resources to be applied on instances ocgapp_public_key: type: string description: creator's ssh public key oam_protected_net_name: type: string description: OAM network where instances will connect oam_direct_net_name: type: string description: OAM network where instances will connect cor_direct_net_name: type: string description: COR_DIRECT network where instances will connect ocgapp_oam_protected_ips: type: comma_delimited_list description: OCG OAM IP list ocgapp_oam_direct_ips: type: comma_delimited_list description: OCG OAM IP list ocgapp_cor_direct_ips: type: comma_delimited_list description: OCG COR_DIRECT IP list ocgapp_cor_direct_v6_ips: type: comma_delimited_list description: fixed IP assignment for VM's on the COR_DIRECT network ocgapp_names: type: comma_delimited_list description: OCG VM server name list (there should be 2, since we have 2 app vms) availability_zone_0: type: string description: availability zone 1 ID or name availability_zone_1: type: string description: availability zone 2 ID or name ocgapp_shared_sec_grp_id: type: string description: security group ocgapp_volume_ids: type: json description: Unique IDs for volumes vnf_name: type: string description: Unique name for this VF instance vnf_id: type: string description: Unique ID for this VF instance vf_module_id: type: string description: Unique ID for this VF module instance ocgapp_route_eth1: type: string description: OAM network routes resources: ocgapp_admin_key: type: OS::Nova::KeyPair properties: name: str_replace: template: VNF_NAME_STACK_NAME_key_pair params: VNF_NAME: {get_param: vnf_name} STACK_NAME: {get_param: 'OS::stack_name'} public_key: {get_param: ocgapp_public_key} save_private_key: false # APP_SERVER_0 ocgapp_oam_protected_0_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_protected_port_0 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_protected_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 0]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_oam_direct_0_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_direct_port_0 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 0]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_cor_direct_0_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_cor_port_0 params: VNF_NAME: {get_param: vnf_name} network: {get_param: cor_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_cor_direct_ips, 0]}}, {"ip_address": {get_param: [ocgapp_cor_direct_v6_ips, 0]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_server_0: type: OS::Nova::Server properties: key_name: {get_resource: ocgapp_admin_key} name: {get_param: [ocgapp_names, 0]} image: {get_param: ocgapp_image_name} flavor: {get_param: ocgapp_flavor_name} availability_zone: {get_param: availability_zone_0} networks: - port: {get_resource: ocgapp_oam_protected_0_port} - port: {get_resource: ocgapp_oam_direct_0_port} - port: {get_resource: ocgapp_cor_direct_0_port} metadata: vnf_id: {get_param: vnf_id} vf_module_id: {get_param: vf_module_id} vnf_name: {get_param: vnf_name} user_data_format: RAW user_data: {get_resource: server_interface_config} # APP_SERVER_1 ocgapp_oam_protected_1_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_protected_port_1 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_protected_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 1]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_oam_direct_1_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_direct_port_1 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 1]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_cor_direct_1_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_cor_port_1 params: VNF_NAME: {get_param: vnf_name} network: {get_param: cor_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_cor_direct_ips, 1]}}, {"ip_address": {get_param: [ocgapp_cor_direct_v6_ips, 1]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_server_1: type: OS::Nova::Server properties: key_name: {get_resource: ocgapp_admin_key} name: {get_param: [ocgapp_names, 1]} image: {get_param: ocgapp_image_name} flavor: {get_param: ocgapp_flavor_name} availability_zone: {get_param: availability_zone_0} networks: - port: {get_resource: ocgapp_oam_protected_1_port} - port: {get_resource: ocgapp_oam_direct_1_port} - port: {get_resource: ocgapp_cor_direct_1_port} metadata: vnf_id: {get_param: vnf_id} vf_module_id: {get_param: vf_module_id} vnf_name: {get_param: vnf_name} user_data_format: RAW user_data: {get_resource: server_interface_config} # APP_SERVER_2 ocgapp_oam_protected_2_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_protected_port_2 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_protected_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 2]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_oam_direct_2_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_direct_port_2 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 2]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_cor_direct_2_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_cor_port_2 params: VNF_NAME: {get_param: vnf_name} network: {get_param: cor_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_cor_direct_ips, 2]}}, {"ip_address": {get_param: [ocgapp_cor_direct_v6_ips, 2]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_server_2: type: OS::Nova::Server properties: key_name: {get_resource: ocgapp_admin_key} name: {get_param: [ocgapp_names, 2]} image: {get_param: ocgapp_image_name} flavor: {get_param: ocgapp_flavor_name} availability_zone: {get_param: availability_zone_1} networks: - port: {get_resource: ocgapp_oam_protected_2_port} - port: {get_resource: ocgapp_oam_direct_2_port} - port: {get_resource: ocgapp_cor_direct_2_port} metadata: vnf_id: {get_param: vnf_id} vf_module_id: {get_param: vf_module_id} vnf_name: {get_param: vnf_name} user_data_format: RAW user_data: {get_resource: server_interface_config} # APP_SERVER_3 ocgapp_oam_protected_3_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_protected_port_3 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_protected_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_protected_ips, 3]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_oam_direct_3_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_oam_direct_port_3 params: VNF_NAME: {get_param: vnf_name} network: {get_param: oam_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_oam_direct_ips, 3]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_cor_direct_3_port: type: OS::Neutron::Port properties: name: str_replace: template: VNF_NAME_ocgapp_cor_port_3 params: VNF_NAME: {get_param: vnf_name} network: {get_param: cor_direct_net_name} fixed_ips: [{"ip_address": {get_param: [ocgapp_cor_direct_ips, 3]}}, {"ip_address": {get_param: [ocgapp_cor_direct_v6_ips, 3]}}] security_groups: [{get_param: ocgapp_shared_sec_grp_id}] ocgapp_server_3: type: OS::Nova::Server properties: key_name: {get_resource: ocgapp_admin_key} name: {get_param: [ocgapp_names, 3]} image: {get_param: ocgapp_image_name} flavor: {get_param: ocgapp_flavor_name} availability_zone: {get_param: availability_zone_1} networks: - port: {get_resource: ocgapp_oam_protected_3_port} - port: {get_resource: ocgapp_oam_direct_3_port} - port: {get_resource: ocgapp_cor_direct_3_port} metadata: vnf_id: {get_param: vnf_id} vf_module_id: {get_param: vf_module_id} vnf_name: {get_param: vnf_name} user_data_format: RAW user_data: {get_resource: server_interface_config} ocgapp_volume_attachment_0: type: OS::Cinder::VolumeAttachment properties: volume_id: {get_param: [ocgapp_volume_ids, 0]} instance_uuid: {get_resource: ocgapp_server_0} ocgapp_volume_attachment_1: type: OS::Cinder::VolumeAttachment properties: volume_id: {get_param: [ocgapp_volume_ids, 1]} instance_uuid: {get_resource: ocgapp_server_1} ocgapp_volume_attachment_2: type: OS::Cinder::VolumeAttachment properties: volume_id: {get_param: [ocgapp_volume_ids, 2]} instance_uuid: {get_resource: ocgapp_server_2} ocgapp_volume_attachment_3: type: OS::Cinder::VolumeAttachment properties: volume_id: {get_param: [ocgapp_volume_ids, 3]} instance_uuid: {get_resource: ocgapp_server_3} server_interface_config: type: OS::Heat::CloudConfig properties: cloud_config: write_files: - path: /etc/sysconfig/network-scripts/route-eth1 permissions: "0644" content: {get_param: ocgapp_route_eth1}