เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Selectel. เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”.

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ "เบ„เบฅเบฒเบงเบชเปˆเบงเบ™เบ•เบปเบง virtual" (เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ VPC). เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบ Selectel.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบนเป‰เปเบฅเป‰เบง, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ VPC เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ OpenStack. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ OpenStack เบšเปเปˆเป„เบ”เป‰เบชเบฐเบซเบ™เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบŸเบฑเบ‡เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เปƒเบ™เบŠเบธเบ”เบ‚เบญเบ‡ APIs เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบ‡เปˆเบฒเบเปƒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบงเบฑเบ”เบ–เบธเบ›เบฐเบชเบปเบกเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™. เบšเบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ OpenStack เปเบกเปˆเบ™เบ›เบดเบ”เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบเบปเบ‡, เปเบ•เปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบœเปˆเบฒเบ™ API เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Selectel Terraform เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ›เบฐเบเบญเบšเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ VPC เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเป‚เบ„เบ•เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ;
  • เบœเบนเป‰เปƒเบŠเป‰, เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เปเบฅเบฐ tokens เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ;
  • subnets เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ, เบฅเบงเบกเบ—เบฑเบ‡เบ‚เป‰เบฒเบกเบžเบฒเบเบžเบทเป‰เบ™เปเบฅเบฐ VRRP;
  • เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบŠเบญเบšเปเบง.

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” Go เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš VPC API. เบ—เบฑเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบฅเบฐเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบญเบ‡เปเบกเปˆเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™ Github:

  • เบซเปโ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹ Go-selvpcclient,
  • เบ„เบฑเบ‡เป€เบเบฑเบšเบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform-provider Selectel.

เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ„เบฅเบฒเบงเบญเบทเปˆเบ™เป†, เป€เบŠเบฑเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual, เปเบœเปˆเบ™, เบเบธเปˆเบก Kubernetes, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ OpenStack Terraform. เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบฅเบดเป‰เบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Terraform (เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบŠเบธเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบ—เบตเปˆ เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบฒเบ‡เบเบฒเบ™).

เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™, เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฐเบซเบฑเบ” Selectel API, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ เปเบœเบ‡เบ„เบงเบšเบ„เบธเบกเบšเบฑเบ™เบŠเบต.

Manifests เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Selectel เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ Terraform เบซเบผเบทเปƒเบŠเป‰เบŠเบธเบ”เบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Github เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ: terraform-เบ•เบปเบงเบขเปˆเบฒเบ‡.

repository เบ—เบตเปˆเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบชเบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต:

  • เป‚เบกเบ”เบนเบ™, เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเป‚เบกเบ”เบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเบกเบฒเปƒเบŠเป‰เบ„เบทเบ™เปƒเบซเบกเปˆเบ—เบตเปˆเป€เบญเบปเบฒเบŠเบธเบ”เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบ›เบฑเบ™เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™เปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบŠเบธเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™;
  • เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ›เบฐเบเบญเบšเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบธเบ”เป‚เบกเบ”เบนเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Terraform, เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ” API เบ‚เบญเบ‡ Selectel เปเบฅเบฐเป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰เป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเปเบœเปˆเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบšเบปเบ”เบšเบฒเบ”เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบกเบตเปเบœเปˆเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™: terraform-examples/examples/vpc/server_local_root_disk.

เปƒเบ™เป„เบŸเบฅเปŒ vars.tf เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เป‚เบ—เป‚เบกเบ”เบนเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบ. เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบกเบตเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เป€เบ‚เบ” ru-3a เบ”เป‰เบงเบโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

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

เปƒเบ™เป„เบŸเบฅเปŒ main.tf เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Selectel เปเบกเปˆเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™:

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

เป„เบŸเบฅเปŒเบ™เบตเป‰เบเบฑเบ‡เบกเบตเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฐเปเบˆ SSH เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป€เบŠเบตเบšเป€เบงเบต:

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

เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ„เบตเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบŸเบฅเปŒ; เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ„เปˆเบฒเป€เบ›เบฑเบ™ string เป„เบ”เป‰.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เป„เบŸเบฅเปŒเบ™เบตเป‰, เป‚เบกเบ”เบนเบ™เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง project_with_user ะธ server_local_root_disk, เป€เบŠเบดเปˆเบ‡เบ„เบธเป‰เบกเบ„เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เป‚เบกเบ”เบนเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบšเบปเบ”เบšเบฒเบ”

เป‚เบกเบ”เบนเบ™เบ—เปเบฒเบญเบดเบ”เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบšเบปเบ”เบšเบฒเบ”เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ™เบฑเป‰เบ™: terraform-example/modules/vpc/project_with_user.

เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš OpenStack เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบกเบฑเบ™. เป‚เบกเบ”เบนเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ„เบธเป‰เบกเบ„เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบซเบ™เปˆเบงเบเบ‡เบฒเบ™:

  • selectel_vpc_project_v2,
  • selectel_vpc_user_v2,
  • selectel_vpc_role_v2.

เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบŠเบตเบšเป€เบงเบตเบชเบฐเป€เปเบทเบญเบ™เบเบฑเบšเปเบœเปˆเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เป‚เบกเบ”เบนเบ™เบ—เบตเบชเบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบงเบฑเบ”เบ–เบธ OpenStack, เป€เบŠเบดเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเปเบœเปˆเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบšเบฒเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เป‚เบกเบ”เบนเบ™เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ openstack_compute_instance_v2:

resource "openstack_compute_instance_v2" "instance_1" {
  ...

  lifecycle {
    ignore_changes = ["image_id"]
  }

  vendor_options {
    ignore_resize_confirmation = true
  }
}

เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ ignore_changes เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ id เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual. เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ VPC, เบฎเบนเบšเบžเบฒเบšเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปˆเบงเบ™เปƒเบซเบเปˆเบˆเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเบญเบฒเบ—เบดเบ”เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ id เบเบฑเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบ peculiarities เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš OpenStack - Glance, เปƒเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™ immutable.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบชเป‰เบฒเบ‡เบซเบผเบทเปเบเป‰เป„เบ‚เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเบผเบทเปเบœเปˆเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ—เบตเปˆเบกเบตเป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ image_id เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰ id เบฎเบนเบšเบžเบฒเบšเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบ™เบฑเป‰เบ™เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ Terraform manifest เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบˆเบฐเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบซเบผเบทเปเบœเปˆเบ™. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ ignore_changes เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เบซเบกเบฒเบเป€เบซเบ”: เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ ignore_changes เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ Terraform เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบงเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰: เบ”เบถเบ‡ #2525.

เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ ignore_resize_confirmation เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เปเบœเปˆเบ™, เปเบเบ™, เบซเบผเบทเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เป€เบฎเบฑเบ”เบœเปˆเบฒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบš OpenStack Nova เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”. Nova เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ” เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบš verify_resize เปเบฅเบฐเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เป€เบžเบทเปˆเบญเปƒเบซเป‰ Nova เบšเปเปˆเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰.

เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ Terraform เบšเปเปˆเบฅเปเบ–เป‰เบฒเบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบš verify_resize เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบกเบฑเบ™. argument เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบˆเบฒเบเป€เบงเบตเบŠเบฑเบ™ 1.10.0 เบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ OpenStack Terraform: เบ”เบถเบ‡ #422.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ manifests, เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบชเบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง, เปเบฅเบฐเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ OpenStack เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Selectel, เป€เบžเบฒเบฐเบงเปˆเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™. . เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ”เบฝเบงเบเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ เปƒเบŠเป‰ terraform เบžเบฒเบเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ” เบ™เปเบฒเปƒเบŠเป‰ เบชเปเบฒเบฅเบฑเบšเป‚เบกเบ”เบนเบ™ project_with_user เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™.

เบซเบกเบฒเบเป€เบซเบ”: เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™ Terraform, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบš Github เบ—เบตเปˆ เบšเบฑเบ™เบซเบฒ #2430 ะธ เบšเบฑเบ™เบซเบฒ #4149.

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต terraform-examples/examples/vpc/server_local_root_disk, เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

$ ls
README.md	   main.tf		vars.tf

เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบกเบ”เบนเบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡:

$ terraform init

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ Terraform เบ”เบฒเบงเป‚เบซเบฅเบ”เป€เบงเบตเบŠเบฑเบ™เบซเบผเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เปƒเบŠเป‰เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ—เบธเบเป‚เบกเบ”เบนเบ™เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡.

เบ—เปเบฒเบญเบดเบ”เปƒเบซเป‰เปƒเบŠเป‰เป‚เบกเบ”เบนเบ™ project_with_user. เบ™เบตเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เปˆเบฒเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”:

  • เบšเบฑเบ™เบŠเบต sel_ เบ”เป‰เบงเบเป€เบฅเบเบšเบฑเบ™เบŠเบต Selectel เบ‚เบญเบ‡เบ—เปˆเบฒเบ™;
  • sel_token เบ”เป‰เบงเบเบเบฐเปเบˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบชเบณเบฅเบฑเบš Selectel API;
  • user_password เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰ OpenStack.

เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡เบ•เบปเบงเปเบ›เบ—เปเบฒเบญเบดเบ”เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบญเบปเบฒเบกเบฒเบˆเบฒเบ เปเบœเบ‡เบ„เบงเบšเบ„เบธเบก.

เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›เบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เปƒเบ”เป†.

เป€เบžเบทเปˆเบญเปƒเบŠเป‰เป‚เบกเบ”เบนเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบ„เปˆเบฒ SEL_ACCOUNT, SEL_TOKEN ะธ USER_PASSWORD เปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡:

$ 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

เบซเบผเบฑเบ‡เบˆเบฒเบเปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, Terraform เบˆเบฐเบชเบฐเปเบ”เบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เปเบฅเบฐเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™:

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

เป€เบกเบทเปˆเบญเป‚เบ„เบ‡เบเบฒเบ™, เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ:

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

เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เปƒเบซเป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡ Terraform เบเบฑเบšเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰:

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

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบœเปˆเบฒเบ™ SSH เป‚เบ”เบเปƒเบŠเป‰ IP เบ—เบตเปˆเบฅเบฐเบšเบธ.

เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบœเปˆเบฒเบ™ Terraform, เบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ”เบฑเบ”เปเบ›เบ‡เป„เบ”เป‰.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เปเบเบ™เปเบฅเบฐเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต. server_vcpus ะธ server_ram_mb เปƒเบ™เป„เบŸเบฅ เบ•เบปเบงเบขเปˆเบฒเบ‡/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

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบตเป‰เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, Terraform เป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ openstack_compute_instance_v2 ะธ openstack_compute_flavor_v2.

เบเบฐโ€‹เบฅเบธโ€‹เบ™เบฒโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบงเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบเบฒเบ™ rebooting เป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹.

เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบชเบฐเป€เปเบทเบญเบ™เปƒเปเปˆ, เปƒเบซเป‰เปƒเบŠเป‰เบ„เบณเบชเบฑเปˆเบ‡ เปƒเบŠเป‰ terraform, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ—เบฑเบ‡เปเบปเบ”เบˆเบฐเบ–เบทเบเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™ เปเบœเบ‡เบ„เบงเบšเบ„เบธเบก VPC:

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel

เปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ repositories เบ•เบปเบงเบขเปˆเบฒเบ‡ เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™ manifests เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ virtual machines เบเบฑเบš network drives.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบก Kubernetes

เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบฎเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ terraform-examples/examples/vpc/server_local_root_disk เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบžเบทเปˆเบญเบฅเบถเบšเบงเบฑเบ”เบ–เบธ 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

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบžเบทเปˆเบญเบฅเบถเบšเบฅเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธ 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

เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบเปเบฅเบฐเบ™เบต, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบขเบทเบ™เบขเบฑเบ™เบเบฒเบ™เบฅเบถเบšเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เบซเบกเบปเบ”:

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

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต terraform-examples/examples/vpc/kubernetes_cluster.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบกเบตเบšเบปเบ”เบšเบฒเบ”เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เปเบฅเบฐเบเบปเบเบชเบนเบ‡เบเบธเปˆเบก Kubernetes เบซเบ™เบถเปˆเบ‡. เปƒเบ™เป„เบŸเบฅเปŒ vars.tf เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹, เป€เบŠเบฑเปˆเบ™โ€‹: เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡ nodesโ€‹, เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹, เบชเบฐโ€‹เบšเบฑเบš Kubernetesโ€‹, เปเบฅเบฐโ€‹เบญเบทเปˆเบ™เป†โ€‹.

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เปเบฒเบญเบดเบ”, เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ” เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™ project_with_userเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเป‰เบฒเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™:

$ 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

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป‚เบญเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก Kubernetes เบœเปˆเบฒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบš OpenStack Magnum. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบธเปˆเบกเปƒเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเปƒเบ™ เบžเบทเป‰เบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบฎเบนเป‰.

เป€เบกเบทเปˆเบญเบเบฐเบเบฝเบกเบเบธเปˆเบก, เปเบœเปˆเบ™เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบเบฒเบ™เบเบฐเบเบฝเบกเปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 4 เบ™เบฒเบ—เบต, เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆ Terraform เบˆเบฐเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบŠเบฑเปˆเบ™:

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

เป€เบกเบทเปˆเบญเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง, Terraform เบˆเบฐเบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเบเบธเปˆเบกเบžเป‰เบญเบกเปเบฅเป‰เบง เปเบฅเบฐเบชเบฐเปเบ”เบ‡ 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.

เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก Kubernetes เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบœเปˆเบฒเบ™ utility kubectl เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเป„เบŸเบฅเปŒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบธเปˆเบก. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เป„เบ›เบซเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบœเปˆเบฒเบ™ Terraform เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เบšเบฑเบ™เบŠเบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel

เบ•เปเปˆเป„เบ›, เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบŠเบฑเปˆเบ™: xxxxxx.selvpc.ruเป€เบŠเบดเปˆเบ‡เบ›เบฒเบเบปเบ”เบขเบนเปˆเบฅเบธเปˆเบกเบŠเบทเปˆเป‚เบ„เบ‡เบเบฒเบ™:

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel

เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš, เปƒเบซเป‰เปƒเบŠเป‰เบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰ เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบœเปˆเบฒเบ™ Terraform. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰ cheatedโ€‹ vars.tf เบซเบผเบท main.tf เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบœเบนเป‰เปƒเบŠเป‰เบˆเบฐเบกเบตเบŠเบทเปˆ tf_user. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ TF_VAR_user_password, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เปƒเบŠเป‰ terraform เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบžเบฒเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ›เบ—เบตเปˆเปเบ–เบš Kubernetes:

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel

เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบเบธเปˆเบกเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบœเปˆเบฒเบ™ Terraform เบ•เบฑเป‰เบ‡เบขเบนเปˆ. เบ”เบฒเบงเป‚เบซเบฅเบ”เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบš kubectl เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบขเบนเปˆเปƒเบ™เปเบ–เบš "เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡":

เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel

เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบกเปˆเบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เปเบ–เบšเบ”เบฝเบงเบเบฑเบ™. kubectl เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ—เบตเปˆโ€‹เบ”เบฒเบงโ€‹เป‚เบซเบผเบ”โ€‹เป„เบ”เป‰โ€‹ config.yaml.

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง kubectl เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก KUBECONFIG เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ 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

เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบ‚เบญเบ‡เบเบธเปˆเบกเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ‡เปˆเบฒเบเป‚เบ”เบเบœเปˆเบฒเบ™ Terraform.
เปƒเบ™เป„เบŸเบฅเปŒ main.tf เบ„เปˆเบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบšเบธ:

cluster_node_count = "${var.cluster_node_count}"

เบ„เปˆเบฒเบ™เบตเป‰เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆ vars.tf:

variable "cluster_node_count" {
default = 2
}

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™ vars.tf, เบซเบผเบทเบฅเบฐเบšเบธเบ„เปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบ™ main.tf:

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

เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เปเบฒเบญเบดเบ”, เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ เปƒเบŠเป‰ terraform:

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

เป€เบกเบทเปˆเบญเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ nodes เบ›เปˆเบฝเบ™เปเบ›เบ‡, cluster เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบกเบตเบขเบนเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบžเบตเปˆเบก node เบœเปˆเบฒเบ™ Terraform, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเป€เบžเบตเปˆเบกเป€เบ•เบตเบก:

$ 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

เบชเบฐเบซเบฅเบธเบš

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบนเป‰เบˆเบฑเบเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ•เบปเป‰เบ™เบ•เปเปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš "เบ„เบฅเบฒเบงเบชเปˆเบงเบ™เบ•เบปเบง virtual" เบœเปˆเบฒเบ™ Terraform. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ”เบตเปƒเบˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Terraform Selectel เปเบฅเบฐเปƒเบซเป‰เบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™.

เปเบกเบ‡เป„เบกเป‰เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Selectel Terraform เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบฒเบเบ‡เบฒเบ™เบœเปˆเบฒเบ™ เบšเบฑเบ™เบซเบฒ Github.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™