hpc-cloud/heat_templates/example_cluster.yml

124 lines
3.3 KiB
YAML

---
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 }
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:
- network: {get_resource: internal_net}
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}
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}
volume_attachment:
type: OS::Cinder::VolumeAttachment
properties:
volume_id: {get_resource: vcompute02-volume}
instance_uuid: {get_resource: vcompute02}