heat_template_version: 2013-05-23 description: > HOT template to create a new neutron network plus a router to the public network, and for deploying nine servers into the new network. The template also assigns floating IP addresses to rubbos_control server so it is routable from the public network. parameters: key_name: type: string description: Name of keypair to assign to servers default: bottlenecks_rubbos_keypair image: type: string description: Name of image to use for servers default: bottlenecks-trusty-server flavor: type: string description: Flavor to use for servers default: bottlenecks_rubbos_flavor public_net: type: string description: > ID or name of public network for which floating IP addresses will be allocated default: net04_ext private_net_name: type: string description: Name of private network to be created default: bottlenecks-private private_net_cidr: type: string description: Private network address (CIDR notation) default: "10.0.10.0/24" private_net_gateway: type: string description: Private network gateway address default: "10.0.10.1" private_net_pool_start: type: string description: Start of private network IP address allocation pool default: "10.0.10.2" private_net_pool_end: type: string description: End of private network IP address allocation pool default: "10.0.10.199" master_user_data: type: string description: User data for the server with master role default: "" agent_user_data: type: string description: User data for the server with agent role default: "" resources: private_net: type: OS::Neutron::Net properties: name: { get_param: private_net_name } private_subnet: type: OS::Neutron::Subnet properties: network_id: { get_resource: private_net } cidr: { get_param: private_net_cidr } gateway_ip: { get_param: private_net_gateway } allocation_pools: - start: { get_param: private_net_pool_start } end: { get_param: private_net_pool_end } router: type: OS::Neutron::Router properties: external_gateway_info: network: { get_param: public_net } router_interface: type: OS::Neutron::RouterInterface properties: router_id: { get_resource: router } subnet_id: { get_resource: private_subnet } rubbos_control: type: OS::Nova::Server properties: name: rubbos_control image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_control_port } admin_user: ubuntu user_data: { get_param: master_user_data } user_data_format: RAW rubbos_control_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_control_floating_ip: type: OS::Neutron::FloatingIP properties: floating_network: { get_param: public_net } port_id: { get_resource: rubbos_control_port } rubbos_httpd: type: OS::Nova::Server properties: name: rubbos_httpd image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_httpd_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_httpd_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_mysql1: type: OS::Nova::Server properties: name: rubbos_mysql1 image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_mysql1_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_mysql1_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_tomcat1: type: OS::Nova::Server properties: name: rubbos_tomcat1 image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_tomcat1_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_tomcat1_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_client1: type: OS::Nova::Server properties: name: rubbos_client1 image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_client1_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_client1_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_client2: type: OS::Nova::Server properties: name: rubbos_client2 image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_client2_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_client2_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_client3: type: OS::Nova::Server properties: name: rubbos_client3 image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_client3_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_client3_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_client4: type: OS::Nova::Server properties: name: rubbos_client4 image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_client4_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_client4_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] rubbos_client5: type: OS::Nova::Server properties: name: rubbos_client5 image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } networks: - port: { get_resource: rubbos_client5_port } admin_user: ubuntu user_data: { get_param: agent_user_data } user_data_format: RAW rubbos_client5_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } security_groups: [{ get_resource: server_security_group }] server_security_group: type: OS::Neutron::SecurityGroup properties: description: Rubbos group for servers access. name: rubbos-security-group rules: [ {remote_ip_prefix: 0.0.0.0/0, protocol: tcp, port_range_min: 1, port_range_max: 65535}, {remote_ip_prefix: 0.0.0.0/0, protocol: udp, port_range_min: 1, port_range_max: 65535}, {remote_ip_prefix: 0.0.0.0/0, protocol: icmp}] outputs: rubbos_control_private_ip: description: IP address of rubbos_control in private network value: { get_attr: [ rubbos_control, first_address ] } rubbos_control_public_ip: description: Floating IP address of rubbos_control in public network value: { get_attr: [ rubbos_control_floating_ip, floating_ip_address ] } rubbos_httpd_private_ip: description: IP address of rubbos_httpd in private network value: { get_attr: [ rubbos_httpd, first_address ] } rubbos_mysql1_private_ip: description: IP address of rubbos_mysql1 in private network value: { get_attr: [ rubbos_mysql1, first_address ] } rubbos_tomcat1_private_ip: description: IP address of rubbos_tomcat1 in private network value: { get_attr: [ rubbos_tomcat1, first_address ] } rubbos_client1_private_ip: description: IP address of rubbos_client1 in private network value: { get_attr: [ rubbos_client1, first_address ] } rubbos_client2_private_ip: description: IP address of rubbos_client2 in private network value: { get_attr: [ rubbos_client2, first_address ] } rubbos_client3_private_ip: description: IP address of rubbos_client3 in private network value: { get_attr: [ rubbos_client3, first_address ] } rubbos_client4_private_ip: description: IP address of rubbos_client4 in private network value: { get_attr: [ rubbos_client4, first_address ] } rubbos_client5_private_ip: description: IP address of rubbos_client5 in private network value: { get_attr: [ rubbos_client5, first_address ] }