Riigipilve IaaSi haldus Ansible’iga
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; -*-
---
- 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.