hpc-cloud/heat_templates/example_cluster.yml

138 lines
3.7 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}
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}