-
Orkestrointi Heat-työkalulla
Orkestrointi Heatilla
Tässä artikkelissa esitellään Poudassa saatavilla oleva virtuaalikonepalvelun orkestrointi OpenStack Heatin avulla.
Voit käyttää tätä ominaisuutta selainkäyttöliittymän vasemman reunan paneelista tai OpenStackin tai Heatin komentorivikäyttöliittymän avulla. Orkestrointi tarjoaa helpon tavan luoda koko infrastruktuuri uudelleenkäytettävän ja ihmisen luettavissa olevan mallipohjatiedoston perusteella. Mallipohja voi kuvata monia infrastruktuurin osia, kuten palvelimia, taltioita ja kelluvia IP-osoitteita. Samassa tiedostossa voidaan myös liittää taltioita ja IP-osoitteita tiettyihin instansseihin. Mallipohja voi myös määritellä useita tiettyihin verkkoihin liitettyjä instansseja, joista osalla on kelluva IP-osoite ja osaan on liitetty taltio. Tiedostoa voidaan käyttää myös olemassa olevan infrastruktuurin muokkaamiseen.
Orkestrointi selainkäyttöliittymän kautta
Info
Sinun tulisi käyttää Heat-mallipohjan versiona versiota "2021-04-16" ("wallaby") tai vanhempaa. Uudemmissa mallipohjaversioissa olevia ominaisuuksia ei välttämättä tueta.
Nämä ohjeet tarjoavat yksinkertaisen esimerkin pinon määrittämisestä selainkäyttöliittymän kautta. Luo Heat-pino napsauttamalla Orchestration-valikon "Stacks"-linkkiä. Avautuva näkymä näyttää kaikki olemassa olevat pinot ja tarjoaa "Launch Stack" -painikkeen uuden pinon käynnistämiseen. Ikkunassa, joka avautuu "Launch Stack" -painikkeen napsauttamisen jälkeen, voit ladata palveluun olemassa olevan itse luomasi mallipohjan tai aloittaa pinosi määrittämisen. Mallipohjan valinta on pakollista, ja mallipohjan tiedot voidaan antaa myös suorana syötteenä, kuten alla olevassa kuvassa näkyy. Huomaa, että tämä kuva sisältää kelvollisen mutta yksinkertaisen esimerkin mallipohjasta, joka rakentaa kaksi instanssia ja näyttää ensimmäisen instanssin IP-osoitteen.
Tässä on esimerkki:
heat_template_version: wallaby # As mentioned above, you can either use the date or the name
description: Simple template to deploy a single instance in cPouta
resources:
instance0:
type: OS::Nova::Server
properties:
image: Ubuntu-24.04
flavor: standard.small
key_name: my-key
networks:
- network: project_xxxxx
instance1:
type: OS::Nova::Server
properties:
image: AlmaLinux-9
flavor: standard.small
key_name: my-key
networks:
- network: project_xxxx
outputs:
network0:
description: Output the networks of instance0
value: { get_attr: [instance0, networks] }
network1:
description: Output the network of instance1
value: { get_attr: [instance1, networks]}
Kun olet valinnut "Next", selainkäyttöliittymä pyytää pinon nimeä ja salasanaasi. Tämän jälkeen voit käynnistää pinon. Kun pino on rakennettu, sitä voidaan hallita orkestroinnin Stacks-näkymästä. Osat, jotka rakennettiin osana pinoa, löytyvät niitä vastaavista valikoista. Tässä tapauksessa kaksi instanssia näkyvät instanssivalikossa, jossa niitä voidaan myös hallita. Pinon Overview-välilehdellä (Orchestration -> Stacks -> napsauta pinoa) näet myös kuvan esimerkissä "outputs"-osiossa määritellyn tulosteen. Jos haluat poistaa kaikki pinomallipohjan luomat osat, paina yksinkertaisesti "Delete Stack" Stacks-sivulla.
Orkestroinnin käyttäminen komentoriviasiakasohjelmalla
Info
Varmista, että python-heatclient on asennettu. Voit asentaa sen kirjoittamalla komennon pip install python-heatclient (https://pypi.org/project/python-heatclient/)
Heatia voidaan käyttää OpenStackin komentoriviasiakasohjelmalla, mutta tällä hetkellä voit edelleen käyttää myös vanhentunutta Heatin komentoriviasiakasohjelmaa. Luo pino komentorivillä:
Jos haluat näyttää juuri luodun pinon tiedot muiden olemassa olevien pinojen joukossa, kirjoita komento openstack stack list:
openstack stack list
+--------------------------------------+---------------+-----------------+----------------------+--------------+
| ID | Stack Name | Stack Status | Creation Time | Updated Time |
+--------------------------------------+---------------+-----------------+----------------------+--------------+
| 98077bd5-9d69-47c3-98db-b0e19a60b1fa | my-heat-stack | CREATE_COMPLETE | 2016-06-08T07:34:46Z | None |
+--------------------------------------+---------------+-----------------+----------------------+--------------+
Selitykset
Mallipohja koostuu kahdesta pääosiosta:
- Käytetty versio (heat_template_version)
- Resurssi(t) (resources)
Lisäksi on valinnaisia osioita, kuten:
- Kuvaus (description)
- Parametriryhmä(t) (parameter_groups)
- Parametri(t) (parameters)
- Tuloste(et) (outputs)
- Ehto(ehdot) (conditions)
Tässä on tarkempi kuvaus kustakin osiosta:
heat_template_version
Ilmaisee, että YAML-dokumentti on määritetyn version HOT-mallipohja (Heat Orchestration Template).
description
Mahdollistaa mallipohjan kuvauksen antamisen.
parameter_groups
Mahdollistaa sen määrittämisen, miten syöteparametrit ryhmitellään ja missä järjestyksessä parametrit annetaan.
parameters
Mahdollistaa sellaisten syöteparametrien määrittämisen, jotka on annettava mallipohjaa instansioitaessa.
resources
Sisältää mallipohjan yksittäisten resurssien määritykset.
outputs
Mahdollistaa sellaisten tulosteparametrien määrittämisen, jotka ovat saatavilla, kun mallipohja on instansioitu.
conditions
Sisältää lausekkeita, joita voidaan käyttää rajoittamaan, milloin resurssi luodaan tai milloin ominaisuus määritellään
Edistynyt esimerkki: luo mallipohja yhden tai useamman instanssin rakentamiseen
Suunnitelma on seuraava:
- Luo OpenStack Heatille parametritiedosto.
- Luo kaksi OpenStack Heat -mallipohjaa: yksi instanssien määrälle (OS::Heat::ResourceGroup) ja toinen käyttöönoton määritykselle.
- Luo Ansible-skripti käyttöönoton automatisoimiseksi.
Info
Seuraavien työkalujen on oltava asennettuina:
- Ansible
- python-openstackclient (pip install python-openstackclient)
- python-heatclient (pip install python-heatclient)
Ensin voit luoda heat_params.yaml-tiedoston, joka sisältää instanssillesi käytettäviä eri muuttujia. Käytä omia arvojasi:
Toiseksi luodaan kaksi OpenStack Heat -mallipohjaa. Ensimmäisessä käytämme aiempia esimerkkejämme pienin muutoksin. Kutsumme sitä nimellä heat_stack_vm.yaml:
heat_template_version: wallaby # As mentioned above, you can either use the date or the name
description: Simple template to deploy a single or several instance(s) in cPouta
parameters: # Since we created a heat_params.yaml, they will be retrieved from this file
ssh_key_name:
description: SSH key name
type: string
vm_name:
description: Name for the VM
type: string
vm_flavor:
description: Flavor for the VM
type: string
vm_image:
description: Image for the VM
type: string
vm_network:
description: Network for the VM
type: string
resources:
instance:
type: OS::Nova::Server
properties:
name: { get_param: vm_name } # This value will be retrieved from servers_group.yaml file. See after.
image: { get_param: vm_image }
flavor: { get_param: vm_flavor }
key_name: { get_param: ssh_key_name }
networks:
- network: { get_param: vm_network }
outputs:
network:
description: Output the networks of instance
value: { get_attr: [instance, networks] }
Kolmanneksi luomme tiedoston nimeltä servers_group.yaml, eli ResourceGroupin, jonka avulla voimme skaalata instanssejamme:
heat_template_version: wallaby
description: Resource Group to deploy one or several instance(s)
parameters: # Parameter retrieves from heat_params.yaml file.
count:
description: Number of resources
type: string
resources:
instances_group:
type: OS::Heat::ResourceGroup
properties:
count: { get_param: count }
resource_def:
type: heat_stack_vm.yaml # We defined our previous template.
properties:
vm_name: test-stack-%index% # Value %index% will be increased if more than one vm is created.
outputs:
print_out:
value: { get_attr: [instances_group, network] }
Ja lopuksi luomme Ansible-skriptin, joka rakentaa ja ottaa käyttöön virtuaalikoneemme. Kutsutaan sitä nimellä build-heat-stack.yaml:
- hosts: localhost
gather_facts: false
vars:
heat_environment_file: "heat_params.yaml" # Be sure that the file is located at the same level as build-heat-stack.yaml
tasks:
- name: Build a Heat stack VM
register: heat_stack
os_stack:
name: "{{ stack_name }}"
state: present
template: "servers_group.yaml" # Be sure that the file is located at the same level as build-heat-stack.yaml
environment:
- "{{ heat_environment_file }}"
- name: Print out network
debug:
var: heat_stack
Ota cPouta-projektisi käyttöön (source project_xxxxx.sh) ja suorita komento:
Jos kaikki meni hyvin, voit tarkistaa, että pino luotiin, joko cPoudan selainkäyttöliittymästä tai kirjoittamalla komennon: openstack stack list.
Voit myös tarkistaa luodut instanssit: openstack server list.
Jos poistat pinon, myös kaikki sen kautta luodut resurssit poistetaan.
Heat-ohjeet ja komentoviitteet
Lisätietoja saat OpenStackin Heat-wikistä. OpenStackin komentoriviasiakasohjelman täydellinen viite löytyy komentoriviviitteestä.
Tässä on esimerkki GitHubissamme yhden tai useamman nginxillä varustetun instanssin käyttöönotosta: Lue lisää GitHub-repositoriosta