Selectel ááŸáá·áº á¡áá¯ááºáá¯ááºááẠááá¬ážááẠTerraform áááºáá±á¬ááºááŸá¯áá±ážáá°ááᯠá
áááºááá¯ááºááŒá®ááŒá
áºáááºá á€áá¯ááºáá¯ááºááẠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡á¬áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ-á¡ááŒá
áº-áá¯ááºáááºážá
áá
áºááŒáá·áº á¡áááºážá¡ááŒá
áºá
á®áá¶ááá·áºááœá²ááŸá¯ááᯠá¡ááŒáá·áºá¡áá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºá
á±áá«áááºá
áááºáá±á¬ááºááŸá¯áá±ážáá°ááẠáááºááŸáááœáẠáááºáá±á¬ááºááŸá¯á¡áááºážá¡ááŒá
áºá
á®áá¶ááá·áºááœá²ááŸá¯ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
áááºááááŒá®ážáá¬ážá¡ááá¯ááºážá VPC áááºáá±á¬ááºááŸá¯ááᯠOpenStack ááœááºáááºáá±á¬ááºáá¬ážáááºá ááá¯á·áá±á¬áºá OpenStack ááẠá¡áá»á¬ážáá°ááŸá¬ cloud áááºáá±á¬ááºááŸá¯á¡ááœáẠáá°ááááááá¬áá»á¬ážááᯠááá¶á·ááá¯ážáá±ážáá±á¬ááŒá±á¬áá·áºá ááŸá¯ááºááœá±ážáá±á¬áá±á«ááºážá
ááºá¡áá¬ááá¹áá¯áá»á¬ážááᯠá
á®áá¶ááá·áºááœá²ááŒááºážááᯠááá¯ážááŸááºážá
á±ááŒá®áž á¡áá¯ááºááá¯ááá¯á¡áááºááŒá±á
á±ááá·áº áá±á¬ááºááẠAPI á¡á
á¯áá
áºáá¯ááœáẠáá»á±á¬ááºáá¯á¶ážáá±áá±á¬ áá¯ááºáá±á¬ááºááá¯ááºá
áœááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá OpenStack ááœáẠáááŸáááá¯ááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºá¡áá»áá¯á·ááẠááá¯ááºááá¯ááºá¡áá¯á¶ážáááŒá¯ááá¯ááºáá±á¬áºáááºáž áááºážááŸáááá·áº áááŸáááá¯ááºáá«áááºá
Selectel Terraform áááºáá±á¬ááºááŸá¯áá±ážáá°ááẠááᯠá¡á±á¬ááºáá« VPC á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááá¯ááºá áœááºáž áá«áááºááẠá
- ááá±á¬áá»ááºáá»á¬ážááŸáá·áº áááºážááá¯á·áááœá²áááºážáá»á¬ážá
- áá¯á¶ážá áœá²áá°áá»á¬ážá áááºážááá¯á·á á¡áááºážááá¹ááá»á¬ážááŸáá·áº ááá¯áááºáá»á¬ážá
- áá±áááœááºážááŸáá·áº VRRP á¡áá«á¡ááẠá¡áá»á¬ážáá°ááŸá¬ ááœááºáááºááœá²áá»á¬ážá
- software ááá¯ááºá ááºáá»á¬ážá
áááºáá±á¬ááºááŸá¯áá±ážáá°á VPC API ááŸáá·áºá¡áá¯ááºáá¯ááºááẠáá»áœááºá¯ááºááá¯á·á á¡áá»á¬ážáá°ááŸá¬ Go á á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá á á¬ááŒáá·áºááá¯ááºááŸáá·áº áááºáá±á¬ááºááŸá¯áá±ážáá°ááá¯ááºááá¯ááºá open-source ááŒá áºáááºá áááºážááá¯á·á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠGithub ááœáẠáá¯ááºáá±á¬ááºáá«áááºá
- á
á¬ááŒáá·áºááá¯áẠááá¯ááŸá±á¬ááºáááºáž
Go-selvpcclient , - áááºáá±á¬ááºááŸá¯áá±ážááá·áº ááá¯ááŸá±á¬ááºáá¯á¶
Terraform-áá¶á·ááá¯ážáá±ážáá° Selectel .
ááááá ááºáá»á¬ážá áá áºáá»á¬ážá Kubernetes á¡á á¯á¡áá±ážáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážáá±á¬ cloud á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºá áááºááẠOpenStack Terraform áááºáá±á¬ááºááŸá¯áá±ážáá°ááᯠáá¯á¶ážááá¯ááºáááºá áá¶á·ááá¯ážáá±ážáá°ááŸá áºáŠážá áá¯á¶ážá¡ááœáẠááá¬ážáááºá á¬ááœááºá á¬áááºážáá»á¬ážááᯠá¡á±á¬ááºáá«ááá·áºááºáá»á¬ážááœáẠáááá¯ááºáááº-
- Selectel á¡áááºážá¡ááŒá
áºá
á¬ááœááºá
á¬áááºážáá»á¬áž-
Terraform-áá¶á·ááá¯ážáá±ážáá° Selectel , - OpenStack á¡áááºážá¡ááŒá
áºá
á¬ááœááºá
á¬áááºážáá»á¬áž-
Terraform-áá¶á·ááá¯ážáá±ážáá° OpenStack .
á áááº
á
áááºáááºá ááẠTerraform ááᯠááá·áºááœááºážááẠááá¯á¡ááºááẠ(áááºáááºááŸá¯áááºáá±á·áá»áºáá»á¬ážááá¯á· ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááŸáá·áº ááá·áºááºáá»á¬ážááᯠááœáẠááœá±á·ááá¯ááºáá«áááºá
áááºáááºáááºá¡ááœáẠáááºáá±á¬ááºááŸá¯áá±ážáá°ááẠáááºáá®ážáá¬ážááá·áº Selectel API áá±á¬á·áá
áºáᯠááá¯á¡ááºáááºá
Selectel ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠManifests áá»á¬ážááᯠTerraform ááá¯á¡áá¯á¶ážááŒá¯á áááºáá®ážáá¬ážááẠááá¯á·ááá¯áẠáá»áœááºá¯ááºááá¯á·á Github ááá¯ááŸá±á¬ááºááŸá¯ááœááºáááŸáááá¯ááºááá·áº á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬á¥ááá¬á¡á
á¯á¶ááá¯á¡áá¯á¶ážááŒá¯áá¬ážáááº-
á¥ááá¬áá»á¬ážáá«ááŸááá±á¬ repository ááᯠáááºážááœáŸááºááŸá áºáá¯á¡ááŒá Ạááœá²ááŒá¬ážáá¬ážáá«áááºá
- module ááœá±ááá·áºáááºáá»ááºá¡á á¯á¶ááᯠááá·áºááœááºážááŒá®áž áááºážááŒá áºá¡á á¯á¡áá±ážááᯠá á®áá¶ááá·áºááœá²ááá·áº áá±ážáááºáá±á¬ ááŒááºáá¯á¶ážááá¯ááºáá±á¬ module áá»á¬ážáá«áááºáááºá
- á¥ááá¬á¡ááŒááºá¡ááŸááºáá»áááºáááºáá¬ážáá±á¬ modules á¡á á¯á¶á¡áááºáááá°áá¬áá»á¬ážáá«ááŸááááºá
Terraform ááᯠááá·áºááœááºážááŒá®ážáá±á¬ááºá Selectel API áá±á¬á·ááᯠáááºáá®ážááŒá®áž ááá°áá¬áá»á¬ážááŸáá·áº áááºážááŸá®ážá¡á±á¬ááºá áááºááœá±á·ááá°áá¬áá»á¬ážáá®ááá¯á· áááºááœá¬ážááŒáá«á áá¯á·á
áá±ááá¹áááá áºááºááŒáá·áº áá¬áá¬áá áºáᯠáááºáá®ážááŒááºáž á¥ááá¬
ááá±á¬áá»ááºáá
áºáá¯áááºáá®ážááŒááºážá á¡áááºážááá¹ááá
áºáá¯áá«áá±á¬á¡áá¯á¶ážááŒá¯áá°áá
áºáŠážááŸáá·áº áá±ááá¹áááá
áºááºáá«áá±á¬ virtual machine áá
áºáá¯ááᯠááŒáá·áºáá«-
ááá¯ááºáá²ááŸá¬ vars.tf áá±á«áºááá¯ááŸá¯ modules áá»á¬ážááᯠáá±á¬áºááŒáá±á¬á¡áá«ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº ááá·áºáááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááá¯á áááºážááá¯á·áá²á០á¡áá»áá¯á·ááẠáá¯á¶áá±áááºááá¯ážáá»á¬ážááŸááááºá á¥ááá¬á áá¬áá¬ááᯠáá¯ááºá¡ááœááºáž áááºáá®ážáááºááŒá áºáááºá 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")}"
}
ááá¯á¡ááºáá«áá áááºááẠááá°áá®áá±á¬ á¡áá»á¬ážáá°ááŸá¬áá±á¬á·ááᯠáááºááŸááºááá¯ááºáááºá áá±á¬á·ááᯠááá¯ááºáááºážááŒá±á¬ááºážá¡ááŒá ẠáááºááŸááºááẠáááá¯á¡ááºáá«á áááºááá¯ážááᯠá á¬ááŒá±á¬ááºážá¡ááŒá áºáááºáž ááá·áºááá¯ááºáááºá
á€ááá¯ááºááœáẠáá±á¬ááºááẠmodule áá»á¬ážááᯠá áááºááá¯ááºáá«áááºá project_with_user О server_local_root_diskááá¯á¡ááºáá±á¬á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²áá±ážáá±á¬á
ဠmodules áá»á¬ážááá¯ááá¯ááá¯á¡áá±ážá áááºááŒáá·áºááŸá¯ááŒáá«á áá¯á·á
ááá±á¬áá»ááºáá áºáá¯áááºáá®ážááŒááºážááŸáá·áº á¡áá¯á¶ážááŒá¯áá°áá áºáŠážá á¡áááºážááá¹á
ááá module ááẠááá±á¬áá»ááºáá
áºáá¯ááŸáá·áº ááá¯ááá±á¬áá»ááºááœáẠá¡áááºážááá¹ááá
áºáá¯áá«ááŸááá±á¬ á¡áá¯á¶ážááŒá¯áá°áá
áºáŠážááᯠáááºáá®ážáááº-
áááºáá®ážáá¬ážááá·áºá¡áá¯á¶ážááŒá¯áá°ááẠOpenStack ááá¯á·áááºáá±á¬ááºááá¯ááºááŒá®áž áááºážáá¡áááºážá¡ááŒá áºáá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááá¯ááºáááºááŒá áºáááºá module áááºááá¯ážááŸááºážááŒá®áž entities áá¯á¶ážáá¯ááá¯áá¬á á®áá¶ááá·áºááœá²áááº-
- selectel_vpc_project_v2á
- selectel_vpc_user_v2á
- selectel_vpc_role_v2á
á ááºááœááºážáá áºááŒáá·áº virtual áá¬áá¬ááᯠáááºáá®ážááŒááºážá
áá¯ááá module ááẠlocal disk áá áºáá¯ááŸáá·áº server áá áºáá¯áááºáá®ážááẠááá¯á¡ááºáá±á¬ OpenStack objects áá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááŒááºážááŸáá·áº áááºááá¯ááºáá«áááºá
á¡áááºážá¡ááŒá áºá¡ááœáẠဠmodule ááœááºáá±á¬áºááŒáá¬ážáá±á¬ á¡ááŒá±á¬ááºážááŒáá»ááºá¡áá»áá¯á·ááᯠáááºá¡á¬áá¯á¶á áá¯ááºááá·áºáááºá openstack_compute_instance_v2:
resource "openstack_compute_instance_v2" "instance_1" {
...
lifecycle {
ignore_changes = ["image_id"]
}
vendor_options {
ignore_resize_confirmation = true
}
}
á¡ááŒááºážááœá¬ážááŸá¯ ignore_changes attribute á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠáá»á áºáá»á°ááŸá¯ááá¯ááºá á±áá«áááºá id virtual machine ááá¯áááºáá®ážáááºá¡áá¯á¶ážááŒá¯áá±á¬áá¯á¶á¡ááœááºá VPC áááºáá±á¬ááºááŸá¯ááœáẠá¡áá»á¬ážáá°ááŸá¬ áá¯á¶á¡áá»á¬ážá á¯ááẠáá áºáááºáá»áŸáẠáá áºááŒááẠá¡ááá¯á¡áá»á±á¬áẠá¡ááºááááºáá¯ááºááŒááŒá®áž áá áºáá»áááºáááºážááœáẠáááºážááá¯á·á áá¯á¶áá»á¬áž id á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážáááºážááŸááááºá áááºážááẠáá¯á¶áá»á¬ážááᯠáááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ á¡áá¬áá»á¬ážáᯠáá°áááá·áº OpenStack á¡á áááºá¡ááá¯ááºáž - Glance á áá°ážááŒá¬ážáá»ááºáá»á¬ážááŒá±á¬áá·áº ááŒá áºáááºá
á¡áááºá áááºááẠá¡ááŒááºážá¡áá¯á¶áá áºáá¯á¡ááŒá Ạáá«ááŸáááá·áº áááºááŸááá¬áᬠááá¯á·ááá¯áẠáá áºáá áºáá¯ááᯠáááºáá®ážáá±ááẠááá¯á·ááá¯áẠááŒááºáááºáá±áá«á image_id á¡áá¯á¶ážááŒá¯ááẠid á¡áá»á¬ážáá°ááŸá¬áá¯á¶á ááá¯á·áá±á¬áẠááá¯áá¯á¶ááᯠá¡ááºááááºáá¯ááºááŒá®ážáá±á¬ááºá Terraform áááºáá®ážáááºá áºááᯠáááºáá¶á¡áá¯á¶ážááŒá¯ááŒááºážááẠáá¬áᬠááá¯á·ááá¯áẠáá áºááºááᯠááŒááºáááºáááºáá®ážáááºááŒá áºáááºá á¡ááŒááºážá¡áá¯á¶áá áºáá¯á¡áá¯á¶ážááŒá¯ááŒááºážá ignore_changes áá®ááá¯á¡ááŒá±á¡áá±áá»áá¯ážááᯠááŸá±á¬ááºááá¯ááºááááºá
ááŸááºáá»ááº- áááºááŒá± ignore_changes Terraform ááŸá¬ áá±á«áºáá¬áᬠáá±á¬áºáá±á¬áºááŒá¬ááŒá®á
á¡ááŒááºážááœá¬ážááŸá¯ ignore_resize_confirmation local diská cores ááá¯á·ááá¯áẠserver memory ááᯠá¡á±á¬ááºááŒááºá áœá¬ á¡ááœááºá¡á á¬ážááŒá±á¬ááºážááẠááá¯á¡ááºáá«áááºá áá±á¬ááºážááá¯áá»ááºáá áºáá¯áá¯á¶ážááŒá®áž OpenStack Nova á¡á áááºá¡ááá¯ááºážááŸáááá·áº ááá¯ááá¯á·áá±á¬ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠááŒá¯áá¯ááºáá«áááºá á¡ááœááºá¡á á¬ážááŒá±á¬ááºážáááº. áá±á¬ááºážááá¯ááŒá®ážáá±á¬áẠáá°áááºáž Nova á¡ááœááºá¡á á¬ážááŒá±á¬ááºážááẠáá¬áá¬ááᯠstatus áá²ááá¯á·ááá·áºáááºá verify_resize á¡áá¯á¶ážááŒá¯áá°áá¶á០áá±á¬ááºáááºá¡áááºááŒá¯áá»ááºááᯠá á±á¬áá·áºáá»áŸá±á¬áºáá±áá«áááºá ááá¯á·áá±á¬áºá Nova á¡áá¯á¶ážááŒá¯áá°áá¶á០áá±á¬ááºáááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá á±á¬áá·áºááá¯ááºá¡á±á¬áẠá€á¡ááŒá¯á¡áá°ááᯠááŒá±á¬ááºážáá²ááá¯ááºáááºá
áááºááŸááºáá¬ážáá±á¬á¡ááŒááºážá¡áá¯á¶ááẠTerraform áá¡ááŒá±á¡áá±ááá¯á
á±á¬áá·áºááá¯ááºážáááºááœáá·áºááŒá¯áááºá verify_resize áá¬áá¬á¡ááœááºááŸáá·áº áááºážá ááá·áºáááºáá±á¬ááºáá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒá®ážáá±á¬áẠáá¬áá¬ááẠá¡áááºáááºáá±á¬ á¡ááŒá±á¡áá±ááœááºááŸáááẠááŒááºáááºáá«á á¡ááŒá±á¬ááºážááŒáá»ááºááᯠOpenStack Terraform áááºáá±á¬ááºááŸá¯áá±ážáá°á áá¬ážááŸááºáž 1.10.0 á០áááŸáááá¯ááºáá«áááºá
á¡áááºážá¡ááŒá áºáá»á¬ážáááºáá®ážááŒááºážá
áááºáá®ážáááºá áºáá»á¬ážááᯠááá¯ááºáá±á¬ááºáá®á áá»áœááºá¯ááºááá¯á·á á¥ááá¬ááœáẠááá°áá®áá±á¬ áá¶á·ááá¯ážáá±ážáá° ááŸá áºáá¯ááᯠá áááºááá¯ááºáááºááŸáá·áº OpenStack áááºáá±á¬ááºááŸá¯áá±ážáá°ááẠSelectel áááºáá±á¬ááºááŸá¯áá±ážáá°á á¡áááºážá¡ááŒá áºáá»á¬ážáá±á«áºááœáẠáá°áááºáá«áááºá ááá±á¬áá»ááºááœáẠá¡áá¯á¶ážááŒá¯áá°áá áºáŠážá០ááááºáá®ážáá² áááºážááŸáá·áºáááºááá¯ááºááá·áº á¡áá¬áá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááẠáááŒá áºááá¯ááºááŒá±á¬ááºáž áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«á . áá¶ááá±á¬ááºážá áœá¬áá²á áá°áá®áá±á¬á¡ááŒá±á¬ááºážááŒáá»ááºááŒá±á¬áá·áºáá»áœááºá¯ááºááá¯á·ááẠcommand ááá¯ááá¯ááºáá±á¬ááºááá¯ááºáá«á terraform áá»áŸá±á¬ááºáá¬ážáááºá áá»áœááºá¯ááºááá¯á·áá¥ááá¬á¡ááœááºážá á¡áááºáá¯á¶ážáá¯ááºáááŸá¬ áá»áŸá±á¬ááºáá¬áž module á¡ááœáẠproject_with_user áá±á¬ááºá០á¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážá¡ááœááºá
ááŸááºáá»ááº- á€ááŒá¿áá¬ááᯠTerraform ááœáẠáááŒá±ááŸááºážááá±ážáá«á áááºááẠGithub ááœáẠááœá±ážááœá±ážáá»ááºááᯠááá¯ááºáá¬ááá¯ááºáá«áááºá
á¡áááºážá¡ááŒá
áºáá»á¬ážáááºáá®ážáááºá áááºážááœáŸááºááá¯á·ááœá¬ážáá«á
$ ls
README.md main.tf vars.tf
áá»áœááºá¯ááºááá¯á·ááẠcommand ááá¯á¡áá¯á¶ážááŒá¯á module áá»á¬ážááá¯á áááºáá¯ááºáá±á¬ááºáááº-
$ terraform init
Terraform ááẠáááºážá¡áá¯á¶ážááŒá¯ááá·áº áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážá áá±á¬ááºáá¯á¶ážáá¬ážááŸááºážáá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºáᬠááá°áá¬ááœááºáá±á¬áºááŒáá¬ážááá·áº module á¡á¬ážáá¯á¶ážááᯠá á áºáá±ážááŒá±á¬ááºáž ááááºá ááŒááááºá
á¡áááºáá¯á¶áž module ááá¯áá¯á¶ážááŒáá·áºáá¡á±á¬áẠproject_with_user. áááºážááẠáááºááŸááºááá¬ážáá±á¬ ááááºážááŸááºáá»á¬ážá¡ááœáẠááá¯ááºááá¯ááºááŒááºáááºážááá·áºáááºááá¯ážáá»á¬áž ááá¯á¡ááºáááº-
- sel_á¡áá±á¬áá·áº áááºá Selectel á¡áá±á¬áá·áºáá¶áá«ááºááŒáá·áºá
- sel_token Selectel API á¡ááœáẠááá·áºáá±á¬á·ááŒáá·áºá
- user_password OpenStack á¡áá¯á¶ážááŒá¯áá°á¡ááœáẠá áá¬ážááŸááºáá áºáá¯ááŸáá·áºá
áááááááºážááŸááºááŸá
áºáá¯á¡ááœáẠáááºááá¯ážáá»á¬ážááᯠáá°áá±á¬ááºááœá¬ážááá«áááºá
áá±á¬ááºáá¯á¶ážááááºážááŸááºá¡ááœáẠáááºááẠáááºááá·áºá áá¬ážááŸááºááá¯áááᯠáá±á«áºáá¬ááá¯ááºáááºá
áá±á¬áºáá»á°ážááᯠá¡áá¯á¶ážááŒá¯ááẠáááºááẠáááºááá¯ážáá»á¬ážááᯠá¡á á¬ážááá¯ážááẠááá¯á¡ááºáááºá SEL_ACCOUNT, SEL_TOKEN О USER_PASSWORD command ááᯠrun:
$ 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
á¡áááºážá¡ááŒá áºáá»á¬ážááá¯áááºáá®ážáá±á¬á¡áá«á áááºáá®ážáá¬ážáá±á¬áá¬áá¬ááẠáááºáá±á¬ááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº ááŒááºá IP ááááºá á¬ááŒáá·áº Terraform á¡ááœááºááᯠá¡á¬áá¯á¶á áá¯ááºáá«-
module.server_local_root_disk.openstack_networking_floatingip_associate_v2.association_1: Creating...
floating_ip: "" => "x.x.x.x"
áááºááŸááºáá¬ážáá±á¬ IP ááá¯á¡áá¯á¶ážááŒá¯á SSH ááŸáá áºááá·áº áááºáá®ážáá¬ážáá±á¬ virtual machine ááŸáá·áº áááºáá¯ááºáá±á¬ááºááá¯ááºáááºá
á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºážááŒááºááŒááºážá
Terraform ááŸáááá·áº á¡áááºážá¡ááŒá áºáá»á¬ážááᯠáááºáá®ážááŒááºážá¡ááŒáẠáááºážááá¯á·ááá¯áááºáž ááŒá¯ááŒááºááá¯ááºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá parameters áá»á¬ážá¡ááœááºáááºááá¯ážáá»á¬ážááá¯ááŒá±á¬ááºážáá²ááŒááºážááŒáá·áºáá»áœááºá¯ááºááá¯á·ááá¬áá¬á¡ááœáẠcores ááŸáá·áº memory á¡áá±á¡ááœááºááá¯ááá¯ážááŒáŸáá·áºááŒáá«á áá¯á·á server_vcpus О server_ram_mb ááá¯ááºáá²ááŸá¬ example/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
áááºážááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºáá« command ááᯠá¡áá¯á¶ážááŒá¯á áááºááá·áºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá á áºáá±ážáá«áááºáááºážá
$ 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.
áááºážááẠáááºáá®ážáá¬ážáá±á¬ virtual machine ááᯠááŒááºáááºá áááºááŒááºážááœáẠáá«áááºááŒá±á¬ááºáž áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«á
virtual machine configuration á¡áá áºááá¯á¡áá¯á¶ážááŒá¯áááºá command ááá¯á¡áá¯á¶ážááŒá¯áá«á terraform áá»áŸá±á¬ááºáá¬ážáááºáá¡á á±á¬ááá¯ááºážá á áááºáá¯ááºáá±á¬ááºáá²á·ááŒá®ážááŒá áºáááºá
áááºáá®ážáá¬ážáá±á¬ á¡áá¬ááá¹áá¯á¡á¬ážáá¯á¶ážááᯠááŒááá«áááºá
áá»áœááºáá±á¬áºááá¯á·áá²á·á¡ááœááº
Kubernetes á¡á á¯á¡áá±ážááᯠáááºáá®ážááŒááºáž á¥ááá¬
áá±á¬ááºá¥ááá¬áá
áºáá¯ááá¯á· áááŒá±á¬ááºážáá®á áá»áœááºá¯ááºááá¯á·ááẠá¡á
á±á¬ááá¯ááºážá áááºáá®ážáá¬ážáá±á¬ á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠááŸááºážáááºážáá«áááºá áá«ááá¯áá¯ááºááá¯á· ááá±á¬áá»ááºáá²á· á¡ááŒá
áºááŸá¬
$ 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 á¡áá¬ááá¹áá¯áá»á¬ážááá¯ááŸááºážáááºážááẠcommand ááᯠrun áá«á
$ 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
á¡á±á¬ááºáá«á¥ááá¬ááẠdirectory ááœááºááŒá
áºáááºá
á€á¥ááá¬ááẠááá±á¬áá»ááºáá áºáá¯á ááá±á¬áá»ááºááœáẠá¡áááºážááá¹ááá áºáá¯áá«ááŸááá±á¬ á¡áá¯á¶ážááŒá¯áá°áá áºáŠážááᯠáááºáá®ážáᬠKubernetes á¡á á¯á¡áá±ážáá áºáá¯á¡á¬áž ááŒá¯á á¯áá»áá¯ážáá±á¬ááºáá±ážáááºá ááá¯ááºáá²ááŸá¬ vars.tf node á¡áá±á¡ááœááºá áááºážááá¯á·á áááá±áááá¹ááá¬áá»á¬ážá 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
áá»áœááºá¯ááºááá¯á·ááẠOpenStack Magnum á¡á
áááºá¡ááá¯ááºážááŸáááá·áº Kubernetes á¡á
á¯á¡áá±ážáá»á¬ážá áááºáá®ážááŸá¯ááŸáá·áº á
á®áá¶ááá·áºááœá²ááŸá¯ááᯠááœáŸá²ááŒá±á¬ááºážáá±ážáá«áááºá áá»áœááºá¯ááºááá¯á·ááá
áºáá¯ááœáẠá¡á
á¯á¡ááœá²á·áá
áºáá¯ááŸáá·áº áááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠáááºááá¯ááá¯ááŸá¬ááœá±ááá¯ááºáá«áááºá
á¡á á¯á¡áá±ážááᯠááŒááºáááºááá·áºá¡áá«á áá áºááºáá»á¬ážááŸáá·áº virtual machines áá»á¬ážááᯠáááºáá®ážáááºááŒá áºááŒá®áž ááá¯á¡ááºáá±á¬ á¡á áááºá¡ááá¯ááºážá¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážáááºááŒá áºáááºá ááŒáá¯áááºááŒááºáááºááŸá¯ááẠ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.
utility ááŸáááá·áº áááºáá®ážáá¬ážáá±á¬ Kubernetes á¡á á¯á¡áá±ážááᯠá á®áá¶ááá·áºááœá²ááẠkubectl á¡á á¯á¡áá±ážáááºáá±á¬ááºááœáá·áºááá¯ááºááᯠáááºááá°áááºááá¯á¡ááºáááºá áááºážááá¯áá¯ááºáá±á¬ááºááẠááá·áºá¡áá±á¬áá·áºááŸá ááá±á¬áá»ááºáá»á¬ážá á¬áááºážááŸá Terraform ááŸáá áºááá·áº áááºáá®ážáá¬ážáá±á¬ ááá±á¬áá»ááºááá¯á· ááœá¬ážáá«á
ááŒá®ážáááºáá±á¬á· ááŒáá¯ááºáá²á· link ááᯠááá¯ááºáá¯ááºáá«á
áá±á¬á·ááºá¡ááºá¡áá»ááºá¡áááºá¡ááœááºá Terraform ááŸáá
áºááá·áº áááºáááºáá®ážáá¬ážááá·áº á¡áá¯á¶ážááŒá¯áá°á¡áááºááŸáá·áº á
áá¬ážááŸááºááᯠá¡áá¯á¶ážááŒá¯áá«á áááŸáá·áºá
á¬ážááá±ážááẠvars.tf ááá¯á·ááá¯áẠmain.tf áá»áœááºá¯ááºááá¯á·á á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá¯á¶ážááŒá¯áá°ááẠáá¬áááºááŸááááá·áºáááºá tf_á¡áá¯á¶ážááŒá¯áá°. áááºááẠááááºážááŸááºááááºááá¯ážááᯠá
áá¬ážááŸááºá¡ááŒá
Ạá¡áá¯á¶ážááŒá¯ááá«áááºá TF_VAR_user_passwordá
áááºáá»áááºááœáẠáááºááŸááºáá¬ážáá±á¬á terraform áá»áŸá±á¬ááºáá¬ážáááºá á¡á
á±á¬ááá¯ááºážá
ááá±á¬áá»ááºá¡ááœááºážááœáẠáááºáááºááºááá¯á· ááœá¬ážáááºááá¯á¡ááºáááºá Kubernetes:
á€áááºááŸá¬ Terraform ááŸáá
áºááá·áº áááºáá®ážáá¬ážáá±á¬ á¡á
á¯á¡áá±ážáááºááŸááá¬áá±áá¬ááŒá
áºáááºá ááá¯ááºááá¯áá±á«ááºážáá¯ááºáá¯ááºáá«á kubectl "Access" tab ááœááºáááºáá¯ááºááá¯ááºáááº-
áááºáááºááŒááºážááá¯ááºáᬠáááºážááœáŸááºáá»ááºáá»á¬ážááẠáá°áá®áá±á¬áááºááºáá±á«áºááœáẠáááºááŸááááºá 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
áááá¥ááá¬ááœááºáá²á·ááá¯á· á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡áá¯á¶ážáá»áááºá command ááᯠá¡áá¯á¶ážááŒá¯áá«á terraform áá»áŸá±á¬ááºáá¬ážáááºá:
$ env
TF_VAR_sel_account=SEL_ACCOUNT
TF_VAR_sel_token=SEL_TOKEN
TF_VAR_user_password=USER_PASSWORD
terraform apply
node á¡áá±á¡ááœááºáá»á¬áž ááŒá±á¬ááºážáá²áá±á¬á¡áá«á á¡á á¯á¡áá±ážááẠáááºáááºáááºááŸááá±áááºááŒá áºáááºá Terraform ááŸáá áºááá·áº node áá áºáá¯ááᯠáá±á«ááºážááá·áºááŒá®ážáá±á¬ááºá áááºážááᯠáááºáá±á¬ááºážááœá²á·á ááºážááŸá¯ááá«áá² áááºá¡áá¯á¶ážááŒá¯ááá¯ááºáááº-
$ 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
áá±á¬ááºáá»ááº
á€áá±á¬ááºážáá«ážááá»áœááºá¯ááºááá¯á·ááŸáá·áºá¡áá°á¡áá¯ááºáá¯ááºáááºá¡ááááááºážáááºážáá»á¬ážááŸáá·áºáááá¬ážáá«ááŒá®á
Selectel Terraform áááºáá±á¬ááºááŸá¯áá±ážáá°ááœáẠááœá±á·ááŸáááá·áº áááºááá·áºá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááá¯áááá¯ááŸáá
áºááá·áº á¡á
á®áááºáá¶ááá¯ááºáá«áááºá
source: www.habr.com