Selectel рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдЕрдзрд┐рдХреГрдд Terraform рдкреНрд░рджрд╛рддрд╛ рд▓реЙрдиреНрдЪ рдХреЗрд▓рд╛ рдЖрд╣реЗ. рд╣реЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░-рдПрдЬ-рдХреЛрдб рдкрджреНрдзрддреАрджреНрд╡рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреВрд░реНрдгрдкрдгреЗ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
рдкреНрд░рджрд╛рддрд╛ рд╕рдзреНрдпрд╛ рд╕реЗрд╡рд╛ рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЛ
рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА, VPC рд╕реЗрд╡рд╛ OpenStack рд╡рд░ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗ. рддрдерд╛рдкрд┐, OpenStack рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд▓рд╛рдЙрдбрд▓рд╛ рд╕реЗрд╡рд╛ рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдореВрд│ рд╕рд╛рдзрдиреЗ рдкреНрд░рджрд╛рди рдХрд░рдд рдирд╛рд╣реА рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ, рдЖрдореНрд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд API рдЪреНрдпрд╛ рд╕рдВрдЪрд╛рдордзреНрдпреЗ рдЧрд╣рд╛рд│ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЬреА рдЬрдЯрд┐рд▓ рд╕рдВрдорд┐рд╢реНрд░ рд╡рд╕реНрддреВрдВрдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реБрд▓рдн рдХрд░рддреЗ рдЖрдгрд┐ рдХрд╛рд░реНрдп рдЕрдзрд┐рдХ рд╕реЛрдпреАрд╕реНрдХрд░ рдХрд░рддреЗ. OpenStack рдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реА рдХрд╛рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдереЗрдЯ рд╡рд╛рдкрд░рд╛рдкрд╛рд╕реВрди рдмрдВрдж рдЖрд╣реЗ, рдкрд░рдВрддреБ рджреНрд╡рд╛рд░реЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ
Selectel Terraform рдкреНрд░рджрд╛рддреНрдпрд╛рдордзреНрдпреЗ рдЖрддрд╛ рдЦрд╛рд▓реАрд▓ VPC рд╕рдВрд╕рд╛рдзрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ:
- рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдХреЛрдЯрд╛;
- рд╡рд╛рдкрд░рдХрд░реНрддреЗ, рддреНрдпрд╛рдВрдЪреА рднреВрдорд┐рдХрд╛ рдЖрдгрд┐ рдЯреЛрдХрди;
- рдХреНрд░реЙрд╕-рд░рд┐рдЬрдирд▓ рдЖрдгрд┐ рд╡реНрд╣реАрдЖрд░рдЖрд░рдкреАрд╕рд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдмрдиреЗрдЯ;
- рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдкрд░рд╡рд╛рдиреЗ.
VPC API рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рджрд╛рддрд╛ рдЖрдордЪреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ Go рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рддреЛ. рд▓рд╛рдпрдмреНрд░рд░реА рдЖрдгрд┐ рдкреНрд░рджрд╛рддрд╛ рджреЛрдШреЗрд╣реА рдореБрдХреНрдд-рд╕реНрд░реЛрдд рдЖрд╣реЗрдд, рддреНрдпрд╛рдВрдЪрд╛ рд╡рд┐рдХрд╛рд╕ Github рд╡рд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ:
- рд▓рд╛рдпрдмреНрд░рд░реА рднрд╛рдВрдбрд╛рд░
рдЧреЛ-рд╕реЗрд▓реНрд╡реНрд╣рдкреАрдХреНрд▓рд╛рдпрдВрдЯ , - рдкреНрд░рджрд╛рддрд╛ рднрд╛рдВрдбрд╛рд░
рдЯреЗрд░рд╛рдлреЙрд░реНрдо-рдкреНрд░рджрд╛рддрд╛ Selectel .
рдЗрддрд░ рдХреНрд▓рд╛рдЙрдб рд╕рдВрд╕рд╛рдзрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЬрд╕реЗ рдХреА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдиреНрд╕, рдбрд┐рд╕реНрдХреНрд╕, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░реНрд╕, рддреБрдореНрд╣реА рдУрдкрдирд╕реНрдЯреЕрдХ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдкреНрд░рджрд╛рддрд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рджреЛрдиреНрд╣реА рдкреНрд░рджрд╛рддреНрдпрд╛рдВрд╕рд╛рдареА рдЕрдзрд┐рдХреГрдд рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдЦрд╛рд▓реАрд▓ рд▓рд┐рдВрдХреНрд╕рд╡рд░ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ:
- Selectel рд╕рдВрд╕рд╛рдзрди рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг:
рдЯреЗрд░рд╛рдлреЙрд░реНрдо-рдкреНрд░рджрд╛рддрд╛ Selectel , - OpenStack рд╕рдВрд╕рд╛рдзрди рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг:
рдЯреЗрд░рд╛рдлреЙрд░реНрдо-рдкреНрд░рджрд╛рддрд╛ OpenStack .
рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ
рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреЕрдХреЗрдЬреЗрд╕рдЪреНрдпрд╛ рд╕реВрдЪрдирд╛ рдЖрдгрд┐ рд▓рд┐рдВрдХ рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддрд╛рдд.
рдСрдкрд░реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкреНрд░рджрд╛рддреНрдпрд╛рд▓рд╛ Selectel API рдХреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреА рдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реА рдЖрд╣реЗ
рд╕рд┐рд▓реЗрдХреНрдЯреЗрд▓рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╡рд╛рдкрд░реВрди рдХрд┐рдВрд╡рд╛ рдЖрдордЪреНрдпрд╛ рдЧрд┐рдердм рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рддрдпрд╛рд░ рдЙрджрд╛рд╣рд░рдгрд╛рдВрдЪрд╛ рд╕рдВрдЪ рд╡рд╛рдкрд░реВрди рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд:
рдЙрджрд╛рд╣рд░рдгрд╛рдВрд╕рд╣ рднрд╛рдВрдбрд╛рд░ рджреЛрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ:
- рд╡рд┐рднрд╛рдЧ, рд▓рд╣рд╛рди рдкреБрди: рд╡рд╛рдкрд░рддрд╛ рдпреЗрдгреНрдпрд╛рдЬреЛрдЧреНрдпрд╛ рдореЙрдбреНрдпреВрд▓реНрд╕ рдЕрд╕рд▓реЗрд▓реЗ рдЬреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪрд╛ рдПрдХ рд╕рдВрдЪ рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдШреЗрддрд╛рдд рдЖрдгрд┐ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрдЪ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдд;
- рдЙрджрд╛рд╣рд░рдгреЗ, рдЗрдВрдЯрд░рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреНрдпрд╛ рд╕рдВрдкреВрд░реНрдг рд╕рдВрдЪрд╛рдЪреА рдЙрджрд╛рд╣рд░рдгреЗ рдЕрд╕рд▓реЗрд▓реА.
рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдПрдХ Selectel API рдХреА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгрд╛рдВрд╕рд╣ рд╕реНрд╡рддрдГрд▓рд╛ рдкрд░рд┐рдЪрд┐рдд рдХрд░реВрди, рдЪрд▓рд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдгрд╛рдВрдХрдбреЗ рд╡рд│реВрдпрд╛.
рд╕реНрдерд╛рдирд┐рдХ рдбрд┐рд╕реНрдХрд╕рд╣ рд╕рд░реНрд╡реНрд╣рд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг
рдЪрд▓рд╛ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ рдпрд╛, рднреВрдорд┐рдХрд╛ рдЕрд╕рд▓реЗрд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЖрдгрд┐ рд╕реНрдерд╛рдирд┐рдХ рдбрд┐рд╕реНрдХрд╕рд╣ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди:
рдлрд╛рдИрд▓рдордзреНрдпреЗ 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")}"
}
рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рднрд┐рдиреНрди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛. рдХреА рдлрд╛рдИрд▓ рдкрде рдореНрд╣рдгреВрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА; рддреБрдореНрд╣реА рдореВрд▓реНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореНрд╣рдгреВрди рджреЗрдЦреАрд▓ рдЬреЛрдбреВ рд╢рдХрддрд╛.
рдкреБрдвреЗ рдпрд╛ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдореЙрдбреНрдпреВрд▓реНрд╕ рд▓рд╛рдБрдЪ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдкреНрд░рдХрд▓реНрдк_рд╡рд╛рдкрд░рдХрд░реНрддрд╛ ╨╕ рд╕рд░реНрд╡реНрд╣рд░_рд▓реЛрдХрд▓_рд░реВрдЯ_рдбрд┐рд╕реНрдХ, рдЬреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдд.
рдЪрд▓рд╛ рдпрд╛ рдореЙрдбреНрдпреВрд▓реНрд╕рдХрдбреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдкрд╛рд╣реВ.
рднреВрдорд┐рдХреЗрд╕рд╣ рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ
рдкреНрд░рдердо рдореЙрдбреНрдпреВрд▓ рдПрдХ рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рддреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рддреАрд▓ рднреВрдорд┐рдХрд╛ рдЕрд╕рд▓реЗрд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддрдпрд╛рд░ рдХрд░рддреЛ:
рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ 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
}
}
рдпреБрдХреНрддрд┐рд╡рд╛рдж рджреБрд░реНрд▓рдХреНрд╖_рдмрджрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрджрд▓рд╛рдВрдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ id рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрд╕рд╛рдареА. VPC рд╕реЗрд╡реЗрдордзреНрдпреЗ, рдмрд╣реБрддреЗрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рддрд┐рдорд╛ рдЖрдард╡рдбреНрдпрд╛рддреВрди рдПрдХрджрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдЪ рд╡реЗрд│реА рддреНрдпрд╛рдВрдЪреЗ id рджреЗрдЦреАрд▓ рдмрджрд▓рддреЗ. рд╣реЗ рдУрдкрдирд╕реНрдЯреЕрдХ рдШрдЯрдХ - рдЧреНрд▓рд╛рдиреНрд╕рдЪреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдореБрд│реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдШрдЯрдХ рдорд╛рдирд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд.
рдЬрд░ рддреБрдореНрд╣реА рд╡рд┐рджреНрдпрдорд╛рди рд╕рд░реНрд╡реНрд╣рд░ рдХрд┐рдВрд╡рд╛ рдбрд┐рд╕реНрдХ рддрдпрд╛рд░ рдХрд┐рдВрд╡рд╛ рд╕реБрдзрд╛рд░рд┐рдд рдХрд░рдд рдЕрд╕рд╛рд▓ рдЬреНрдпрд╛рдд рд╡рд╛рдж рдЖрд╣реЗ image_id рджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реЗ id рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рддрд┐рдорд╛, рдирдВрддрд░ рддреА рдкреНрд░рддрд┐рдорд╛ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдкреБрдиреНрд╣рд╛ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рдиреЗ рд╕рд░реНрд╡реНрд╣рд░ рдХрд┐рдВрд╡рд╛ рдбрд┐рд╕реНрдХ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рд╣реЛрдИрд▓. рдпреБрдХреНрддрд┐рд╡рд╛рдж рд╡рд╛рдкрд░рдгреЗ рджреБрд░реНрд▓рдХреНрд╖_рдмрджрд▓ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЕрд╢реА рдкрд░рд┐рд╕реНрдерд┐рддреА рдЯрд╛рд│рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
рдЯреАрдк: рдпреБрдХреНрддрд┐рд╡рд╛рдж рджреБрд░реНрд▓рдХреНрд╖_рдмрджрд▓ рдЯреЗрд░рд╛рдлреЙрд░реНрдордордзреНрдпреЗ рдЦреВрдк рдкреВрд░реНрд╡реА рджрд┐рд╕рд▓реЗ:
рдпреБрдХреНрддрд┐рд╡рд╛рдж ignore_resize_confirmation рд╕реНрдерд╛рдирд┐рдХ рдбрд┐рд╕реНрдХ, рдХреЛрд░ рдХрд┐рдВрд╡рд╛ рд╕рд░реНрд╡реНрд╣рд░ рдореЗрдорд░реА рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЕрд╕реЗ рдмрджрд▓ OpenStack Nova рдШрдЯрдХрд╛рджреНрд╡рд╛рд░реЗ рд╡рд┐рдирдВрддреА рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдХрд╛рд░ рдмрджрд▓реВ. рд╡рд┐рдирдВрддреАрдирдВрддрд░ рдбреАрдлреЙрд▓реНрдЯ рдиреЛрд╡реНрд╣рд╛ рдЖрдХрд╛рд░ рдмрджрд▓реВ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рд╕реНрдерд┐рддреАрдд рдареЗрд╡рддреЗ verify_resize рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдХрдбреВрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╖реНрдЯреАрдХрд░рдгрд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ. рддрдерд╛рдкрд┐, рд╣реЗ рд╡рд░реНрддрди рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреЗрдгреЗрдХрд░реБрди рдиреЛрд╡реНрд╣рд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдХрдбреВрди рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛рдВрдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдд рдирд╛рд╣реА.
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЯреЗрд░рд╛рдлреЙрд░реНрдорд▓рд╛ рд╕реНрдерд┐рддреАрдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ verify_resize рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдмрджрд▓рд▓реНрдпрд╛рдирдВрддрд░ рд╕рд░реНрд╡реНрд╣рд░ рд╕рдХреНрд░рд┐рдп рд╕реНрдерд┐рддреАрдд рдпреЗрдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рд░рд╣рд╛. рдпреБрдХреНрддрд┐рд╡рд╛рдж OpenStack Terraform рдкреНрд░рджрд╛рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреА 1.10.0 рд╡рд░реВрди рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ:
рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреЗ
рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ, рджреЛрди рднрд┐рдиреНрди рдкреНрд░рджрд╛рддреЗ рд▓рд╛рдБрдЪ рдХреЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ OpenStack рдкреНрд░рджрд╛рддрд╛ рд╕рд┐рд▓реЗрдХреНрдЯреЗрд▓ рдкреНрд░рджрд╛рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ, рдХрд╛рд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп, рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЕрд╢рдХреНрдп рдЖрд╣реЗ. . рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рддреНрдпрд╛рдЪ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рдЖрдореНрд╣реА рдлрдХреНрдд рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВ рд╢рдХрдд рдирд╛рд╣реА рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд▓рд╛рдЧреВ рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдЪреНрдпрд╛ рдЖрдд. рдЖрдкрдг рдкреНрд░рдердо рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЕрд░реНрдЬ рдореЙрдбреНрдпреВрд▓рд╕рд╛рдареА рдкреНрд░рдХрд▓реНрдк_рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░ рдЗрддрд░ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреАрдВрд╕рд╛рдареА.
рдЯреАрдк: рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдЕрджреНрдпрд╛рдк рдЯреЗрд░рд╛рдлреЙрд░реНрдордордзреНрдпреЗ рдирд┐рд░рд╛рдХрд░рдг рдЭрд╛рд▓реЗрд▓реЗ рдирд╛рд╣реА, рддреБрдореНрд╣реА рдпреЗрдереЗ Github рд╡рд░реАрд▓ рдЪрд░реНрдЪреЗрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░реВ рд╢рдХрддрд╛
рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдЬрд╛
$ ls
README.md main.tf vars.tf
рдЖрдореНрд╣реА рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рдореЙрдбреНрдпреВрд▓ рд╕реБрд░реВ рдХрд░рддреЛ:
$ terraform init
рдЖрдЙрдЯрдкреБрдЯ рджрд╛рдЦрд╡рддреЗ рдХреА Terraform рддреЗ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рджрд╛рддреНрдпрд╛рдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреНрдпрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдореЙрдбреНрдпреВрд▓ рддрдкрд╛рд╕рддреЗ.
рдкреНрд░рдердо рдореЙрдбреНрдпреВрд▓ рд▓рд╛рдЧреВ рдХрд░реВ рдкреНрд░рдХрд▓реНрдк_рд╡рд╛рдкрд░рдХрд░реНрддрд╛. рдпрд╛рд╕рд╛рдареА рд╕реЗрдЯ рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╛рдареА рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдореВрд▓реНрдпреЗ рдкрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:
- 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
рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рдирдВрддрд░, рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреЛрдгрддреА рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЖрд╣реЗ рддреЗ рджрд░реНрд╢рд╡реЗрд▓ рдЖрдгрд┐ рдкреБрд╖реНрдЯреАрдХрд░рдгрд╛рд╕рд╛рдареА рд╡рд┐рдЪрд╛рд░реЗрд▓:
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 рдкрддреНрддреНрдпрд╛рд╕рд╣ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдЖрдЙрдЯрдкреБрдЯрдХрдбреЗ рд▓рдХреНрд╖ рджреНрдпрд╛ рдЬреЗрдереЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓рд╛ рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЕрд╕реЗрд▓:
module.server_local_root_disk.openstack_networking_floatingip_associate_v2.association_1: Creating...
floating_ip: "" => "x.x.x.x"
рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ IP рд╡рд╛рдкрд░реВрди SSH рджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╕рд╣ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддрд╛.
рд╕рдВрд╕рд╛рдзрдиреЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреЗ
рдЯреЗрд░рд╛рдлреЙрд░реНрдорджреНрд╡рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рддреЗ рд╕реБрдзрд╛рд░рд┐рдд рджреЗрдЦреАрд▓ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреА рдореВрд▓реНрдпреЗ рдмрджрд▓реВрди рдЖрдкрд▓реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдХреЛрд░ рдЖрдгрд┐ рдореЗрдорд░реАрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдврд╡реВ. рд╕рд░реНрд╡реНрд╣рд░_рд╡реНрд╣реАрд╕реАрдкрд╕ ╨╕ рд╕рд░реНрд╡реНрд╣рд░_рд░рд╛рдо_рдПрдордмреА рдлрд╛рдЗрд▓ рдордзреНрдпреЗ рдЙрджрд╛рд╣рд░рдгреЗ/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
рдкрд░рд┐рдгрд╛рдореА, рдЯреЗрд░рд╛рдлреЙрд░реНрдордиреЗ рд╕рдВрд╕рд╛рдзрди рдмрджрд▓рд▓реЗ openstack_compute_instance_v2 ╨╕ openstack_compute_flavor_v2.
рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рд╣реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рд░реАрдмреВрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдирд╡реАрди рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХрдорд╛рдВрдб рд╡рд╛рдкрд░рд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд▓рд╛рдЧреВ, рдЬреЗ рдЖрдореНрд╣реА рдЖрдзреАрдЪ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЖрд╣реЗ.
рдордзреНрдпреЗ рд╕рд░реНрд╡ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓
рдЖрдордЪреНрдпрд╛ рдордзреНрдпреЗ
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг
рдкреБрдвреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдХрдбреЗ рдЬрд╛рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдЖрдореНрд╣реА рдкреВрд░реНрд╡реА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рд╕рдВрд╕рд╛рдзрдиреЗ рд╕рд╛рдл рдХрд░реВ. рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдореБрд│рд╛рд╢реА рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА
$ 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
рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЖрд╣реЗ
рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддрдпрд╛рд░ рдХрд░рддреЗ, рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рднреВрдорд┐рдХрд╛ рдЕрд╕рд▓реЗрд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЖрдгрд┐ рдПрдХ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рдврд╡рддреЛ. рдлрд╛рдИрд▓рдордзреНрдпреЗ vars.tf рддреБрдореНрд╣реА рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдЬрд╕реЗ рдХреА рдиреЛрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛, рддреНрдпрд╛рдВрдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЖрд╡реГрддреНрддреА рдЗ.
рдкрд╣рд┐рд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рд░реНрд╡ рдкреНрд░рдердо рдЖрдкрдг рдореЙрдбреНрдпреВрд▓ рд╕реБрд░реВ рдХрд░реВ рдЖрдгрд┐ рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░реВ рдкреНрд░рдХрд▓реНрдк_рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдЖрдгрд┐ рдирдВрддрд░ рд╕рд░реНрд╡ рдХрд╛рд╣реА рддрдпрд╛рд░ рдХрд░рд╛:
$ 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 рдХреНрд▓рд╕реНрдЯрд░реНрд╕рдЪреА рдирд┐рд░реНрдорд┐рддреА рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реВ. рдЖрдордЪреНрдпрд╛рдкреИрдХреА рдПрдХрд╛рдордзреНрдпреЗ рдХреНрд▓рд╕реНрдЯрд░рд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреЗрдК рд╢рдХрддрд╛
рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдбрд┐рд╕реНрдХ рдЖрдгрд┐ рдЖрднрд╛рд╕реА рдорд╢реАрди рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓ рдЖрдгрд┐ рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓. рддрдпрд╛рд░реАрд▓рд╛ рд╕реБрдорд╛рд░реЗ 4 рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрддрд╛рдд, рддреНрдпрд╛ рджрд░рдореНрдпрд╛рди рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдЦрд╛рд▓реАрд▓ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
рдПрдХрджрд╛ рдЗрдиреНрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рд╕реВрдЪрд┐рдд рдХрд░реЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рдЖрдпрдбреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Creation complete after 4m20s (ID: 3c8...)
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
рдпреБрдЯрд┐рд▓рд┐рдЯреАрджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА kubectl рддреБрдореНрд╣рд╛рд▓рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдНрдХреНрд╕реЗрд╕ рдлрд╛рдЗрд▓ рдорд┐рд│рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдордЪреНрдпрд╛ рдЦрд╛рддреНрдпрд╛рддреАрд▓ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреНрдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдЯреЗрд░рд╛рдлреЙрд░реНрдорджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд╡рд░ рдЬрд╛:
рдкреБрдвреЗ, рд╕рд╛рд░рдЦреНрдпрд╛ рд▓рд┐рдВрдХрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛
рд▓реЙрдЧрд┐рди рдорд╛рд╣рд┐рддреАрд╕рд╛рдареА, рддреБрдореНрд╣реА рдЯреЗрд░рд╛рдлреЙрд░реНрдорджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡ рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд╡рд╛рдкрд░рд╛. рдЖрдкрдг рдлрд╕рд╡рдгреВрдХ рдХреЗрд▓реА рдирд╕реЗрд▓ рддрд░ vars.tf рдХрд┐рдВрд╡рд╛ main.tf рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рд╕рд╛рдареА, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреЗ рдирд╛рд╡ рдЕрд╕реЗрд▓ tf_user. рддреБрдореНрд╣реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреЗ рдореВрд▓реНрдп рдкрд╛рд╕рд╡рд░реНрдб рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд╛рд╡реЗ TF_VAR_user_password, рдЬреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рд╣реЛрддреЗ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд▓рд╛рдЧреВ рдкреВрд░реНрд╡реА.
рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдЖрдд рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЯреЕрдмрд╡рд░ рдЬрд╛рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕:
рдЯреЗрд░рд╛рдлреЙрд░реНрдорджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдпреЗрдереЗ рдЖрд╣реЗ. рд╕рд╛рдареА рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ kubectl рдЖрдкрдг "рдкреНрд░рд╡реЗрд╢" рдЯреЕрдмрд╡рд░ рдХрд░реВ рд╢рдХрддрд╛:
рдЗрдиреНрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реВрдЪрдирд╛ рддреНрдпрд╛рдЪ рдЯреЕрдмрд╡рд░ рдЖрд╣реЗрдд. 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
рдЯреЗрд░рд╛рдлреЙрд░реНрдорджреНрд╡рд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рд╕рд╣рдЬрдкрдгреЗ рдмрджрд▓рддрд╛ рдпреЗрддреЗ.
рдлрд╛рдИрд▓рдордзреНрдпреЗ 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
рдмрджрд▓ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкрд╣рд┐рд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗ, рдХрдорд╛рдВрдб рд╡рд╛рдкрд░рд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд▓рд╛рдЧреВ:
$ env
TF_VAR_sel_account=SEL_ACCOUNT
TF_VAR_sel_token=SEL_TOKEN
TF_VAR_user_password=USER_PASSWORD
terraform apply
рдЬреЗрд╡реНрд╣рд╛ рдиреЛрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓рддреЗ, рддреЗрд╡реНрд╣рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЙрдкрд▓рдмреНрдз рд░рд╛рд╣реАрд▓. 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
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╛ рд▓реЗрдЦрд╛рдд рдЖрдореНрд╣реА рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдореБрдЦреНрдп рдорд╛рд░реНрдЧрд╛рдВрд╢реА рдкрд░рд┐рдЪрд┐рдд рдЭрд╛рд▓реЛ
Selectel Terraform рдкреНрд░рджрд╛рддреНрдпрд╛рдордзреНрдпреЗ рдЖрдврд│рд▓реЗрд▓реЗ рдХреЛрдгрддреЗрд╣реА рдмрдЧ рджреНрд╡рд╛рд░реЗ рдиреЛрдВрджрд╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд
рд╕реНрддреНрд░реЛрдд: www.habr.com