Teksti suurus

Reavahe

Kontrastsus

Kommenteeri

Riigipilve IaaSi haldus Ansible’iga

Levinuimaks virtuaalmasinate loomise viisiks Riigipilve IaaS teenuses on kasutada https://minu.riigipilv.ee veebipõhist iseteeninduskeskkonda. Seda aga ainult niikaua, kuni virtuaalmasinaid pole väga palju. Hetkest, mil nende arv kasvab kümnete ning sadadeni, tekib reaalne vajadus seda protsessi automatiseerida. Antud juhendis vaatamegi, kuidas seda Ansible abil läbi Riigipilve API liidese teha.

Mis on IaaS?

Infrastruktuur kui teenus (IaaS) võimaldab kasutada virtualiseeritud riistvara arvutusressursse – protsessorid (vCPU), mälu (RAM) ja salvestusmahtu (Storage) teenusena. IaaS teenuse kasutamine võimaldab kliendil vabaneda oma riistvara ja hüperviisori haldamisest ning keskenduda tarkvaralistele lahendustele alates operatsioonisüsteemist. Riigipilv pakub oma klientidele Iseteenindusportaali ja API kaudu virtuaalmasinate provisioneerimise võimalust.

Mis on Ansible?

Ansible (https://www.ansible.com/) on Chefi, Puppeti ja Salti laadne tarkvarapaigalduse ja konfiguratsiooni automatiseerimiseks ning paljude masinate üheaegseks halduseks mõeldud tarkvara. Selle üheks tugevuseks on lihtsus, kogu infovahetus toimub üle SSH ning lihtne YAML süntaks lubab Bash skripte ja how-to laadseid õpetusi kiirelt Ansible “keelde” portida. Ansible kasutuselevõtuks tuleb paigaldada lokaalsesse arvutisse Ansible klient. Hallatavatesse masinatesse klienti ennast tarvis pole, piisab vaid SSH võtmest.

Mis on Projekt, VPC ja Offering?

Projekt Riigipilve iseteeninduses on loogiline konteiner mistahes Riigipilve teenuste ja nende ressursside grupeerimiseks, seda nii arvelduse kui ka ligipääsuõiguste vaates. VPC on Riigipilve IaaS teenuse CPU/RAM/Storage ressurssipakett, mis tagab antud ressurside isoleerituse. VPC ressurssipaketti on võimalik tellida nii Tallinn1 kui ka Harku1 andmekeskusest. Projekt võib sisaldada ühte või mitut VPC-d, mida saab kasutada virtuaalmasinate tekitamiseks. VPC tellimuse tarne käigus seadistab süsteem automaatselt virtuaalmasinate loomiseks allika (Offering), mille nimeks saab “Virtual machine in <vpc_name>”. 

Antud näites on loodud projekt “InfosysteemA”, kuhu on Tallinn1 andmekeskusest tellitud VPC ressurssipakett nimega “vpc01” ning süsteemi poolt on virtuaalmasinate ressurssi allikaks seadistatud “Virtual machine in vpc01” (Offering).

Demo virtuaalmasina automaatne paigaldus

Ansible kasutab kõigi asjade tegemiseks mooduleid. Nende abil paigaldab ta tarkvara, kopeerib faile jne. Mooduleid on võimalik käivitada koos parameetritega kas käsurealt (nn ad-hoc meetod) või siis playbookiks kutsutavate YAML süntaksiga failidesse koondatuna.

Selleks, et Ansible suudaks Riigipilve API-ga suhelda, on vaja paigaldada selleks vastav moodul.

Mooduli koodirepo asub koos juhendiga aadressil: https://github.com/opennode/ansible-waldur-module ning selle paigaldamiseks oma Linux töökeskkonda on kõige mõistlikum kasutada Pythoni PIP utiliiti. 

pip install ansible-waldur-module 

Järgnevalt on meil vaja tekitada Ansible playbook fail. Selleks loome faili add-rp-instance.yml ning lisame sinna allpool oleva koodibloki:

# -*- coding: utf-8; indent-tabs-mode: nil; tab-width: 2; -*-

  1.  

---
- name: Setup RP instance
  become: no
  Gather_facts: false
  hosts: localhost
  tasks:
  - name: add instance
    waldur_marketplace_os_instance:
      access_token: "{{ access_token }}"
      api_url: "{{ api_url }}"
      flavor: g1.medium1
      image: Ubuntu 20.04 x86_64
      name: "{{ instance_name }}"
      offering: Virtual machine in vpc01
      project: InfosysteemA
      ssh_key: ssh1.pub
      subnet: vpc01-sub-net
      system_volume_size: 40
      system_volume_type: ssd
      security_groups:
        - default

 Failis kasutatavate muutujate selgitus 

●     name: Setup RP instance - Ansible playbooki nimi

●     become: no - Täiendavaid privileege ei omistata

●     Gather_facts: false - Hosti kohta kus playbooki käivitatakse täiendavat infot ei koguta

●     hosts: localhost - Ansible playbook käivitatakse vastu lokaalset masinat

●     tasks: Playbookis sooritatavad tööd

●     name: add instance - Esimese Ansible töö (ehk taski) nimetus

●     waldur_marketplace_os_instance: - Paigaldatud Riigipilve API moodul

●     access_token: "{{ access_token }}”  - Riigipilve haldusliidese API ligipääsu token, (antakse ette käsurealt parameetrina). Näeb seda Riigipilve isteeninduskeskkonnas peale sisselogimist oma kasutajaprofiili vaates "Manage" alamjaotuses "Current API token" alt.

●     api_url: "{{ api_url }}"  - Riigipilve haldusliidese API aadress (antakse ette käsurealt parameetrina)

●     flavor: g1.medium1 - Virtuaalmasina ressursiprofiil (antud näites 1 vCPU, 2GB RAM)

●     image: Ubuntu 20.04 x86_64 - Paigaldatava operatsioonisüsteemi image (kataloogist)

●     name: "{{ instance_name }}" - Loodava virtuaalmasina nimi

●     offering: Virtual machine in vpc01- Virtuaalmasinate ressurssiallikas, peale VPC ostmist näeb seda vastava projekti alt ning esineb kujul "Virtual machine in <vpc_name>"

●     project: InfosysteemA - Projekti nimi

●     ssh_key: ssh1.pub - SSH avaliku võtme nimi mis lisatakse loodavale virtuaalmasinale automaatselt. Mis nimega on võti hetkel seadistatud, näeb Riigipilve iseteeninduses peale sisselogimist oma kasutajaprofiili vaates “SSH Keys” alamjaotuse alt.

●     subnet: vpc01-sub-net - VPC võrk millega virtuaalmasin seotakse. Näeb seda iseteeninduskeskonnas "Resources" -> "Private clouds" -> “Networks” alt.

●     system_volume_size: 40 - Virtuaalmasina süsteemiketta suurus gigabaitides

●     system_volume_type: ssd - Virtuaalmasina süsteemiketta tüüp (võimalik on valida kas tavalist tüüpi kõvaketas ehk "standard" või siis "ssd")

●     Security_groups: - Virtuaalmasinale rakendatavate tulemüürireeglite loend(id)

●     Default - Vaikimisi tulemüürireeglite loend, mis lubab kõik võrguühendused virtuaalmasinast välja (egress) ning kõik sisenevad (ehk ingress) võrguühendused samas subnetis asuvatest hostidest 

Loodud playbooki käivitamiseks on vaja seadistada ansible-playbooki jaoks pythoni interpretaator ning moodulite kaust kus PIP-i abil paigaldatud Riigipilve API moodul asub. 

Seda mis pythoni versioon on kasutusel näeb käsuga  

python --version 

Samuti määrame --extra-vars lisaparameetriga access_token-i jaoks oma kasutajaga seotud API tokeni, api_url-i ning loodava virtuaalmasina nime ehk instance_name

ansible-playbook -e ansible_python_interpreter=/usr/bin/python2.7 \

-M /usr/lib/python2.7/site-packages/ \

--extra-vars "api_url=https://api.riigipilv.ee/api \

access_token=ACCESS_TOKEN \

instance_name=test-vm01" \

add-rp-instance.yml 

Käsu eduka käivitamise järel peaks nägema järgnevat väljundit:

Ning Riigipilve iseteeninduse kaudu saab näha värskelt tekkinud virtuaalmasinat nimega test-vm01:

Kogu juhend on alla laetav SIIT. Kui Teil tekkis seoses ülalkirjutatuga küsimusi, kirjutage palun klient@riks.ee ja aitame Teid.


Lisa kommentaar

Email again:
Vaegnägijatele