A ti ṣe ifilọlẹ olupese Terraform osise kan lati ṣiṣẹ pẹlu Selectel. Ọja yii ngbanilaaye awọn olumulo lati ni kikun imuse iṣakoso awọn orisun nipasẹ ilana ilana Amayederun-bi-koodu.
Olupese n ṣe atilẹyin lọwọlọwọ iṣakoso awọn orisun iṣẹ "Awọsanma ikọkọ foju" (lẹhinna tọka si bi VPC). Ni ọjọ iwaju, a gbero lati ṣafikun iṣakoso awọn orisun fun awọn iṣẹ miiran ti Selectel pese.
Bi o ti mọ tẹlẹ, iṣẹ VPC ti wa ni itumọ ti lori OpenStack. Bibẹẹkọ, nitori otitọ pe OpenStack ko pese awọn irinṣẹ abinibi fun sisin awọsanma ti gbogbo eniyan, a ṣe imuse iṣẹ ṣiṣe ti o padanu ni akojọpọ awọn API afikun ti o rọrun iṣakoso ti awọn nkan idapọpọ eka ati jẹ ki iṣẹ naa rọrun diẹ sii. Diẹ ninu awọn iṣẹ ṣiṣe ti o wa ni OpenStack ti wa ni pipade lati lilo taara, ṣugbọn o wa nipasẹ API wa.
Olupese Selectel Terraform ni bayi pẹlu agbara lati ṣakoso awọn orisun VPC wọnyi:
ise agbese ati awọn ipin wọn;
awọn olumulo, wọn ipa ati àmi;
awọn subnets ti gbogbo eniyan, pẹlu agbekọja-agbegbe ati VRRP;
awọn iwe-aṣẹ software.
Olupese naa nlo ile-ikawe Go ti gbogbo eniyan lati ṣiṣẹ pẹlu API VPC. Mejeeji ile-ikawe ati olupese funrararẹ jẹ orisun ṣiṣi, idagbasoke wọn ni a ṣe lori Github:
Lati ṣakoso awọn orisun awọsanma miiran, gẹgẹbi awọn ẹrọ foju, awọn disiki, awọn iṣupọ Kubernetes, o le lo olupese OpenStack Terraform. Awọn iwe aṣẹ osise fun awọn olupese mejeeji wa ni awọn ọna asopọ wọnyi:
Ninu faili vars.tf gbogbo awọn paramita ti yoo ṣee lo nigbati pipe awọn module ti wa ni apejuwe. Diẹ ninu wọn ni awọn iye aiyipada, fun apẹẹrẹ, olupin naa yoo ṣẹda ni agbegbe naa ru-3a pẹlu iṣeto ni atẹle:
Ariyanjiyan foju_ayipada faye gba o lati foju awọn iyipada abuda id fun aworan ti a lo lati ṣẹda ẹrọ foju. Ninu iṣẹ VPC, ọpọlọpọ awọn aworan ti gbogbo eniyan ni imudojuiwọn laifọwọyi lẹẹkan ni ọsẹ kan ati ni akoko kanna wọn id tun yipada. Eyi jẹ nitori awọn iyasọtọ ti paati OpenStack - Glance, ninu eyiti awọn aworan jẹ awọn nkan ti ko yipada.
Ti o ba n ṣẹda tabi ṣatunṣe olupin ti o wa tẹlẹ tabi disk ti o ni bi ariyanjiyan aworan_id o ti lo id aworan ti gbogbo eniyan, lẹhinna lẹhin ti aworan naa ti ni imudojuiwọn, ṣiṣiṣẹ ifihan Terraform lẹẹkansi yoo tun ṣe olupin tabi disk naa. Lilo ohun ariyanjiyan foju_ayipada faye gba o lati yago fun iru ipo.
Akiyesi: ariyanjiyan foju_ayipada han ni Terraform ni igba pipẹ sẹhin: fa # 2525.
Ariyanjiyan foju_resize_confirmation nilo lati ṣe atunṣe iwọn disk agbegbe, awọn ohun kohun, tabi iranti olupin ni aṣeyọri. Iru awọn iyipada bẹẹ ni a ṣe nipasẹ paati OpenStack Nova nipa lilo ibeere kan resize. Aiyipada Nova lẹhin ìbéèrè resize fi olupin sinu ipo verify_resize ati ki o duro fun afikun ìmúdájú lati olumulo. Sibẹsibẹ, ihuwasi yii le yipada ki Nova ko duro fun awọn iṣe afikun lati ọdọ olumulo.
Awọn ariyanjiyan pato gba Terraform laaye lati ma duro fun ipo naa verify_resize fun olupin naa ki o mura silẹ fun olupin lati wa ni ipo ti nṣiṣe lọwọ lẹhin iyipada awọn aye rẹ. Ariyanjiyan naa wa lati ẹya 1.10.0 ti olupese OpenStack Terraform: fa # 422.
Ṣiṣẹda Resources
Ṣaaju ṣiṣe awọn ifihan, jọwọ ṣe akiyesi pe ninu apẹẹrẹ wa, awọn olupese oriṣiriṣi meji ti ṣe ifilọlẹ, ati olupese OpenStack da lori awọn orisun ti olupese Selectel, nitori laisi ṣiṣẹda olumulo kan ninu iṣẹ akanṣe, ko ṣee ṣe lati ṣakoso awọn nkan ti o jẹ tirẹ. . Laanu, fun idi kanna a ko le kan ṣiṣe aṣẹ naa terraform waye inu apẹẹrẹ wa. A nilo akọkọ lati ṣe waye fun module project_with_user ati lẹhin naa fun ohun gbogbo miiran.
Lẹhin ṣiṣe aṣẹ naa, Terraform yoo ṣafihan kini awọn orisun ti o fẹ ṣẹda ati beere fun ijẹrisi:
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
Ni kete ti iṣẹ akanṣe naa, olumulo ati ipa ti ṣẹda, o le bẹrẹ ṣiṣẹda awọn orisun to ku:
O le ṣiṣẹ pẹlu ẹrọ foju ti o ṣẹda nipasẹ SSH nipa lilo IP ti a ti sọ tẹlẹ.
Nsatunkọ awọn Resources
Ni afikun si ṣiṣẹda awọn orisun nipasẹ Terraform, wọn tun le ṣe atunṣe.
Fun apẹẹrẹ, jẹ ki a pọ si nọmba awọn ohun kohun ati iranti fun olupin wa nipa yiyipada awọn iye fun awọn paramita server_vcpus и server_ram_mb ninu faili apeere/vpc/server_local_root_disk/main.tf:
Ninu wa awọn ibi ipamọ apẹẹrẹ O tun le wo awọn ifihan fun ṣiṣẹda awọn ẹrọ foju pẹlu awọn awakọ nẹtiwọọki.
Apẹẹrẹ ti ṣiṣẹda iṣupọ Kubernetes
Ṣaaju ki a to lọ si apẹẹrẹ atẹle, a yoo nu awọn orisun ti a ṣẹda tẹlẹ. Lati ṣe eyi ni root ti ise agbese terraform-apeere/apeere/vpc/server_local_root_disk Jẹ ki a ṣiṣẹ aṣẹ lati pa awọn nkan OpenStack rẹ:
Ni awọn ọran mejeeji, iwọ yoo nilo lati jẹrisi piparẹ gbogbo awọn nkan:
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
Apeere yii ṣẹda iṣẹ akanṣe kan, olumulo ti o ni ipa ninu iṣẹ akanṣe, o si gbe iṣupọ Kubernetes kan. Ninu faili vars.tf o le wo awọn iye aiyipada, gẹgẹbi nọmba awọn apa, awọn abuda wọn, ẹya Kubernetes, ati bẹbẹ lọ.
Lati ṣẹda awọn orisun ti o jọra si apẹẹrẹ akọkọ, ni akọkọ gbogbo a yoo bẹrẹ ipilẹṣẹ awọn modulu ati ṣiṣẹda awọn orisun module project_with_userati lẹhinna ṣẹda ohun gbogbo miiran:
A yoo gbe ẹda ati iṣakoso ti awọn iṣupọ Kubernetes nipasẹ paati OpenStack Magnum. O le wa diẹ sii nipa bi o ṣe le ṣiṣẹ pẹlu iṣupọ ninu ọkan ninu wa ti tẹlẹ ìwébi daradara bi ninu ipilẹ imo.
Nigbati o ba ngbaradi iṣupọ, awọn disiki ati awọn ẹrọ foju yoo ṣẹda ati gbogbo awọn paati pataki yoo fi sii. Igbaradi gba to iṣẹju 4, lakoko eyiti Terraform yoo ṣe afihan awọn ifiranṣẹ bii:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Ni kete ti fifi sori ẹrọ ti pari, Terraform yoo fihan pe iṣupọ ti ṣetan ati ṣafihan ID rẹ:
Lati ṣakoso iṣupọ Kubernetes ti o ṣẹda nipasẹ ohun elo naa kubectl o nilo lati gba faili wiwọle iṣupọ. Lati ṣe eyi, lọ si iṣẹ akanṣe ti a ṣẹda nipasẹ Terraform ninu atokọ awọn iṣẹ akanṣe ninu akọọlẹ rẹ:
Nigbamii, tẹle ọna asopọ bi xxxxxx.selvpc.rueyi ti o han ni isalẹ orukọ ise agbese:
Fun alaye wiwọle, lo orukọ olumulo ati ọrọ igbaniwọle ti o ṣẹda nipasẹ Terraform. Ti o ko ba ti iyanjẹ vars.tf tabi akọkọ.tf fun apẹẹrẹ wa, olumulo yoo ni orukọ tf_olumulo. O gbọdọ lo iye ti oniyipada bi ọrọ igbaniwọle Ọrọigbaniwọle TF_VAR_olumulo, eyi ti a ti pato ni ibẹrẹ terraform waye sẹyìn.
Ninu iṣẹ akanṣe o nilo lati lọ si taabu Kubernetes:
Eyi ni ibi ti iṣupọ ti a ṣẹda nipasẹ Terraform wa. Ṣe igbasilẹ faili fun kubectl o le lori taabu "Wiwọle":
Awọn ilana fifi sori ẹrọ wa lori taabu kanna. kubectl ati lilo awọn gbaa lati ayelujara konfigi.yaml.
Lẹhin ifilọlẹ kubectl ati ṣeto iyipada ayika KUBECONFIG O le lo Kubernetes:
Nigbati nọmba awọn apa ba yipada, iṣupọ yoo wa. Lẹhin fifi ipade kan kun nipasẹ Terraform, o le lo laisi iṣeto ni afikun:
$ 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
ipari
Ninu nkan yii a ti mọ awọn ọna akọkọ lati ṣiṣẹ pẹlu "Awọsanma ikọkọ foju" nipasẹ Terraform. A yoo ni idunnu ti o ba lo olupese iṣẹ Selectel Terraform ati pese esi.
Eyikeyi awọn idun ti a rii ni olupese Selectel Terraform le jẹ ijabọ nipasẹ Awọn ọrọ Github.