|
|
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
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.
| + | Kurzer Einleitungstext |
| | | |
− | == Rezepte == | + | == Was ist zu tun? == |
− | == Anlegen einer Vorlage ==
| + | * Stichpunktartige Auflistung |
− | 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.
| + | * aller Arbeitsschritte |
− | 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"
| + | == Schritt-für-Schritt Anleitung == |
− | |-
| + | Jeder Arbeitschritt wird hier genau erklärt und ggf. mit Screenshots hinterlegt. |
− | ! Typ !! Beschreibung
| |
− | |-
| |
− | | heat_template_version || Die Version des erstellten Templates
| |
− | |-
| |
− | | parameters || Variablen, die im laufe des Scripts wieder aufgerufen werden können (z.B. Schlüsselpaare, Flavor)
| |
− | |-
| |
− | | 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.
| + | === Dabei sollten === |
− | Hier ist zu empfehlen, dass Sie die neuste Version verwenden, da hier üblicherweise die beste Kompatibilität gewährleistet ist.
| + | Unterschritte |
− | Unter [https://rdi-cloud.uni-paderborn.de/project/resource_types/ 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.
| |
| | | |
− | <bootstrap_alert color=info>Die Einrückung in einem HOT-Template muss immer zwei Leerzeichen betragen, ansonsten erhalten Sie Fehler bei der Erstellung des Stacks.
| + | === in sinnvolle Abschnitte === |
− | </bootstrap_alert>
| + | unterteilt werden |
| | | |
− | Als ersten Beispiel finden Sie hier ein einfaches Template, in dem zunächst eine Instanz mit Netzwerkport und Floating IP erstellt wird.
| + | === dazu nutzt man dann === |
| + | Überschriften dritter Ordnung |
| | | |
− | <source lang=YAML>
| + | === Nebenbei === |
− | heat_template_version: 2018-08-31
| + | * Hier nochmal der Hinweis auf den Menüpunkt "Mitmachen" links im Hauptmenü, hinter dem sich wertvolle Anleitungen und Hinweise verstecken. |
− | description: A simple HOT
| + | * Erfahrene Redakteure finden unterhalb der "Kategorie:Utility templates" interessantes Handwerkszeug für fortgeschrittene Textmanipulationen. |
| | | |
− | parameters:
| + | == Siehe auch == |
− | flavor:
| + | Weitere interessante Artikel zum gleichen Themenfeld verlinken |
− | 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>
| |
− | | |
− | Anschließend folgt die Definition der Ressourcen. Auch hier geben Sie zunächst den Namen und den Typ der Ressource an. Der Typ gibt an, welches Modul von Openstack angesprochen werden soll. Eine Übersicht der verfügbaren Ressourcen erhalten Sie unter [https://rdi-cloud.uni-paderborn.de/project/resource_types/ Ressourcentypen]. Abhängig von der Ressource ändern sich die möglichen Eigenschaften. Mithilfe der Funktionen ''get_param'', ''get_ressource'' und ''get_attr'' können Sie innerhalb des Templates auf die jeweiligen Werte referenzieren. Diese müssen nicht zwingend vorher definiert sein, sondern können auch im Script hinter dem Aufruf stehen.
| |
− | <source>
| |
− | Name_der_Ressource:
| |
− | type: Typ der Ressource
| |
− | properties: Auflistung der Eigenschaften
| |
− | Eigenschaft_1: Wert
| |
− | Eigenschaft_2: Wert
| |
− | </source>
| |
− | | |
− | Am Ende des Templates werden die Ausgaben definiert. Mithilfe der Funktion ''get_attr'' können Sie auf Attribute einer Ressource zugreifen und diese in der Übersicht des Stacks ausgeben. Die möglichen Attribute finden Sie in der Übersicht der [https://rdi-cloud.uni-paderborn.de/project/resource_types/ Ressourcentypen], wenn Sie auf den Namen der Ressource klicken.
| |
− | <source>
| |
− | outputs:
| |
− | Name_der_Ausgabe:
| |
− | description: Beschreibung der Ausgabe
| |
− | value: { get_attr: [ Ressource, Attribut ] }
| |
− | </source>
| |
− | | |
− | Speichern Sie ihr Template als <code>.yaml</code> Datei ab.
| |
− | == Einen Stack erstellen und starten == | |
− | | |
− | == Einen Stack updaten ==
| |
− | | |
− | == Einen Stack löschen ==
| |
− | | |
− | == Instanzen per Cloud-Config konfigurieren ==
| |
− | clout-config.yaml übergeben
| |
− | https://cloudinit.readthedocs.io/en/latest/topics/examples.html#
| |
− | | |
− | | |
− | == Vorlagen Generator ==
| |