Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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.

Template selection

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ä:

openstack stack create -t /path/to/my/stack.yml my-heat-stack

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:

parameter_defaults:
  ssh_key_name:
  vm_flavor:
  vm_image:
  vm_network:
  count:

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:

ansible-playbook -e stack_name="test-stack" build-heat-stack.yaml`

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

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta