heat_template_version: 2015-10-15 description: > Template for deploying n PROX instances. The template allows for deploying multiple groups of PROX VMs. You can create a first group with certain flavors, availability groups, etc... Another group can be created with different characteristics. parameters: public_net_name: {description: Public network to allocate (floating) IPs to VMs', type: string, default: admin_floating_net} mgmt_net_name: {description: Name of PROX mgmt network to be created, type: string, default: admin_internal_net} PROX_image: {description: Image name to use for PROX, type: string, default: rapidVM} PROX_key: {description: DO NOT CHANGE THIS DEFAULT KEY NAME, type: string, default: rapid_key} my_availability_zone: {description: availability_zone for Hosting VMs, type: string, default: nova} security_group: {description: Security Group to use, type: string, default: prox_security_group} PROXType1VM_count: {description: Total number of testVMs to create, type: number, default: 2} PROXType2VM_count: {description: Total number of testVMs type 2 to create, type: number, default: 1} PROXType3VM_count: {description: Total number of testVMs type 3 to create, type: number, default: 1} # The following paramters are not used, but are here in case you want to also # create the management and dataplane networks in this template mgmt_net_cidr: {description: PROX mgmt network CIDR, type: string, default: 20.20.1.0/24} mgmt_net_gw: {description: PROX mgmt network gateway address, type: string, default: 20.20.1.1} mgmt_net_pool_start: {description: Start of mgmt network IP address allocation pool, type: string, default: 20.20.1.100} mgmt_net_pool_end: {description: End of mgmt network IP address allocation pool, type: string, default: 20.20.1.200} data_net_name: {description: Name of PROX private network to be created, type: string, default: dataplane-network} data_net_cidr: {description: PROX private network CIDR,type: string, default: 30.30.1.0/24} data_net_pool_start: {description: Start of private network IP address allocation pool, type: string, default: 30.30.1.100} data_net_pool_end: {description: End of private network IP address allocation pool, type: string, default: 30.30.1.200} data2_net_name: {description: Name of PROX private network 2 to be created, type: string, default: data2} dns: type: comma_delimited_list label: DNS nameservers description: Comma separated list of DNS nameservers for the management network. default: '8.8.8.8' resources: PROXType1VMs: type: OS::Heat::ResourceGroup description: Group of PROX VMs according to specs described in this section properties: count: { get_param: PROXType1VM_count } resource_def: type: rapid-openstack-server.yaml properties: PROX_availability_zone : {get_param: my_availability_zone} PROX_security_group : {get_param: security_group} PROX_image: {get_param: PROX_image} PROX_key: {get_param: PROX_key} PROX_server_name: rapidVM-%index% PROX_public_net: {get_param: public_net_name} PROX_mgmt_net_id: {get_param: mgmt_net_name} PROX_data_net_id: {get_param: data_net_name} PROX_config: {get_resource: MyConfig} depends_on: - MyConfig PROXType2VMs: type: OS::Heat::ResourceGroup description: Group of PROX VMs according to specs described in this section properties: count: { get_param: PROXType2VM_count } resource_def: type: rapid-openstack-server-2ports.yaml properties: PROX_availability_zone : {get_param: my_availability_zone} PROX_security_group : {get_param: security_group} PROX_image: {get_param: PROX_image} PROX_key: {get_param: PROX_key} PROX_server_name: rapidType2VM-%index% PROX_public_net: {get_param: public_net_name} PROX_mgmt_net_id: {get_param: mgmt_net_name} PROX_data_net_id: {get_param: data_net_name} PROX_data2_net_id: {get_param: data2_net_name} PROX_config: {get_resource: MyConfig} depends_on: - MyConfig PROXType3VMs: type: OS::Heat::ResourceGroup description: Group of PROX VMs according to specs described in this section properties: count: { get_param: PROXType3VM_count } resource_def: type: rapid-openstack-server.yaml properties: PROX_availability_zone : {get_param: my_availability_zone} PROX_security_group : {get_param: security_group} PROX_image: {get_param: PROX_image} PROX_key: {get_param: PROX_key} PROX_server_name: rapidType3VM-%index% PROX_public_net: {get_param: public_net_name} PROX_mgmt_net_id: {get_param: mgmt_net_name} PROX_data_net_id: {get_param: data2_net_name} PROX_config: {get_resource: MyConfig} depends_on: - MyConfig MyConfig: type: OS::Heat::CloudConfig properties: cloud_config: users: - default - name: rapid groups: "users,root" lock-passwd: false passwd: 'test' shell: "/bin/bash" sudo: "ALL=(ALL) NOPASSWD:ALL" ssh_pwauth: true chpasswd: list: | rapid:rapid expire: False write_files: - path: /opt/rapid/after_boot.sh # - path: /opt/rapid/after_boot_do_not_run.sh # after_boot.sh is ran by check_prox_system_setup.sh, if it exists # This can be used to fix some issues, like in the example below # Remove this section or rename the file, if you do not want to run # this after booting content: | OLDIFS="${IFS}" IFS=$'\n' list="$(ip route | grep via | grep -v 'dev eth0')" # Delete all routes using gateway on other interfaces than eth0 for item in ${list} do /bin/bash -c "sudo ip route del ${item}" done /bin/bash -c "sudo ip route add default via 10.6.6.1 dev eth0" /bin/bash -c "echo nameserver 8.8.8.8 > /etc/resolv.conf" IFS="${OLDIFS}" permissions: '0777' outputs: number_of_servers: description: List of number or PROX instance value: - {get_param: PROXType1VM_count} - {get_param: PROXType2VM_count} - {get_param: PROXType3VM_count} server_name: description: List of list of names of the PROX instances value: - {get_attr: [PROXType1VMs, name]} - {get_attr: [PROXType2VMs, name]} - {get_attr: [PROXType3VMs, name]} mngmt_ips: description: List of list of Management IPs of the VMs value: - {get_attr: [PROXType1VMs, mngmt_ip]} - {get_attr: [PROXType2VMs, mngmt_ip]} - {get_attr: [PROXType3VMs, mngmt_ip]} data_plane_ips: description: List of list of list of DataPlane IPs of the VMs value: - {get_attr: [PROXType1VMs, data_plane_ips]} - {get_attr: [PROXType2VMs, data_plane_ips]} - {get_attr: [PROXType3VMs, data_plane_ips]} data_plane_macs: description: List of list of list of DataPlane MACs of the VMs value: - {get_attr: [PROXType1VMs, data_plane_mac]} - {get_attr: [PROXType2VMs, data_plane_mac]} - {get_attr: [PROXType3VMs, data_plane_mac]}