--- heat_template_version: 2015-04-30 description: Simple Example template to deploy a virtual compute cluster. parameters: image_name: type: string label: Image Name description: Name of image to be used for compute instance public_net: type: string label: Public Net Name description: Public network used for router. ssh_key: type: string label: ssh key name. description: ssh public key name. (Must be uploaded to openstack first) compute_flavor: type: string label: Flavor for compute nodes, description: Flavor with which to start compute nodes. aux_flavor: type: string label: Flavor for auxiliary nodes. description: Flavor with which to start auxiliary nodes. (for now only the interface machine) cidr: type: string label: Cidr for internal subnet description: Cidr for the subnet of the internal user network. internal_net_name: type: string label: Name for the internal network description: Name for the internal network of this cluster. volume_size: type: string label: Size (GB) description: Size (GB) of the volume for each compute node resources: internal_net: type: OS::Neutron::Net properties: name: {get_param: internal_net_name} internal_subnet: type: OS::Neutron::Subnet properties: network_id: {get_resource: internal_net} cidr: {get_param: cidr} dns_nameservers: ["129.125.4.6", "129.125.36.10"] ip_version: 4 internal_router: type: OS::Neutron::Router properties: external_gateway_info: {network: {get_param: public_net}} internal_interface: type: OS::Neutron::RouterInterface properties: router_id: {get_resource: internal_router} subnet: {get_resource: internal_subnet} public_port: type: OS::Neutron::Port properties: network_id: {get_resource: internal_net} fixed_ips: - subnet_id: {get_resource: internal_subnet} security_groups: - default floating_ip: type: OS::Neutron::FloatingIP properties: floating_network_id: {get_param: public_net} port_id: {get_resource: public_port} interface: # User-interface for cluster-operation type: OS::Nova::Server properties: key_name: {get_param: ssh_key} image: {get_param: image_name} flavor: {get_param: aux_flavor} networks: - port: {get_resource: public_port} admin: # Machine to run slurm and other admin tools on. type: OS::Nova::Server properties: key_name: {get_param: ssh_key} image: {get_param: image_name} flavor: {get_param: aux_flavor} networks: - network: {get_resource: internal_net} vcompute01-volume: type: OS::Cinder::Volume properties: size: {get_param: volume_size} vcompute01: type: OS::Nova::Server properties: key_name: adminkey image: {get_param: image_name} flavor: {get_param: compute_flavor} networks: - network: {get_resource: internal_net} vcompute_01_volume_attachment: type: OS::Cinder::VolumeAttachment properties: volume_id: {get_resource: vcompute01-volume} instance_uuid: {get_resource: vcompute01} vcompute02-volume: type: OS::Cinder::Volume properties: size: {get_param: volume_size} vcompute02: type: OS::Nova::Server properties: key_name: adminkey image: {get_param: image_name} flavor: {get_param: compute_flavor} networks: - network: {get_resource: internal_net} vcompute_02_volume_attachment: type: OS::Cinder::VolumeAttachment properties: volume_id: {get_resource: vcompute02-volume} instance_uuid: {get_resource: vcompute02}