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 two servers into the new network. The template also assigns floating IP addresses to each server so they are routable from the public network. parameters: key_name: type: string description: Name of keypair to assign to servers default: 'key' image: type: string description: Name of image to use for servers default: 'QTIP_CentOS' flavor: type: string description: Flavor to use for servers default: 'm1.large' public_net: type: string description: > ID or name of public network for which floating IP addresses will be allocated default: 'provider_network' private_net_name: type: string description: Name of private network to be created default: 'private_network' private_net_cidr: type: string description: Private network address (CIDR notation) default: '10.10.17.0/24' private_net_gateway: type: string description: Private network gateway address default: '10.10.17.1' private_net_pool_start: type: string description: Start of private network IP address allocation pool default: '10.10.17.2' private_net_pool_end: type: string description: End of private network IP address allocation pool default: '10.10.17.200' 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 } server1: type: OS::Nova::Server properties: name: Server1 image: { get_param: image } flavor: { get_param: flavor } networks: - port: { get_resource: server1_port } server1_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } server1_floating_ip: type: OS::Neutron::FloatingIP properties: floating_network: { get_param: public_net } port_id: { get_resource: server1_port } server2: type: OS::Nova::Server properties: name: Server2 image: { get_param: image } flavor: { get_param: flavor } networks: - port: { get_resource: server2_port } server2_port: type: OS::Neutron::Port properties: network_id: { get_resource: private_net } fixed_ips: - subnet_id: { get_resource: private_subnet } server2_floating_ip: type: OS::Neutron::FloatingIP properties: floating_network: { get_param: public_net } port_id: { get_resource: server2_port } outputs: server1_private_ip: description: IP address of server1 in private network value: { get_attr: [ server1, first_address ] } server1_public_ip: description: Floating IP address of server1 in public network value: { get_attr: [ server1_floating_ip, floating_ip_address ] } server2_private_ip: description: IP address of server2 in private network value: { get_attr: [ server2, first_address ] } server2_public_ip: description: Floating IP address of server2 in public network value: { get_attr: [ server2_floating_ip, floating_ip_address ] }