Skip to content

Instantly share code, notes, and snippets.

@fghaas
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fghaas/ed02cee402fa2d77a6fc to your computer and use it in GitHub Desktop.
Save fghaas/ed02cee402fa2d77a6fc to your computer and use it in GitHub Desktop.
Heat stack for deploying two new servers in a new network
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: 'default'
image:
type: string
description: Name of image to use for servers
default: 'cirros 0.3.3 x86_64'
flavor:
type: string
description: Flavor to use for servers
default: 'm1.nano'
public_net:
type: string
description: >
ID or name of public network for which floating IP addresses will be allocated
default: 'ext-net'
private_net_name:
type: string
description: Name of private network to be created
default: 'stack-net'
private_net_cidr:
type: string
description: Private network address (CIDR notation)
default: '10.0.3.0/24'
private_net_gateway:
type: string
description: Private network gateway address
default: '10.0.3.1'
private_net_pool_start:
type: string
description: Start of private network IP address allocation pool
default: '10.0.3.100'
private_net_pool_end:
type: string
description: End of private network IP address allocation pool
default: '10.0.3.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 }
server1:
type: OS::Nova::Server
properties:
name: Server1
image: { get_param: image }
flavor: { get_param: flavor }
key_name: { get_param: key_name }
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 }
key_name: { get_param: key_name }
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 ] }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment