heat_template_version: 2013-05-23 description: > HOT template to create a stack with minimum number of resources for rubbos. 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 } dns_nameservers: [ "8.8.8.8" ] 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 }] 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 ] }