Kaiwhakarato Terraform Selectel

Kaiwhakarato Terraform Selectel

Kua whakarewahia e matou he kaiwhakarato Terraform whaimana hei mahi tahi me Selectel. Ma tenei hua ka taea e nga kaiwhakamahi te whakatinana katoa i te whakahaere rauemi ma te tikanga Hangahanga-hei-waehere.

I tenei wa kei te tautoko te kaiwhakarato i te whakahaere rauemi ratonga "Kapua tūmataiti mariko" (i muri nei ka kiia ko VPC). Hei nga ra kei te heke mai, kei te whakamahere matou ki te taapiri i te whakahaere rauemi mo etahi atu ratonga e whakaratohia ana e Selectel.

Kei te mohio koe, kua hangaia te ratonga VPC ki OpenStack. Heoi, na te mea kaore a OpenStack e whakarato i nga taputapu taketake mo te mahi i te kapua a te iwi, i whakatinanahia e matou te mahi ngaro i roto i te huinga o etahi atu API e ngawari ana te whakahaere i nga taonga hiato matatini me te pai ake o te mahi. Ko etahi o nga mahi e waatea ana i OpenStack kua katia mai i te whakamahi tika, engari kei te waatea mai to tatou API.

Kei roto i te kaiwhakarato Selectel Terraform te kaha ki te whakahaere i nga rauemi VPC e whai ake nei:

  • kaupapa me o ratou motunga;
  • nga kaiwhakamahi, o ratou mahi me o ratou tohu;
  • kupenga-roto a-iwi, tae atu ki nga rohe whakawhiti me te VRRP;
  • raihana pūmanawa.

Ka whakamahi te kaiwhakarato i to maatau whare pukapuka Go public ki te mahi me te VPC API. Ko te whare pukapuka me te kaiwhakarato ano he puna tuwhera, ka mahia to raatau whanaketanga i runga i Github:

Hei whakahaere i etahi atu rauemi kapua, penei i nga miihini mariko, nga kopae, nga tautau Kubernetes, ka taea e koe te whakamahi i te kaiwhakarato OpenStack Terraform. E waatea ana nga tuhinga whaimana mo nga kaiwhakarato e rua i nga hononga e whai ake nei:

Getting Started

Hei timata, me whakauru koe i a Terraform (ka kitea nga tohutohu me nga hononga ki nga kete whakaurunga i paetukutuku mana).

Hei mahi, me tono e te kaiwhakarato he taviri API Selectel, ka hangaia ki roto paewhiri mana kaute.

Ko nga whakaaturanga mo te mahi tahi me Selectel ka hangaia ma te whakamahi i a Terraform, ma te whakamahi ranei i te huinga tauira kua rite e waatea ana i roto i ta maatau putunga Github: terraform-tauira.

Ko te putunga me nga tauira kua wehea kia rua nga raarangi:

  • kōwae, kei roto i nga waahanga iti ka taea te whakamahi ano ka tango i te huinga tawhā hei whakaurunga me te whakahaere i tetahi huinga rauemi iti;
  • tauira, kei roto nga tauira o te huinga katoa o nga waahanga honohono.

Whai muri i te whakaurunga o Terraform, te hanga i tetahi taviri API Selectel me te mohio ki nga tauira, me haere ki nga tauira whaihua.

He tauira mo te hanga i te tūmau me te kōpae paetata

Ka titiro tatou ki tetahi tauira o te hanga kaupapa, he kaiwhakamahi whai mahi me tetahi miihini mariko me te kōpae rohe: terraform-examples/examples/vpc/server_local_root_disk.

I roto i te kōnae vars.tf Ko nga tawhā katoa ka whakamahia i te wa e karanga ana i nga waahanga kua whakaahuahia. Ko etahi o ratou he uara taunoa, hei tauira, ka hangaia te tūmau i roto i te rohe ru-3a me te whirihoranga e whai ake nei:

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"
}

I roto i te kōnae matua.tf Kua arawhiti te kaiwhakarato Selectel:

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

Kei roto ano i tenei konae te uara taunoa mo te taviri SSH ka whakauruhia ki runga i te tūmau:

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

Mena e tika ana, ka taea e koe te tautuhi i tetahi atu taviri tūmatanui. Ko te kī e kore e tika kia tohua hei ara konae; ka taea hoki te taapiri i te uara hei aho.

I tua atu i tenei konae ka whakarewahia nga waahanga kaupapa_me_kaiwhakamahi и server_local_root_disk, e whakahaere ana i nga rauemi e tika ana.

Kia ata tirohia enei waahanga.

Te hanga kaupapa me tetahi kaiwhakamahi whai waahi

Ka hangaia e te kōwae tuatahi he kaupapa me tetahi kaiwhakamahi whai waahi ki taua kaupapa: terraform-examples/modules/vpc/project_with_user.

Ka taea e te kaiwhakamahi hanga te takiuru ki OpenStack me te whakahaere i ana rauemi. He ngawari te kōwae me te whakahaere i nga hinonga e toru anake:

  • tīpako_vpc_kaupapa_v2,
  • selectel_vpc_user_v2,
  • selectel_vpc_role_v2.

Te hanga i te tūmau mariko me te kōpae paetata

Ko te waahanga tuarua e pa ana ki te whakahaere i nga taonga OpenStack, e tika ana hei hanga i tetahi tūmau me te kōpae rohe.

Me aro koe ki etahi o nga tohenga kua tohua i roto i tenei waahanga mo te rauemi openstack_compute_instance_v2:

resource "openstack_compute_instance_v2" "instance_1" {
  ...

  lifecycle {
    ignore_changes = ["image_id"]
  }

  vendor_options {
    ignore_resize_confirmation = true
  }
}

tautohe wareware_whakarereke ka taea e koe te wareware i nga huringa huanga id mo te ahua i whakamahia hei hanga i te miihini mariko. I roto i te ratonga VPC, ko te nuinga o nga whakaahua a te iwi ka whakahoutia aunoa kotahi i te wiki me te wa ano id ka huri ano. Ko tenei na nga ahuatanga o te waahanga OpenStack - Glance, e kiia ana ko nga whakaahua he hinonga korekore.

Mēnā kei te waihanga, kei te whakakē rānei koe i tētahi tūmau o nāianei, kōpae rānei he tohenga image_id whakamahia id whakaahua tūmatanui, katahi ka whakahouhia taua ahua, ka whakahaere ano i te whakaaturanga Terraform ka hanga ano te tūmau, te kōpae ranei. Te whakamahi tautohe wareware_whakarereke ka taea e koe te karo i taua ahuatanga.

Tuhipoka: tautohe wareware_whakarereke I puta mai i roto i te Terraform i mua noa atu: toia#2525.

tautohe wareware_whakanui_whakau e hiahiatia ana kia pai te whakarereke i te rahi o te kōpae paetata, nga matua, te mahara tūmau ranei. Ko enei huringa ka mahia ma te waahanga OpenStack Nova ma te tono tono whakahou. Taunoa Nova i muri i te tono whakahou ka tuu te tūmau ki te tūnga manatoko_te rahi ka tatari mo etahi atu whakapumautanga mai i te kaiwhakamahi. Heoi, ka taea te whakarereke i tenei whanonga kia kore ai a Nova e tatari mo etahi atu mahi mai i te kaiwhakamahi.

Ko te tohenga kua tohua ka taea e Terraform te kore e tatari mo te mana manatoko_te rahi mo te tūmau me te whakarite kia noho kaha te tūmau i muri i te huri i ona tawhā. Kei te waatea te tautohetohe mai i te putanga 1.10.0 o te kaiwhakarato OpenStack Terraform: toia#422.

Te Waihanga Rauemi

I mua i te whakahaere i nga whakaaturanga, kia mahara kei roto i ta maatau tauira, e rua nga kaiwhakarato rereke kua whakarewahia, a ko te kaiwhakarato OpenStack e whakawhirinaki ana ki nga rauemi a te Kaiwhakarato Selectel, na te mea kaore i te hanga i tetahi kaiwhakamahi i roto i te kaupapa, kaore e taea te whakahaere i nga taonga kei a ia. . Kia aroha mai, mo te take ano e kore e taea te whakahaere noa i te whakahau terraform tono i roto i to tatou tauira. Me mahi tatou i te tuatahi tono mo te kōwae kaupapa_me_kaiwhakamahi a muri iho mo era atu mea katoa.

Tuhipoka: Kaore ano kia whakatauhia tenei take i Terraform, ka taea e koe te whai i nga korero mo Github i take #2430 и take #4149.

Hei waihanga rauemi, haere ki te whaiaronga terraform-examples/examples/vpc/server_local_root_disk, me penei ona ihirangi:

$ ls
README.md	   main.tf		vars.tf

Ka arawhiti tatou i nga waahanga ma te whakamahi i te whakahau:

$ terraform init

Ko te putanga e whakaatu ana ka tango a Terraform i nga putanga hou o nga kaiwhakarato e whakamahia ana e ia me te tirotiro i nga waahanga katoa e whakaahuatia ana i te tauira.

Tuatahi ka whakamahi tatou i te kōwae kaupapa_me_kaiwhakamahi. Me tuku uara a-ringa mo nga taurangi kaore ano kia tautuhia:

  • pūkete_sel me to nama kaute Selectel;
  • sel_token me to matua mo Selectel API;
  • kaiwhakamahi_kupuhipa me te kupuhipa mo te kaiwhakamahi OpenStack.

Ko nga uara mo nga taurangi tuatahi e rua me tango mai paewhiri mana.

Mo te taurangi whakamutunga, ka taea e koe te whakaputa i tetahi kupuhipa.

Hei whakamahi i te kōwae me whakakapi e koe nga uara SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD whakahaere i te whakahau:

$ 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

Whai muri i te whakahaere i te whakahau, ka whakaatu a Terraform he aha nga rauemi e hiahia ana ia ki te hanga me te tono mo te whakau:

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

Ina oti te kaupapa, te kaiwhakamahi me te mahi, ka taea e koe te timata ki te hanga i nga toenga rauemi:

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

I te wa e hanga rauemi ana, kia whai whakaaro ki te putanga Terraform me te wahitau IP o waho ka taea te uru ki te tūmau i hangaia:

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

Ka taea e koe te mahi me te miihini mariko i hangaia ma te SSH ma te whakamahi i te IP kua tohua.

Rauemi Whakatikatika

I tua atu i te hanga rauemi ma te Terraform, ka taea hoki te whakarereke.

Hei tauira, me whakanui ake te maha o nga matua me te mahara mo to taatau tūmau ma te huri i nga uara mo nga tawhā. server_vcpus и server_ram_mb i roto i te kōnae tauira/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

Whai muri i tenei, ka tirohia he aha nga huringa ka arahi ki te whakamahi i te whakahau e whai ake nei:

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

Ko te mutunga mai, ka huri a Terraform i nga rauemi openstack_compute_instance_v2 и openstack_compute_flavor_v2.

Kia mahara ko tenei ka whakaara ano i te miihini mariko i hangaia.

Hei hoatu i te whirihoranga miihini mariko hou, whakamahia te tono terraform tono, kua whakarewahia e matou i mua.

Ko nga mea hanga katoa ka whakaatuhia ki roto Paewhiri mana VPC:

Kaiwhakarato Terraform Selectel

Ki ta maatau tauira putunga Ka taea hoki e koe te kite i nga whakaaturanga mo te hanga miihini mariko me nga puku whatunga.

He tauira mo te hanga i te roopu Kubernetes

I mua i te haere ki te tauira e whai ake nei, ka whakapaia e matou nga rauemi i hangaia i mua. Ki te mahi i tenei i te putake o te kaupapa terraform-examples/examples/vpc/server_local_root_disk Me whakahaere te whakahau ki te muku i nga taonga OpenStack:

$ 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

Na ka whakahaere i te whakahau ki te ūkui i nga ahanoa Selectel VPC API:

$ 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

I nga take e rua, me whakau koe i te mukunga o nga mea katoa:

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

Ko te tauira e whai ake nei kei roto i te whaiaronga terraform-examples/examples/vpc/kubernetes_cluster.

Ka hangaia e tenei tauira he kaupapa, he kaiwhakamahi whai waahi ki roto i te kaupapa, ka whakaara ake i tetahi roopu Kubernetes. I roto i te kōnae vars.tf ka kite koe i nga uara taunoa, penei i te maha o nga pona, o raatau ahuatanga, putanga Kubernetes, aha atu.

Hei hanga rauemi kia rite ki te tauira tuatahi, tuatahi ka timata taatau ki te arawhiti i nga waahanga me te hanga rauemi waahanga kaupapa_me_kaiwhakamahikatahi ka hanga i nga mea katoa:

$ 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

Ka whakawhitihia e matou te hanga me te whakahaere o nga tautau Kubernetes ma te waahanga OpenStack Magnum. Ka kitea e koe etahi atu korero mo te mahi me te roopu i tetahi o a maatau Tuhinga o muarite te turanga matauranga.

I te wa e whakareri ana i te kohinga, ka hangaia nga kopae me nga miihini mariko ka whakauruhia nga waahanga katoa e tika ana. E 4 meneti pea te whakaritenga, ka whakaatu a Terraform i nga karere penei:

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

Kia oti te whakaurunga, ka tohu a Terraform kua rite te tautau ka whakaatu i tana ID:

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

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

Hei whakahaere i te roopu Kubernetes i hangaia ma te whaipainga kubectl me whiwhi koe i te konae uru uru. Ki te mahi i tenei, haere ki te kaupapa i hangaia ma Terraform i te rarangi o nga kaupapa kei roto i to putea:

Kaiwhakarato Terraform Selectel

Muri iho, whai i te hononga penei xxxxxx.selvpc.ruka puta i raro i te ingoa kaupapa:

Kaiwhakarato Terraform Selectel

Mo nga korero takiuru, whakamahia te ingoa kaiwhakamahi me te kupuhipa i hanga e koe ma te Terraform. Mena kaore koe i tinihanga vars.tf ranei matua.tf hei tauira, ka whai ingoa te kaiwhakamahi tf_kaiwhakamahi. Me whakamahi e koe te uara o te taurangi hei kupuhipa TF_VAR_kaiwhakamahi_kupuhipa, i tohua i te tiimatanga terraform tono i mua

I roto i te kaupapa me haere koe ki te ripa Kubernetes:

Kaiwhakarato Terraform Selectel

Koinei te waahi kei reira te tautau i hangaia ma Terraform. Tikiake kōnae mo kubectl ka taea e koe i runga i te ripa "Access":

Kaiwhakarato Terraform Selectel

Ko nga tohutohu whakauru kei runga i te ripa kotahi. kubectl me te whakamahi i nga mea kua tikiakehia config.yaml.

Whai muri i te whakarewatanga kubectl me te whakatakoto i te taurangi taiao KUBECONFIG Ka taea e koe te whakamahi 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

Ka taea te whakarereke ngawari te maha o nga pona kahui ma te Terraform.
I roto i te kōnae matua.tf kua tohua te uara e whai ake nei:

cluster_node_count = "${var.cluster_node_count}"

Ka whakakapihia tenei uara mai i vars.tf:

variable "cluster_node_count" {
default = 2
}

Ka taea e koe te huri i te uara taunoa i roto vars.tf, whakapūtāhia te uara e hiahiatia ana ki roto matua.tf:

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

Hei whakamahi i nga huringa, penei i te tauira tuatahi, whakamahia te whakahau terraform tono:

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

Ina huri te maha o nga pona, ka noho tonu te tautau. Whai muri i te taapiri i tetahi node ma te Terraform, ka taea e koe te whakamahi me te kore whirihoranga taapiri:

$ 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

mutunga

I roto i tenei tuhinga i mohio matou ki nga huarahi matua ki te mahi "Kapua tūmataiti mariko" mā Terraform. Ka koa matou ki te whakamahi koe i te kaiwhakarato Selectel Terraform whaimana me te tuku urupare.

Ko nga pepeha ka kitea i roto i te kaiwhakarato Selectel Terraform ka taea te ripoata ma te Nga Take Github.

Source: will.com

Tāpiri i te kōrero