Schritt 20: Mehrere Instanzen gleichzeitig erstellen
Vorwort
Nachdem im Schritt 15 eine Instanz inklusive aller wichtigen Einstellungen angelegt wurde, ist der nächste Schritt, mehr als eine Instanz per Template zu starten.
In diesem Schritt, werden zwei Instanzen erstellt, die ein gemeinsames Netzwerk nutzen.
Start
Neben den beiden Instanzen wird auch das Template aufgeteilt und in zwei Dateien erstellt.
Dies hat verschiedene Teile und den Start macht ein simples Template, welches nur ein Net und ein Subnet enthält:
heat_template_version: 2014-10-16
description: Ein simples Template welches 2 Instanzen erstellt
resources:
BeispielNet:
type: OS::Neutron::Net
properties:
name: BeispielNet
BeispielSubnet:
type: OS::Neutron::Subnet
properties:
name: BeispielSubnet
dns_nameservers:
- 8.8.8.8
- 8.8.4.4
network: {get_resource: BeispielNet}
ip_version: 4
cidr: 10.0.0.0/24
allocation_pools:
- {start: 10.0.0.10, end: 10.0.0.250}
Dies stellt das Grundgerüst des Stacks dar und wird vorerst als Gruppen.yaml
gespeichert.
Die Instanzen selber werden in einer zweiten Datei BeispielServer.yaml
beschrieben, welche dem gleichen Aufbau wie in den vorigen Schritten folgt.
Um image:
zu füllen kann wahlweise der Image Name oder die Image-ID benutzt werden. Eine korrekte Image-ID bzw. einen korrekten Namen erhält man mit openstack image list
.
Es ist wichtig, dass kein Server-Namen definiert wird und network_id
auch keinen Eintrag erfährt:
heat_template_version: 2014-10-16
description: Ein einzelner Server der durch eine Ressourcen Gruppe verwendet wird
parameters:
network_id:
type: string
server_name:
type: string
resources:
Instanz:
type: OS::Nova::Server
properties:
user_data_format: RAW
image: Ubuntu 16.04 Xenial Xerus - Latest
flavor: m1.small
name: { get_param: server_name }
networks:
- port: { get_resource: BeispielPort }
BeispielPort:
type: OS::Neutron::Port
properties:
network: { get_param: network_id }
Nachdem die Datei fertiggestellt wurde, wird diese wie oben beschrieben als BeispielServer.yaml
gespeichert.
Um weiter fortzufahren, wird die Arbeit am ursprünglichen Template (Gruppen.yaml
) fortgesetzt.
Hier gilt es nun, das zweite erstellte Template als RessourceGroup einzubinden.
Auch ist so direkt die Möglichkeit gegeben, die Anzahl der Instanzen, die Namen etc. anzugeben:
heat_template_version: 2014-10-16
description: Ein simples Template welches 2 Instanzen erstellt
resources:
BeispielInstanzen:
type: OS::Heat::ResourceGroup
depends_on: BeispielSubnet
properties:
count: 2
resource_def:
type: BeispielServer.yaml
properties:
network_id: { get_resource: BeispielNet }
server_name: BeispielInstanz_%index%
BeispielNet:
type: OS::Neutron::Net
properties:
name: BeispielNet
BeispielSubnet:
type: OS::Neutron::Subnet
properties:
name: BeispielSubnet
dns_nameservers:
- 8.8.8.8
- 8.8.4.4
network: {get_resource: BeispielNet}
ip_version: 4
cidr: 10.0.0.0/24
allocation_pools:
- {start: 10.0.0.10, end: 10.0.0.250}
Nachdem die Arbeit an Gruppen.yaml
abgeschlossen wurde, kann der so erstellte Stack direkt mit dem OpenStackClient gestartet werden:
openstack stack create -t Gruppen.yaml <Name des Stacks>
Abschluss
Nachdem am Anfang der Guided Tour noch Instanzen per Hand erstellt wurden, können nun bereits mehrere Instanzen gleichzeitig per Template ausgerollt werden und stellen einen guten Startpunkt für die Administration von OpenStack dar.