Beispiele für Heat-Vorlagen
Eine Heat-Vorlage ist eine gültige, in der OpenStack-HOT-Spezifikation definierte HOT-Vorlage (Heat Orchestration Template).
- Einführung und einige grundlegende Beispiele unter http://docs.openstack.org/developer/heat/template_guide/hot_guide.html
- HOT-Spezifikation unter http://docs.openstack.org/developer/heat/template_guide/hot_spec.html
- OpenStack-Ressourcentypen und zugehörige Parameter unter http://docs.openstack.org/developer/heat/template_guide/openstack.html
Bei der Entwicklung von Vorlagen ist es empfehlenswert, Parameter zu verwenden und fest codierte Werte zu vermeiden.
In den folgenden Beispielen stammen Beispiel 1 und Beispiel 2 aus dem Handbuch OpenStack Template Guide und veranschaulichen die Unterschiede bei der Verwendung von fest codierten Werten und Parametern.
Beispiel 3 zeigt, wie eine Suchannotation verwendet wird, um eine Liste gültiger Werte für einen Parameter zu generieren. Diese erleichtert dem Benutzer die Auswahl eines gültigen Parameterwerts.
Beispiel 4 zeigt, wie das Kennwort admin für eine virtuelle Maschine im Abschnitt user_data festgelegt wird.
Beispiel 5 zeigt, wie ein AIX- oder Linux on Power-Server in PowerVC festgelegt wird. In PowerVC wird die zu verwendende Speicherkonnektivitätsgruppe und die Speichervorlage angegeben, in der der Bootdatenträger platziert wird.
- SCOIMAGE
- Suche nach Images im Image-Repository für die Region.
- SCOFLAVOR
- Suche nach der Versionsgröße innerhalb der in der Region verfügbaren Auswahlmöglichkeiten.
- SCONETWORK
- Suche nach verfügbaren Netzen in der Region.
- SCOKEY
- Suche nach den registrierten Schlüsseln für das Projekt.
Beispiel 1
heat_template_version: 2013-05-23
description: Simple template to deploy a single compute instance with hardcoded values
resources:
my_instance:
type: OS::Nova::Server
properties:
key_name: my_key_pair_1
image: cirros-0.3.1-x86_64
flavor: m1.tiny
Beispiel 2
heat_template_version: 2013-05-23
description: Simple template to deploy a single compute instance with parameters
parameters:
key_name:
type: string
label: Schlüsselname
description: Name of key-pair to be used for compute instance
image_id:
type: string
label: Image-ID
description: Image to be used for compute instance
instance_type:
type: string
label: Instanztyp
description: Type of instance (flavor) to be used
resources:
my_instance:
type: OS::Nova::Server
properties:
key_name: { get_param: key_name }
image: { get_param: image_id }
flavor: { get_param: instance_type }
Beispiel 3
heat_template_version: 2013-05-23
description: Simple template to deploy a stack with two virtual machine instances
parameters:
image_name_1:
type: string
label: Imagename
description: SCOIMAGE Specify an image name for instance1
default: cirros-0.3.1-x86_64
image_name_2:
type: string
label: Imagename
description: SCOIMAGE Specify an image name for instance2
default: cirros-0.3.1-x86_64
network_id:
type: string
label: Netz-ID
description: SCONETWORK Network to be used for the compute instance
resources:
my_instance1:
type: OS::Nova::Server
properties:
image: { get_param: image_name_1 }
flavor: m1.small
networks:
- network : { get_param : network_id }
my_instance2:
type: OS::Nova::Server
properties:
image: { get_param: image_name_2 }
flavor: m1.tiny networks:
- network : { get_param : network_id }
Beispiel 4
heat_template_version: 2013-05-23
description: Simple template to set the admin password for a virtual machine
parameters:
key_name:
type: string
label: Schlüsselname
description: SCOKEY Name of the key pair to be used for the compute instance
image_name:
type: string
label: Imagename
description: SCOIMAGE Name of the image to be used for the compute instance
password:
type: string
label: Kennwort
description: admin password
hidden: true
resources:
my_instance:
type: OS::Nova::Server
properties:
key_name: { get_param: key_name }
admin_user: sampleuser
image: { get_param: image_name }
flavor: m1.small
user_data:
str_replace:
template: |
#!/bin/bash
echo "Setting password to " $password
echo $password |passwd --stdin sampleuser
params:
$password: { get_param: password }
Beispiel 5
Das folgende Beispiel stellt eine einfache Heat-Vorlage für die Implementierung eines AIX- oder Linux on Power-Servers in PowerVC dar. In PowerVC wird die zu verwendende Speicherkonnektivitätsgruppe und die Speichervorlage angegeben, in der der Bootdatenträger implementiert wird:
heat_template_version: 2013-05-23
description: Template to Deploy on NPIV v7k storage only
parameters:
network_id1:
type: string
description: SCONETWORK ID of the (nova) network a server should be deployed to.
flavor_id:
type: string
description: SCOFLAVOR The flavor to be applied to the server DatabaseTierVM.
image:
type: string
label: Image
description: SCOIMAGE The Image to be deployed
resources:
heat:
type: OS::Nova::Server
properties:
image: { get_param: image }
flavor: { get_param: flavor_id }
availability_zone: D0EB
metadata: { selected-scg: d91acbbe-3d81-4279-b389-54b3ad4a1c8c, selected-storage-template: 0431b2f3-fea6-4aa5-b3fb-d0e82ccf5ebb }
networks:
- network : { get_param : network_id1 }