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-key
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-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"
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
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
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
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
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_tomcat2:
type: OS::Nova::Server
properties:
name: rubbos_tomcat2
image: { get_param: image }
flavor: { get_param: flavor }
key_name: { get_param: key_name }
networks:
- port: { get_resource: rubbos_tomcat2_port }
admin_user: ubuntu
rubbos_tomcat2_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
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
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
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
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_benchmark:
type: OS::Nova::Server
properties:
name: rubbos_benchmark
image: { get_param: image }
flavor: { get_param: flavor }
key_name: { get_param: key_name }
networks:
- port: { get_resource: rubbos_benchmark_port }
admin_user: ubuntu
rubbos_benchmark_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_tomcat2_private_ip:
description: IP address of rubbos_tomcat2 in private network
value: { get_attr: [ rubbos_tomcat2, 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_benchmark_private_ip:
description: IP address of rubbos_benchmark in private network
value: { get_attr: [ rubbos_benchmark, first_address ] }