(Die Seite wurde neu angelegt: „{{article |type=Anleitung |service=Service:Cloudcomputing |targetgroup=Angestellte,Studierende,Gäste |hasdisambig=Nein }} {{template caller |marker=Stub…“) |
|||
Zeile 8: | Zeile 8: | ||
|marker=Stub | |marker=Stub | ||
}} | }} | ||
− | + | In diesem Artikel erfahren Sie, wie Sie mithilfe der ''HEAT''-Komponente von OpenStack einen eigenen IaC ([https://en.wikipedia.org/wiki/Infrastructure_as_code Infrastructure as Code]) Stack erstellen, testen und starten. | |
− | == | + | == Rezepte == |
− | + | === Anlegen einer Vorlage === | |
− | + | Die Konfiguration des Stacks erfolgt nicht wie in den anderen Artikel dieses Bereiches beschrieben über die Weboberfläche oder den Kommandozeilen-Client, sondern wird mithilfe von Templates erstellt. | |
+ | Die Templates werden als HOT (Heat Orchestration Templates) bezeichnet und werden in [https://de.wikipedia.org/wiki/YAML#:~:text=YAML%20%5B%CB%88j%C3%A6m%C9%99l%5D%20ist%20eine%20vereinfachte,vorgestellten%20E%2DMail%2DFormat YAML] verfasst. | ||
+ | Es werden grundsätzlich vier Dinge definiert: | ||
− | = | + | {| class="wikitable" |
− | + | |- | |
+ | ! Typ !! Beschreibung | ||
+ | |- | ||
+ | | heat_template_version || Die Version des erstellten Templates | ||
+ | |- | ||
+ | | parameters || Variablen, die im laufe des Scripts wieder aufgerufen werden können | ||
+ | |- | ||
+ | | resources || Ressourcen, die durch das Template erstellt werden sollen (z.B. Virtuelle Maschinen, Netzwerke) | ||
+ | |- | ||
+ | | outputs || Ausgaben, die nach der Erstellung einsehbar seien sollen (z.B. Floating-IPs) | ||
+ | |- | ||
+ | |} | ||
− | + | Die verfügbaren Heat Template Versionen können Sie in der [https://rdi-cloud.uni-paderborn.de/project/template_versions/ Weboberfläche] unter ''Orchestrierung/Vorlagenversionen'' einsehen. | |
− | + | Hier ist zu empfehlen, dass Sie die neuste Version verwenden, da hier üblicherweise die beste Kompatibilität gewährleistet ist. | |
+ | Unter ''Ressourcentypen'' finden Sie dort auch eine Auflistung der verfügbaren Ressourcen, welche Sie in Ihrem Template definieren können. Wenn Sie auf den Namen einer Ressource klicken, gelangen | ||
+ | Sie zu der Hilfeseite der jeweiligen Ressource, hier werden Ihnen die verfügbare Parameter kurz erklärt. | ||
− | + | Als ersten Beispiel finden Sie hier ein einfaches Template, in dem zunächst eine Instanz mit Netzwerkport und Floating IP erstellt wird. | |
− | |||
− | = | + | <source lang=YAML> |
− | + | heat_template_version: 2018-08-31 | |
+ | description: A simple HOT | ||
− | + | parameters: | |
− | + | flavor: | |
− | + | type: string | |
+ | description: Flavor used by the server | ||
+ | default: upb-medium | ||
+ | image: | ||
+ | type: string | ||
+ | description: Image used for server | ||
+ | default: c315dc8d-8a9a-499d-a03e-9988d246bb77 | ||
+ | user_key: | ||
+ | type: string | ||
+ | description: SSH key to connect to the server | ||
+ | network: | ||
+ | type: string | ||
+ | description: The network for the server | ||
+ | default: uni | ||
+ | subnet: | ||
+ | type: string | ||
+ | description: The subnet for the server | ||
+ | default: uni-subnet-0 | ||
+ | floating_ip_id: | ||
+ | type: string | ||
+ | description: ID of the Floating IP to use | ||
− | == | + | resources: |
− | + | webserver: | |
+ | type: OS::Nova::Server | ||
+ | properties: | ||
+ | flavor: { get_param: flavor } | ||
+ | image: { get_param: image } | ||
+ | key_name: { get_param: user_key } | ||
+ | networks: | ||
+ | - port: { get_resource: webserver_port } | ||
+ | |||
+ | webserver_port: | ||
+ | type: OS::Neutron::Port | ||
+ | properties: | ||
+ | network: { get_param: network } | ||
+ | fixed_ips: | ||
+ | - subnet: { get_param: subnet } | ||
+ | security_groups: [{ get_resource: webserver_security_group }] | ||
+ | |||
+ | webserver_floating_ip: | ||
+ | type: OS::Neutron::FloatingIPAssociation | ||
+ | properties: | ||
+ | floatingip_id: { get_param: floating_ip_id } | ||
+ | port_id: { get_resource: webserver_port } | ||
+ | |||
+ | webserver_security_group: | ||
+ | type: OS::Neutron::SecurityGroup | ||
+ | properties: | ||
+ | description: Add security group rules for server | ||
+ | name: security-group | ||
+ | rules: | ||
+ | - remote_ip_prefix: 0.0.0.0/0 | ||
+ | protocol: tcp | ||
+ | port_range_min: 22 | ||
+ | port_range_max: 22 | ||
+ | - remote_ip_prefix: 0.0.0.0/0 | ||
+ | protocol: icmp | ||
+ | |||
+ | outputs: | ||
+ | server_private_ip: | ||
+ | description: IP address of the server in private network | ||
+ | value: { get_attr: [ webserver, first_address ] } | ||
+ | </source> | ||
+ | |||
+ | Hier wird im oberen Teil zunächst die Template Version festgelegt und eine kurze Beschreibung zum Template gegeben. | ||
+ | Danach folgt der Punkt <code>parameters</code>. Die Parameter können beim Deployment des Stacks mit angegeben und bieten so die Möglichkeit z.B. den Flavor einer VM oder ein eigenes Schlüsselpaar einzugeben. Die Struktur der Parameter ist dabei immer die selbe: | ||
+ | <source> | ||
+ | Name_des_Parameters: | ||
+ | type: Typ des Parameter (string, number, boolean) | ||
+ | description: Beschreibung des Parameters | ||
+ | default: Standardwert, falls keine Eingabe gemacht wird | ||
+ | </source> | ||
+ | |||
+ | |||
+ | === Eine Vorlage testen === | ||
+ | |||
+ | === Einen Stack erstellen und starten === | ||
+ | |||
+ | === Einen Stack updaten === | ||
+ | |||
+ | === Einen Stack löschen === | ||
+ | |||
+ | Vorlagen Generator | ||
+ | Config per clout-config.yaml übergeben | ||
+ | https://cloudinit.readthedocs.io/en/latest/topics/examples.html# |
Version vom 21. Juni 2021, 13:49 Uhr
Allgemeine Informationen
Anleitung | |
---|---|
Informationen | |
Betriebssystem | Alle |
Service | Cloudcomputing |
Interessant für | Angestellte, Studierende und Gäste |
HilfeWiki des ZIM der Uni Paderborn |
This article is a stub. You can help us by expanding it. |
In diesem Artikel erfahren Sie, wie Sie mithilfe der HEAT-Komponente von OpenStack einen eigenen IaC (Infrastructure as Code) Stack erstellen, testen und starten.
Rezepte[Bearbeiten | Quelltext bearbeiten]
Anlegen einer Vorlage[Bearbeiten | Quelltext bearbeiten]
Die Konfiguration des Stacks erfolgt nicht wie in den anderen Artikel dieses Bereiches beschrieben über die Weboberfläche oder den Kommandozeilen-Client, sondern wird mithilfe von Templates erstellt. Die Templates werden als HOT (Heat Orchestration Templates) bezeichnet und werden in YAML verfasst. Es werden grundsätzlich vier Dinge definiert:
Typ | Beschreibung |
---|---|
heat_template_version | Die Version des erstellten Templates |
parameters | Variablen, die im laufe des Scripts wieder aufgerufen werden können |
resources | Ressourcen, die durch das Template erstellt werden sollen (z.B. Virtuelle Maschinen, Netzwerke) |
outputs | Ausgaben, die nach der Erstellung einsehbar seien sollen (z.B. Floating-IPs) |
Die verfügbaren Heat Template Versionen können Sie in der Weboberfläche unter Orchestrierung/Vorlagenversionen einsehen. Hier ist zu empfehlen, dass Sie die neuste Version verwenden, da hier üblicherweise die beste Kompatibilität gewährleistet ist. Unter Ressourcentypen finden Sie dort auch eine Auflistung der verfügbaren Ressourcen, welche Sie in Ihrem Template definieren können. Wenn Sie auf den Namen einer Ressource klicken, gelangen Sie zu der Hilfeseite der jeweiligen Ressource, hier werden Ihnen die verfügbare Parameter kurz erklärt.
Als ersten Beispiel finden Sie hier ein einfaches Template, in dem zunächst eine Instanz mit Netzwerkport und Floating IP erstellt wird.
heat_template_version: 2018-08-31
description: A simple HOT
parameters:
flavor:
type: string
description: Flavor used by the server
default: upb-medium
image:
type: string
description: Image used for server
default: c315dc8d-8a9a-499d-a03e-9988d246bb77
user_key:
type: string
description: SSH key to connect to the server
network:
type: string
description: The network for the server
default: uni
subnet:
type: string
description: The subnet for the server
default: uni-subnet-0
floating_ip_id:
type: string
description: ID of the Floating IP to use
resources:
webserver:
type: OS::Nova::Server
properties:
flavor: { get_param: flavor }
image: { get_param: image }
key_name: { get_param: user_key }
networks:
- port: { get_resource: webserver_port }
webserver_port:
type: OS::Neutron::Port
properties:
network: { get_param: network }
fixed_ips:
- subnet: { get_param: subnet }
security_groups: [{ get_resource: webserver_security_group }]
webserver_floating_ip:
type: OS::Neutron::FloatingIPAssociation
properties:
floatingip_id: { get_param: floating_ip_id }
port_id: { get_resource: webserver_port }
webserver_security_group:
type: OS::Neutron::SecurityGroup
properties:
description: Add security group rules for server
name: security-group
rules:
- remote_ip_prefix: 0.0.0.0/0
protocol: tcp
port_range_min: 22
port_range_max: 22
- remote_ip_prefix: 0.0.0.0/0
protocol: icmp
outputs:
server_private_ip:
description: IP address of the server in private network
value: { get_attr: [ webserver, first_address ] }
Hier wird im oberen Teil zunächst die Template Version festgelegt und eine kurze Beschreibung zum Template gegeben.
Danach folgt der Punkt parameters
. Die Parameter können beim Deployment des Stacks mit angegeben und bieten so die Möglichkeit z.B. den Flavor einer VM oder ein eigenes Schlüsselpaar einzugeben. Die Struktur der Parameter ist dabei immer die selbe:
Name_des_Parameters:
type: Typ des Parameter (string, number, boolean)
description: Beschreibung des Parameters
default: Standardwert, falls keine Eingabe gemacht wird
Eine Vorlage testen[Bearbeiten | Quelltext bearbeiten]
Einen Stack erstellen und starten[Bearbeiten | Quelltext bearbeiten]
Einen Stack updaten[Bearbeiten | Quelltext bearbeiten]
Einen Stack löschen[Bearbeiten | Quelltext bearbeiten]
Vorlagen Generator Config per clout-config.yaml übergeben https://cloudinit.readthedocs.io/en/latest/topics/examples.html#