Terraform provisor Selectel

Terraform provisor Selectel

Provisorem officialem Terraformi ad opus cum Selectel immissi sumus. Productum hoc concedit utentes ad plene efficiendam resource administrationem per methodologiam infrastructuram-sicut-code.

Provisor currently sustentat ministerium resource procuratio "Nubem privatam lorem ipsum" (infra ut VPC). In posterum instituimus ut subsidia procuratio adderet aliis officiis ab Selectel provisum.

Ut iam nostis, ministerium VPC in OpenStack aedificatum est. Nihilominus, ob id quod OpenStack instrumenta indigena non praebent ad serviendum publicae nubes, in APIs addito statuto functionis carens implevimus, qui simpliciorem administrationem rerum compositarum complexorum et opus commodiorem redderet. Pars functionis quae in OpenStack praesto est ab usu directo clauditur, sed per nostrum API.

Provisor Selectel Terraform nunc includit facultatem regendi facultates sequentes VPC:

  • inceptis et quoius;
  • utentes, muneribus et signis;
  • subnets publicos, inter cruces regionales et VRRP;
  • programmata licentiae.

Provisor nostro publico utitur Ite bibliotheca ad operandum cum VPC API. Utriusque bibliotheca et provisor ipsa aperta sunt, quorum progressio in Github exercetur;

Ad alias facultates nubeculas regendas, ut machinae virtuales, orbis, racemi Kubernetes, provisor Terraform OpenStack uti potes. Documenta officialis pro utroque provisoribus praesto sunt ad nexus sequentes:

questus Coepi

Ut incipias, Terraform instituere debes (instructiones et nexus ad sarcinas institutiones inveniri possunt rutrum).

Ad operari, provisor clavem API selectel requirit, quae in creatur propter imperium panels.

Manifestat ad operandum cum Selectel utendo Terraformi creantur vel utendo exemplorum praeparatorum quae in promptuario nostro Github praesto sunt: terraform-exempla.

Repositorium cum exemplis in duos directoria dividitur:

  • Modulescontinens parvas modulorum reusable, qui parametris inputant copiam et parvam copiarum copiam administrant;
  • exemplacontinens exempla integrae modulorum inter se connexorum.

Postquam Terraforme inauguratis, Selectel API clavem creans et exemplis te cognoscens, ad exempla practica transeamus.

Exemplum de servo creando cum loci orbis

Intueamur exemplum faciendi consilium, utentis cum munere et machina virtuali cum disci locali: terraform-exempla/exempla/vpc/server_local_root_disk.

In file vars.tf parametri omnes adhibebuntur cum moduli vocandi describuntur. Aliqui eorum valores default habent, verbi gratia, server in zona creabitur ru-3a cum hoc schemate;

variable "server_vcpus" {
default = 4
}

variable "server_ram_mb" {
default = 8192
}

variable "server_root_disk_gb" {
default = 8
}

variable "server_image_name" {
default = "Ubuntu 18.04 LTS 64-bit"
}

In file main.tf Provisor Selectel initialized est:

provider "selectel" {
token    = "${var.sel_token}"
}

Hic fasciculus etiam valorem defaltam continet pro clavis SSH qui in calculonis instituentur:

module "server_local_root_disk" {
...
server_ssh_key      = "${file("~/.ssh/id_rsa.pub")}"
}

Si opus est, aliam clavem publicam denotare potes. Clavis ut lima semita specificari non debet, valorem etiam ut chorda addere potes.

Praeterea in hoc fasciculo modulorum explicantur project_with_user ΠΈ server_local_root_diskquae necessarias facultates administrant.

Hos modulos accuratius inspiciamus.

Creando incepto et user cum partes

Primus modulus inceptum creat et usorem cum parte in eo consilio: terraform-exempla/modules/vpc/project_with_user.

Usor creatus poterit inire ad OpenStack et suas facultates administrare. Modulus simplex est et tres tantum res administrat;

  • selectel_vpc_project_v2;
  • selectel_vpc_user_v2;
  • selectel_vpc_role_v2.

Creando virtualis server cum loci orbis

Secundus modulus tractat de obiectis OpenStack administrandis, quae necessariae sunt servo creare cum orbis locali.

Observa aliquas rationes quae in hoc modulo specificatae sunt pro subsidio openstack_compute_instance_v2:

resource "openstack_compute_instance_v2" "instance_1" {
  ...

  lifecycle {
    ignore_changes = ["image_id"]
  }

  vendor_options {
    ignore_resize_confirmation = true
  }
}

ratio ignore_changes sino vos ignorare attributum mutationes id imago enim ad virtualem machinam creare solebat. In VPC servitio, plurimae imagines publicae semel in hebdomada eodemque tempore statim renovantur id also changes. Haec ob proprietates componentis OpenStack - Glanci, in quibus imagines res immutabiles considerantur.

Si creando vel modificando existente servo vel orbis quod habet argumentum image_id used id imago publica, deinde postquam imago illa renovata est, Terraformi manifesta cursus denuo ministri seu orbis recreabit. Per rationem ignore_changes sino te talem casum vitare.

Nota: argumentum ignore_changes in Terraform satis olim apparuit; traho#2525.

ratio ignore_resize_confirmation opus est ut bene resize localis orbis, coros, vel servo memoria. Tales mutationes fiunt per OpenStack Novae componentis utendo petitione resize. Default Nova post petitionem resize ponit servo in statum Verificandum_resize et observat additam confirmationem ex usuario. Hoc tamen mores mutari possunt ut Novae actiones ab usuario additas non exspectant.

Certa ratio permittit Terraform non expectare ad statum Verificandum_resize pro servo et praeparetur servo ut sit in activo statu mutato parametro. Argumentum praesto est ex versione 1.10.0 ex provisore OpenStack Terraformi: traho#422.

Creando Resources

Priusquam manifestas curramus, nota quod in exemplo nostro duo diversa provisores deducuntur, et provisor OpenStack dependet ab opibus provisoris provisoris, quia sine usore in project creando, impossibile est res ad se pertinentes administrare. . Infeliciter, eadem ratione non possumus tantum imperium currere terraform apply intra nostrum exemplum. Primum opus est facere adhibere ad modulus project_with_user et postea in omnibus rebus.

Nota: Hic exitus in Terraform nondum certus est, disceptationem de Github at . sequi potes issue#2430 ΠΈ issue#4149.

Ad facultates creandas, vade ad indicem terraform-exempla/exempla/vpc/server_local_root_diskcontenta esse oportet;

$ ls
README.md	   main.tf		vars.tf

Modulorum usus nos initialize imperium:

$ terraform init

Output ostendit Terraform downloads recentissimas versiones provisoribus utitur et cohibet omnes modulos in exemplo descriptos.

Primum applicare modulus project_with_user. Hoc manually valores transeuntes postulat pro variabilibus quae non sunt positae:

  • sel_account cum Selectel propter numerum;
  • sel_token with your key for Selectel API;
  • user_password cum password pro user OpenStack.

Valores pro duabus primis variabilibus sumi debent imperium panels.

Ad ultimum variabile, cum qualibet tessera potes ascendere.

Ut modulus debes reponere in values SEL_ACCOUNT, SEL_TOKEN ΠΈ USER_PASSWORD currit mandatum;

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

Post mandatum currens, Terraformi ostendet quantas facultates creare et confirmationem petere velit;

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

Postquam propositi, user et partes creatae sunt, inire potes reliquas facultates creare;

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Cum facultates creant, attendere ad output Terraform cum IP inscriptione externa ubi minister creatus pervium erit:

module.server_local_root_disk.openstack_networking_floatingip_associate_v2.association_1: Creating...
  floating_ip: "" => "x.x.x.x"

Operari potes cum machina virtuali creata per SSH utendo determinato IP.

Recensere Resources

Praeter opes creandas per Terraformam, etiam mutari possunt.

Exempli gratia: numerum metretarum augeamus et memoriam servo nostro mutando valores parametri server_vcpus ΠΈ server_ram_mb in file exempla/vpc/server_local_root_disk/main.tf:

-  server_vcpus        = "${var.server_vcpus}"
-  server_ram_mb       = "${var.server_ram_mb}"
+  server_vcpus        = 8
+  server_ram_mb       = 10240

Post hoc reprimimus quas mutationes inducemus ad hoc utens mandato sequenti:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform plan

Quam ob rem terraform resource mutatio facta est openstack_compute_instance_v2 ΠΈ openstack_compute_flavor_v2.

Quaeso nota hanc rebolationem machinae virtualis creatae sequetur.

Ad novam conformationem virtualem machinae applicandam, utere imperio terraform applyquam iam ante diximus.

Omnia obiecta creata ostendentur in VPC imperium panels:

Terraform provisor Selectel

In nostro exemplum repositoria Etiam manifestas videre potes ad creandas machinas virtuales cum retis agitet.

Exemplum creandi Kubernetes botri

Priusquam ad exemplum proximum progrediamur, opes prius creatas mundabimus. Ad hoc facere in radice project terraform-exempla/exempla/vpc/server_local_root_disk Curramus mandatum delere OpenStack obiecti:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.server_local_root_disk

Deinde currunt mandatum ut VPC API obiecta Selectel purgare:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.project_with_user

In utroque casu deletionem omnium rerum confirmare debes;

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

Hoc exemplum est in indicem terraform-exempla/exempla/vpc/kubernetes_cluster.

Hoc exemplum projectum creat, a user cum munere in incepto, et unum botrum Kubernetes movet. In file vars.tf videre potes valores default, ut numero nodis, earum notarum, versionis Kubernetes, etc.

Facere opes primo exemplo similes, primo incipiemus modulos initializing et modulos creandi project_with_userac deinde omnia creans;

$ terraform init

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Creationem et administrationem Botri Kubernetes per OpenStack Magnum componentes transferemus. Plures invenire potes quomodo operari cum botro in uno ex nostris articulisTum scientia turpia.

Botrus, orbis, et machinae virtuales cum parant, et omnia necessaria elementa instituentur. Praeparatio circiter 4 minuta accipit, per quae tempus Terraformi epistulas similes ostendet:

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)

Cum institutionem completam sit, Terraform indicabit botrum paratum esse et ID eius ostendere;

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Creation complete after 4m20s (ID: 3c8...)

Apply complete! Resources: 6 added, 0 changed, 0 destroyed.

Botrus per utilitatem Kubernetes creatos administrare kubectl opus est ut botrum accessum lima. Ad hoc fac, vade ad consilium per Terraform creatum in indice consiliorum in ratione vestra:

Terraform provisor Selectel

Proxima, nexum sequere simile xxxxxx.selvpc.ruquod apparet sub nomine project:

Terraform provisor Selectel

Pro informatione login, usuario et tessera quae per Terraform creasti. Si non circumvenit vars.tf aut main.tf pro exemplo nostro nomen usoris habebit tf_user. Valorem variabilis in password utendum est TF_VAR_user_password, quod datum est a satus " terraform apply mane.

Intra in project opus ad tab Kubernetes:

Terraform provisor Selectel

Hoc est, ubi botrus creatus est per Terraform. Download file for kubectl potes in "Access" tab:

Terraform provisor Selectel

Instructiones eiusdem tab. kubectl ac uti downloaded config.yaml.

Post launch kubectl ac elit varius KUBECONFIG uti possis Kubernetes:

$ kubectl get pods --all-namespaces

NAMESPACE        NAME                                    READY  STATUS  RESTARTS AGE
kube-system   coredns-9578f5c87-g6bjf                      1/1   Running   0 8m
kube-system   coredns-9578f5c87-rvkgd                     1/1   Running   0 6m
kube-system   heapster-866fcbc879-b6998                 1/1   Running   0 8m
kube-system   kube-dns-autoscaler-689688988f-8cxhf             1/1   Running   0 8m
kube-system   kubernetes-dashboard-7bdb5d4cd7-jcjq9          1/1   Running   0 8m
kube-system   monitoring-grafana-84c97bb64d-tc64b               1/1   Running   0 8m
kube-system   monitoring-influxdb-7c8ccc75c6-dzk5f                1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-0 1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-1 1/1   Running   0 8m
kube-system   openstack-cloud-controller-manager-8vrmp        1/1   Running   3 8m
prometeus-monitoring   grafana-76bcb7ffb8-4tm7t       1/1   Running   0 8m
prometeus-monitoring   prometheus-75cdd77c5c-w29gb           1/1   Running   0 8m

Numerus nodis botri per Terraform facile mutari potest.
In file main.tf hoc valore est certa:

cluster_node_count = "${var.cluster_node_count}"

Hoc valore substituitur vars.tf:

variable "cluster_node_count" {
default = 2
}

Mutare potes aut valorem default in vars.tfVel specificare valorem directe in main.tf:

-  cluster_node_count = "${var.cluster_node_count}"
+  cluster_node_count = 3

Mutationes adhibere, sicut in casu primi exempli, utere imperio terraform apply:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Cum numerus nodi mutatur, botrus praesto remanebit. His nodi additis per Terraformem, ea uti potes sine configuratione addita;

$ 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

conclusio,

In hoc articulo cognovimus praecipuas vias ad operandum "Nubem privatam lorem ipsum" via Terraform. Laeti erimus si provisore Selectel Terraform officiali uteris et feedback praebeas.

Aliqua cimices inventa in provisore Selectel Terraformi nuntiari potest via Exitus Github.

Source: www.habr.com