Olemme käynnistäneet virallisen Terraform-toimittajan työskentelemään Selectelin kanssa. Tämän tuotteen avulla käyttäjät voivat toteuttaa resurssienhallinnan täysin Infrastructure-as-code -menetelmän avulla.
Palveluntarjoaja tukee tällä hetkellä palveluresurssien hallintaa "Virtuaalinen yksityinen pilvi" (jäljempänä VPC). Tulevaisuudessa aiomme lisätä resurssienhallinnan muihin Selectelin tarjoamiin palveluihin.
Kuten jo tiedät, VPC-palvelu on rakennettu OpenStackille. Koska OpenStack ei kuitenkaan tarjoa natiivityökaluja julkisen pilven palvelemiseen, toteutimme puuttuvat toiminnot joukossa lisäsovellusliittymiä, jotka yksinkertaistavat monimutkaisten yhdistelmäobjektien hallintaa ja tekevät työstä mukavampaa. Osa OpenStackissa saatavilla olevista toiminnoista on suljettu suoralta käytöltä, mutta ne ovat käytettävissä meidän API.
Selectel Terraform -toimittaja sisältää nyt mahdollisuuden hallita seuraavia VPC-resursseja:
hankkeet ja niiden kiintiöt;
käyttäjät, heidän roolinsa ja tunnuksensa;
julkiset aliverkot, mukaan lukien alueiden välinen ja VRRP;
ohjelmistolisenssit.
Palveluntarjoaja käyttää julkista Go-kirjastoamme työskennelläkseen VPC API:n kanssa. Sekä kirjasto että itse palveluntarjoaja ovat avoimen lähdekoodin, niiden kehitys tapahtuu Githubissa:
Voit hallita muita pilviresursseja, kuten virtuaalikoneita, levyjä, Kubernetes-klustereita, käyttämällä OpenStack Terraform -toimittajaa. Molempien palveluntarjoajien viralliset asiakirjat ovat saatavilla seuraavista linkeistä:
Aloittaaksesi sinun on asennettava Terraform (ohjeet ja linkit asennuspaketteihin löytyvät osoitteesta virallisilla verkkosivuilla).
Palveluntarjoaja tarvitsee toimiakseen Selectel API -avaimen, joka luodaan sisään tilin ohjauspaneelit.
Manifestit Selectelin kanssa työskentelyä varten luodaan Terraformilla tai käyttämällä valmiita esimerkkejä, jotka ovat saatavilla Github-arkistossamme: terraform-esimerkkejä.
Esimerkkejä sisältävä arkisto on jaettu kahteen hakemistoon:
moduulit, joka sisältää pieniä uudelleenkäytettäviä moduuleja, jotka ottavat syötteeksi joukon parametreja ja hallitsevat pientä joukkoa resursseja;
Esimerkit, joka sisältää esimerkkejä täydellisestä sarjasta toisiinsa yhdistettyjä moduuleja.
Kun olet asentanut Terraformin, luonut Selectel API -avaimen ja tutustunut esimerkkeihin, siirrytään käytännön esimerkkeihin.
Esimerkki palvelimen luomisesta paikallisella levyllä
Tiedostossa vars.tf kaikki parametrit, joita käytetään kutsuttaessa moduuleja, on kuvattu. Joillakin niistä on oletusarvot, esimerkiksi palvelin luodaan vyöhykkeelle ru-3a seuraavalla kokoonpanolla:
perustelu ignore_changes voit jättää huomioimatta määritteiden muutokset id virtuaalikoneen luomiseen käytetylle kuvalle. VPC-palvelussa useimmat julkiset kuvat päivittyvät automaattisesti kerran viikossa ja samalla niiden id myös muuttuu. Tämä johtuu OpenStack-komponentin - Glancen - erityispiirteistä, joissa kuvia pidetään muuttumattomina kokonaisuuksina.
Jos luot tai muokkaat olemassa olevaa palvelinta tai levyä, jolla on argumentti kuvan_tunnus käytetty id julkinen kuva, sitten kun kuva on päivitetty, Terraform-luettelon suorittaminen uudelleen luo palvelimen tai levyn uudelleen. Käyttämällä argumenttia ignore_changes avulla voit välttää tällaisen tilanteen.
Huomautus: argumentti ignore_changes ilmestyi Terraformissa aika kauan sitten: vedä #2525.
perustelu ignore_resize_confirmation tarvitaan paikallisen levyn, ytimien tai palvelimen muistin koon muuttamiseen. Tällaiset muutokset tehdään OpenStack Nova -komponentin kautta pyynnöstä kokoa. Oletus Nova pyynnöstä kokoa asettaa palvelimen tilaan verify_resize ja odottaa lisävahvistusta käyttäjältä. Tätä toimintaa voidaan kuitenkin muuttaa niin, että Nova ei odota käyttäjän lisätoimia.
Määritetty argumentti sallii Terraformin olla odottamatta tilaa verify_resize palvelimelle ja valmistaudu siihen, että palvelin on aktiivisessa tilassa parametrien muuttamisen jälkeen. Argumentti on saatavilla OpenStack Terraform -toimittajan versiosta 1.10.0: vedä #422.
Resurssien luominen
Huomioi ennen manifestien suorittamista, että esimerkissämme käynnistetään kaksi eri palveluntarjoajaa ja OpenStack-toimittaja riippuu Selectel-palveluntarjoajan resursseista, koska ilman käyttäjän luomista projektiin on mahdotonta hallita siihen kuuluvia objekteja. . Valitettavasti samasta syystä emme voi vain suorittaa komentoa terraformia sovelletaan esimerkkimme sisällä. Meidän on ensin tehtävä käyttää moduulia varten projekti_käyttäjän kanssa ja sen jälkeen kaikkeen muuhun.
Huomautus: Tätä ongelmaa ei ole vielä ratkaistu Terraformissa, voit seurata keskustelua Githubissa osoitteessa ongelma nro 2430 и ongelma nro 4149.
Komennon suorittamisen jälkeen Terraform näyttää, mitä resursseja se haluaa luoda ja pyytää vahvistusta:
Plan: 3 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Kun projekti, käyttäjä ja rooli on luotu, voit aloittaa jäljellä olevien resurssien luomisen:
Voit työskennellä luodun virtuaalikoneen kanssa SSH:n kautta käyttämällä määritettyä IP-osoitetta.
Resurssien muokkaaminen
Sen lisäksi, että resursseja luodaan Terraformin kautta, niitä voidaan myös muokata.
Lisätään esimerkiksi palvelimemme ytimien ja muistin määrää muuttamalla parametrien arvoja server_vcpus и server_ram_mb tiedostossa examples/vpc/server_local_root_disk/main.tf:
Meidän esimerkkivarastot Voit myös nähdä luettelot virtuaalikoneiden luomisesta verkkoasemilla.
Esimerkki Kubernetes-klusterin luomisesta
Ennen kuin siirrymme seuraavaan esimerkkiin, puhdistamme aiemmin luomamme resurssit. Voit tehdä tämän projektin juurella terraform-examples/examples/vpc/server_local_root_disk Suoritetaan komento OpenStack-objektien poistamiseksi:
Molemmissa tapauksissa sinun on vahvistettava kaikkien objektien poistaminen:
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
Tämä esimerkki luo projektin, käyttäjän, jolla on rooli projektissa, ja nostaa yhden Kubernetes-klusterin. Tiedostossa vars.tf näet oletusarvot, kuten solmujen lukumäärän, niiden ominaisuudet, Kubernetes-version jne.
Ensimmäisen esimerkin kaltaisten resurssien luomiseksi aloitamme ensin moduulien alustamisen ja moduuliresurssien luomisen projekti_käyttäjän kanssaja sitten luodaan kaikki muu:
Siirrämme Kubernetes-klusterien luomisen ja hallinnan OpenStack Magnum -komponentin kautta. Saat lisätietoja klusterin kanssa työskentelystä yhdessä meidän aikaisemmat artikkelit, samoin kuin tietopohja.
Klusteria valmisteltaessa luodaan levyt ja virtuaalikoneet ja asennetaan kaikki tarvittavat komponentit. Valmistelu kestää noin 4 minuuttia, jonka aikana Terraform näyttää viestejä, kuten:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Kun asennus on valmis, Terraform ilmoittaa, että klusteri on valmis ja näyttää sen tunnuksen:
Luodun Kubernetes-klusterin hallinta apuohjelman kautta kubectl sinun on hankittava klusterin käyttöoikeustiedosto. Voit tehdä tämän siirtymällä Terraformin kautta luotuun projektiin tilisi projektiluettelosta:
Seuraavaksi tykkää linkistä xxxxxx.selvpc.rujoka näkyy projektin nimen alla:
Käytä sisäänkirjautumistietojen saamiseksi Terraformin kautta luomaasi käyttäjätunnusta ja salasanaa. Jos et ole pettänyt vars.tf tai main.tf esimerkissämme käyttäjällä on nimi tf_user. Salasanana on käytettävä muuttujan arvoa TF_VAR_user_password, joka määritettiin käynnistyksen yhteydessä terraformia sovelletaan aikaisemmin.
Projektin sisällä sinun on siirryttävä välilehteen Kubernetes:
Tässä sijaitsee Terraformin kautta luotu klusteri. Lataa tiedosto kohteelle kubectl "Pääsy"-välilehdellä voit:
Asennusohjeet ovat samalla välilehdellä. kubectl ja ladatun käytön config.yaml.
Käynnistyksen jälkeen kubectl ja ympäristömuuttujan asettaminen KUBECONFIG voit käyttää Kubernetes:
Kun solmujen määrä muuttuu, klusteri pysyy käytettävissä. Kun olet lisännyt solmun Terraformin kautta, voit käyttää sitä ilman lisämäärityksiä:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
tf-cluster-rz6nggvs4va7-master-0 Ready,SchedulingDisabled master 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-0 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-1 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-2 Ready <none> 3m v1.12.4
Johtopäätös
Tässä artikkelissa tutustuimme tärkeimpiin tapoihin työskennellä "Virtuaalinen yksityinen pilvi" Terraformin kautta. Olemme iloisia, jos käytät virallista Terraform-toimittaja Selecteliä ja annat palautetta.
Kaikki Selectel Terraform -palveluntarjoajalta löydetyt viat voidaan ilmoittaa kautta Github-ongelmat.