แแ แกแขแแขแแแจแ แฉแแแ แแแแแแฎแแแแแ แ แแกแแแ แจแแแแแแ Terraform แแ แแกแแแ แแแแแแแแ แแแแฃแจแแแ แฉแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แ
แงแแแแแคแ แแก แจแแกแแฎแแ แแแขแแแฃแ แแ แแ แกแแ แแขแแแแ:
-
แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แจแแฅแแแ -
แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแชแแแแแแแชแแ
1. Terraform - แแฆแฌแแ แ, แฃแแแ แแขแแกแแแแแ แแ แแแแแแแแแขแแแ
Terraform แแ แแก IaC (Infrastructure-as-Code) แแแกแขแ แฃแแแแขแ แแแ แขแฃแแแฃแ แ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แจแแกแแฅแแแแแแ แแ แแแ แแแแกแแแแก แแแแแก แแแแแงแแแแแแ.
แฉแแแ แแฆแแแแจแแแ แ แแแแแแแแ แฃแแแ แแขแแกแแแ แแแกแขแ แฃแแแแขแแแ แแฃแจแแแแแกแแก:
-
แแฎแแแ แแแแฏแแ แแแแแก แแแแแแแแแแก แกแแฉแฅแแ แ (แแแ แแแแฃแแ แแแ แขแฃแแแฃแ แ แแแ แแแ). แ แแแแ แช แฌแแกแ, แ แแช แฃแคแ แ แแแขแ แแฎแแแ แแแแแแขแแ, แแแ แแแขแ โแแแฌแแแแฃแแแแโ แกแญแแ แแแแ แขแแฅแแแแฃแ แ แแแฎแแแ แแแแก แแแ แกแแแแแก แแฎแแแ แ แแกแฃแ แกแแแแก แแแแแกแแฅแแแงแแแแแแ. Terraform-แแ แแแแฎแแแ แแแแแแก แจแแฃแซแแแแ แจแแชแแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แแแ แแแแขแ แแแ (แแแแแแแแแ, OS-แแก แแแขแแแแขแฃแ แแ แแแแแ แแแ แแ แแแ แขแฃแแแฃแ แ แแแกแแแก แแแแแงแแคแแก แแแแ แแ) แขแแฅแแแแฃแ แ แแฎแแ แแแญแแ แแก แแ แแแแแ แแแแ แแขแแก แแแแแ แแแแก แแแ แแจแ.
-
แแฅแขแแแแชแแแก แแแแแแก แแงแแกแแแ แ แแแแแแแฌแแแแ แแฎแแแ แแแแแแแ แ. แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแก แแฆแฌแแ แแแแแแก แแแแแงแแแแแแ แฉแแแ แจแแแแแซแแแ แแแฃแงแแแแแแแแ แจแแแแแแฌแแแ แ แ แแแแแแขแแแ แแ แ แ แแแแแแแแแแ แแแแ, แแกแแแ แ แ แกแแแแแแ แแแแแแแ แแแแแจแ แแฅแแแแ แแกแ แแฃ แแก แแแ แขแฃแแแฃแ แ แแแแฅแแแ แแ แแแ แขแฃแแแฃแ แ แฅแกแแแ แแแ แขแฃแแแฃแ แแแแฅแแแแแแแ แแแแจแแ แแแแ.
-
แงแแแแแแ แแแแฃแแแ แฃแแ แฆแ แฃแแแแแแแ แแแแขแคแแ แแแแแก แแฆแฌแแ แแก แฃแแแ แ. แจแแแแซแแแแ แแแแแแงแแแแ แแแกแขแ แฃแแแแขแ Amazon-แแแ แแ Google Cloud-แแแ, VMware vCloud Director-แแ แแแคแฃแซแแแแฃแ แแแ แซแ แแแแขแคแแ แแแแแแแ, แ แแแแแแช แแแแแแแแแ แกแแ แแแกแแแก IaaS, SaaS แแ PaaS แแแแแฌแงแแแขแแแแแแแแก แคแแ แแแแแจแ.
-
แแแ แแแ แแ แแแแแ แฆแ แฃแแแแแแแ แแ แแแแแแแ แ แแ แแแแแแฌแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แ แแแ แจแแ แแก แจแแชแแแแแแแก แขแแแแ แแแขแแแแก แแแกแแฃแแฏแแแแกแแแแแ, แแ แแ แแแแคแแแฃแ แแชแแแก แแแแแงแแแแแแ แฆแ แฃแแแแก แ แแกแฃแ แกแแแแก แจแแกแแฅแแแแแแ, แแแแแแแกแขแแแแกแ แแ แแแ แแแแกแแแแก.
-
แแแกแแฎแแ แฎแแแแแ แแแแแงแแแแแ แแแแ แกแขแแแแแแแก แจแแกแแฅแแแแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แขแแกแขแแ แแแแกแ แแ แแแแแ แแแแกแแแแก. แแฅแแแ แจแแแแซแแแแ แจแแฅแแแแ แแ แแแแแแขแแแแ แกแขแแแแแแ แขแแกแขแแ แแแแก แแแแงแแคแแแแแแกแแแแก, แจแแแแแฌแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แกแฎแแแแแกแฎแแ แแแ แแแแจแ แแแ แแแแแฃแ แแ แแ แแงแแกแแแ แแ แจแแชแแแแแ แแ แฌแแจแแแแ แ แแกแฃแ แกแแแ แแฎแแแแ แแ แแ แ แแกแฃแ แกแแก แแแแแแก แแแแแแก แจแแฅแแแแ.
"แขแแ แแ แแฃแแ" Terraform
แฉแแแ แแแแแแ แแแกแแฃแแ แแ แฎแแแกแแฌแงแแก แฃแแแ แแขแแกแแแแแแ, แแฎแแ แแแแแ แแแแงแแ แแแ แแแก แแแแแแแแแขแแแแ
แแ แแแแแแแ แแแ.
Terraform-แจแ แแแแฅแแแก แแแแแกแแแแ แ แขแแแแก แแแคแ แแกแขแ แฃแฅแขแฃแ แ แจแแแซแแแแ แแงแแก แฌแแ แแแแแแแแแ แ แแแแ แช แ แแกแฃแ แกแ. แ แแกแฃแ แกแแแกแ แแ API แแแแขแคแแ แแแก แจแแ แแก แแแแจแแ แ แฃแแ แฃแแแแแงแแคแแแแ แแ แแแแแแแ แแก แแแแฃแแแแแ, แ แแแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แจแแฅแแแแ แ แแกแฃแ แกแแแ แแแแแ แแขแฃแ แแแแขแคแแ แแแจแ, แแแแแแแแแ, Azure แแ VMware vCloud Director.
แ แแแแ แช แแ แแแฅแขแแก แแแฌแแแ, แจแแแแซแแแแ แกแฎแแแแแกแฎแแ แแ แแแแแแแ แแแ แฃแ แแแแ แแแแ แกแฎแแแแแกแฎแแ แแแแขแคแแ แแแแ.
แ แแกแฃแ แกแแแ (แ แแกแฃแ แกแแแแก แแฆแฌแแ แ).
แ แแกแฃแ แกแแแแก แแฆแฌแแ แ แกแแจแฃแแแแแแก แแแซแแแแ แแแ แแแ แแแแขแคแแ แแแก แแแแแแแแแขแแแ, แ แแแแ แแชแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแ แแ แฅแกแแแแแ.
แแฅแแแ แจแแแแซแแแแ แแแแแ แจแแฅแแแแ แ แแกแฃแ แกแแก แแฆแฌแแ แ VMware vCloud Director-แแก แแ แแแแแแแ แแกแแแแก แแ แแแแแแงแแแแ แแก แแฆแฌแแ แ แ แแกแฃแ แกแแแแก แจแแกแแฅแแแแแแ แแแแแกแแแแ แ แฐแแกแขแแแแแก แแ แแแแแแแ แแแ, แ แแแแแแช แแงแแแแแก vCloud Director-แก. แแฅแแแ แแฎแแแแ แฃแแแ แจแแชแแแแแ แแแขแแ แแแแชแแแก แแแ แแแแขแ แแแ แแ แฅแกแแแแก แแแแจแแ แแก แแแ แแแแขแ แแแ แกแแญแแ แ แฐแแกแขแแแแแก แแ แแแแแแแ แแแ
แแ แแแแแแแ แแแ.
แแก แแแแแแแแแขแ แจแแกแแซแแแแแแก แฎแแแก แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแก แจแแฅแแแแก แจแแแแแ แแแแ แแชแแแแแก แจแแกแ แฃแแแแแก แแแแ แแชแแฃแแ แกแแกแขแแแแก แกแแฌแงแแกแ แแแกแขแแแแชแแแกแ แแ แจแแแแ แฉแฃแแแแแกแแแแก. แแแก แจแแแแแ แ แแช แจแแฅแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แ แแกแฃแ แกแก, แจแแแแซแแแแ แแแแแแงแแแแ แแ แแแแแแแ แแแ SSH-แแก แกแแจแฃแแแแแแ แแแแคแแแฃแ แแชแแแกแแแแก แแ แแแกแแแแแจแแ แแแแแ, แแแแ แแชแแฃแแ แกแแกแขแแแแก แแแแแฎแแแแแกแแแแก แแ แกแแ แแแขแแก แฉแแแแขแแแ แแแแกแ แแ แแแกแแจแแแแแ.
แจแแงแแแแแก แแ แแแแแแแแแแ แชแแแแแแแ.
แจแแงแแแแแก แชแแแแแแแ - แจแแงแแแแแก แชแแแแแแแ แแแแแกแแแแ แ แขแแแแก แแแแแแกแแแแก.
แแแแแแแแแแ แชแแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แจแแแแแฎแแ แแแแจแแแแแแแแแ แ แแกแฃแ แกแแแแก แจแแฅแแแแก แจแแแแแ แแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก, แ แแแแ แช แจแแงแแแแแก แชแแแแแแแ แกแฎแแ แแแแฃแแแแจแ, แแแแแแแแแ, Provisioners แแแแแจแ.
แจแขแแขแแแ.
แจแขแแขแแแแก แคแแแแแแ แแแแฎแแแก แแแคแแ แแแชแแแก แแ แแแแแแแ แแก แแแแขแคแแ แแแก แ แแกแฃแ แกแแแแก แแแแคแแแฃแ แแชแแแก แจแแกแแฎแแ. แ แแแแกแแช แแแแขแคแแ แแ แแแ แแแแแ แแฅแแแแแ, แแ แแ แแก แแแคแแ แแแชแแ แ แแกแฃแ แกแแแแก แจแแกแแฎแแ แแ แ แแแแ แแแแ แแชแแแก แแแฌแงแแแแแแ Terraform แแแฎแแแแก แแแแแแแ แแแแแก แฃแแแ แแฆแฌแแ แแแ แ แแกแฃแ แกแแแแก แ แแแแฃแ แ แแแคแ แแกแขแ แฃแฅแขแฃแ แแ.
แกแแฎแแแแฌแแคแแแแแก แแแแแแ แ แแแแแแแ แจแแแแแฎแแ แฃแแแ แจแแฅแแแแแ แ แแกแฃแ แกแแแแก แ แแแแแแแแ แแแแแฅแขแ, แ แแแ แจแแแแแแ แแ แแแแแขแแแฃแแ แ แแกแฃแ แกแแแแกแ แแ แแแแแฅแขแแแแก แแแแคแแแฃแ แแชแแ, แ แแแ แแแแแแแ แแฅแแแก แแชแแแแแฃแแ แแแแขแคแแ แแแก แแแแแแแ แแแแแ แจแแฅแแแ แแ แชแแแแแแแแแ.
แแแแฃแแแกแฎแแแแแ, แกแแฎแแแแฌแแคแ แแแคแแ แแแชแแ แแแแฎแแแ แแแแแแแแ แแ แคแแแแจแ terraform.tfstate, แแแแ แแ แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, แจแแกแแซแแแแแแแ แแฃแแแฃแ แ แแฃแจแแแแแกแแแแก แแแกแขแแแชแแฃแ แ แจแแแแฎแแแก แแแแแงแแแแแ.
แแฅแแแ แแกแแแ แจแแแแซแแแแ แแแแแ แขแแ แแ แแแแแแแแ แ แแแแขแคแแ แแแก แ แแกแฃแ แกแแแ แกแแฎแแแแฌแแคแแจแ, แ แแแ แจแแแแแแแจแ แแแแฅแแแแแ แกแฎแแ แ แแกแฃแ แกแแแแแ, แ แแแแแแแช แแแแแก แแฎแ แแ แจแแแฅแแแ Terraform-แแก แแแฎแแแ แแแแก แแแ แแจแ.
2. แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แจแแฅแแแ
แแแแแแแแแขแแแ แแแแแแแแฃแแแ, แแฎแแ Terraform-แแก แแแแแงแแแแแแ แฉแแแ แแแแแแแแ แจแแแฅแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แกแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแ. แแแ แแแแ แแแงแแแแแฃแแ nginx แแ แแฅแกแ แกแแ แแแ แแ, แแแแ แ แคแแแแแแแก แจแแแแฎแแแ Nextcloud-แแ แแแคแฃแซแแแแฃแแ แแ แแแกแแแ CMS Bitrix-แแ.
แฉแแแ แแแแฌแแ แ แแแแก แแ แจแแแแกแ แฃแแแแ แแแก แฉแแแแ แแแแแแแแแก แแแแแงแแแแแแ
แแแ แแแแ, แแแแแ แจแแแฅแแแแ แแแ แแฅแขแแ แแ แฉแแแแ แแฎแแแ แแ แแแฅแขแแกแแแแก, แ แแแแแจแแช แแแแแแแกแแแแ แคแแแแแแ, แ แแแแแแแช แแฆแฌแแ แก แแแคแ แแกแขแ แฃแฅแขแฃแ แแก.
mkdir project01
แจแแแแแแ, แฉแแแ แแฆแแฌแแ แ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแแแแแขแแแก. Terraform แฅแแแแก แฃแ แแแแ แแแแแแก แแ แแแฃแจแแแแแก แคแแแแแแก แคแแแแแแแก แแฆแฌแแ แแแแแแก แกแแคแฃแซแแแแแ. แแแแแ แคแแแแแแแก แแแกแแฎแแแแแ แจแแกแแซแแแแแแแ แแฆแฌแแ แแแ แแแแแแแแก แแแแแแแแ แแแแแแแแแแ แ, แแแแแแแแแ, network.tf - แแฆแฌแแ แก แฅแกแแแแก แแแ แแแแขแ แแแก แแแคแ แแกแขแ แฃแฅแขแฃแ แแกแแแแก.
แฉแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแแแแแขแแแแก แแฆแกแแฌแแ แแ แฉแแแ แจแแแฅแแแแแ แจแแแแแแ แคแแแแแแ:
แคแแแแแแแก แกแแ.
main.tf - แแแ แขแฃแแแฃแ แ แแแ แแแแก แแแ แแแแขแ แแแแก แแฆแฌแแ แ - แแแ แขแฃแแแฃแ แ แแแแฅแแแแแ, แแแ แขแฃแแแฃแ แ แแแแขแแแแแ แแแ;
network.tf - แแแ แขแฃแแแฃแ แ แฅแกแแแแก แแแ แแแแขแ แแแแก แแ NAT แแ Firewall แฌแแกแแแแก แแฆแฌแแ แ;
variables.tf - แชแแแแแแแแก แกแแ, แ แแแแแแกแแช แแแงแแแแแ;
vcd.tfvars - แแ แแแฅแขแแก แชแแแแแ แแแแจแแแแแแแแแ VMware vCloud Director แแแแฃแแแกแแแแก.
แแแแคแแแฃแ แแชแแแก แแแ Terraform-แจแ แแ แแก แแแแแแ แแชแแฃแแ แแ แแแแแแแแก แแแแแแแแแแ แแแแก แแแแจแแแแแแแ แแ แแฅแแก, แแแ แแ แแ แแแแแแแ แแก แแแแแแแแกแ, แ แแแแแ แแ แแแแแจแ แฉแแแ แแฆแแฌแแ แ แแ แซแแแแแแแก, แ แแแแแแแช แฃแแแ แจแแกแ แฃแแแแก แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแแแแแแกแแก แแ แแกแแแ แจแแกแ แฃแแแแแ แแแแแแแแแแ แแแแ.
แแแแแแก แกแขแ แฃแฅแขแฃแ แ.
<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
# Block body
<IDENTIFIER> = <EXPRESSION> # Argument
}
แแแแแแแแก แแฆแฌแแ แแกแแแแก แแแแแแงแแแแแ แแแกแ แกแแแฃแแแ แ แแ แแแ แแแแ แแแแก แแแ HCL (HashiCorp Configuration Language); แจแแกแแซแแแแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแฆแฌแแ แ JSON-แแก แแแแแงแแแแแแ. แจแแแแซแแแแ แแแขแ แแแแแแ แกแแแขแแฅแกแแก แจแแกแแฎแแ
แแแ แแแแก แชแแแแแแก แแแแคแแแฃแ แแชแแ, variables.tf แแ vcd.tfvars
แแแ แแแแ, แแแแแ แจแแแฅแแแแ แแ แ แคแแแแ, แ แแแแแแช แแฆแฌแแ แก แงแแแแ แแแแแงแแแแแฃแแ แชแแแแแแก แฉแแแแแแแแแแก แแ แแแ แแแแจแแแแแแแแแก VMware vCloud Director แแแแฃแแแกแแแแก. แฏแแ แจแแแฅแแแแ variables.tf แคแแแแ.
variables.tf แคแแแแแก แจแแแแแแกแ.
variable "vcd_org_user" {
description = "vCD Tenant User"
}
variable "vcd_org_password" {
description = "vCD Tenant Password"
}
variable "vcd_org" {
description = "vCD Tenant Org"
}
variable "vcd_org_vdc" {
description = "vCD Tenant VDC"
}
variable "vcd_org_url" {
description = "vCD Tenant URL"
}
variable "vcd_org_max_retry_timeout" {
default = "60"
}
variable "vcd_org_allow_unverified_ssl" {
default = "true"
}
variable "vcd_org_edge_name" {
description = "vCD edge name"
}
variable "vcd_org_catalog" {
description = "vCD public catalog"
}
variable "vcd_template_os_centos7" {
description = "OS CentOS 7"
default = "CentOS7"
}
variable "vcd_org_ssd_sp" {
description = "Storage Policies"
default = "Gold Storage Policy"
}
variable "vcd_org_hdd_sp" {
description = "Storage Policies"
default = "Bronze Storage Policy"
}
variable "vcd_edge_local_subnet" {
description = "Organization Network Subnet"
}
variable "vcd_edge_external_ip" {
description = "External public IP"
}
variable "vcd_edge_local_ip_nginx" {}
variable "vcd_edge_local_ip_bitrix" {}
variable "vcd_edge_local_ip_nextcloud" {}
variable "vcd_edge_external_network" {}
แชแแแแแ แแแแจแแแแแแแแแ, แ แแแแแแกแแช แแแฆแแแ แแ แแแแแแแ แแกแแแ.
-
vcd_org_user โ แแแแฎแแแ แแแแแก แกแแฎแแแ แแ แแแแแแแชแแแก แแแแแแแกแขแ แแขแแ แแก แฃแคแแแแแแแ,
-
vcd_org_password โ แแแแฎแแแ แแแแแก แแแ แแแ,
-
vcd_org - แแ แแแแแแแชแแแก แกแแฎแแแ,
-
vcd_org_vdc โ แแแ แขแฃแแแฃแ แ แแแแแชแแแแ แชแแแขแ แแก แกแแฎแแแ,
-
vcd_org_url - API URL,
-
vcd_org_edge_name โ แแแ แขแฃแแแฃแ แ แ แแฃแขแแ แแก แกแแฎแแแ,
-
vcd_org_catalog โ แแแ แแฅแขแแ แแแก แกแแฎแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแก แจแแแแแแแแแ,
-
vcd_edge_external_ip โ แกแแฏแแ แ IP แแแกแแแแ แแ,
-
vcd_edge_external_network โ แแแ แ แฅแกแแแแก แกแแฎแแแ,
-
vcd_org_hdd_sp โ HDD แจแแแแฎแแแก แแแแแขแแแแก แกแแฎแแแ,
-
vcd_org_ssd_sp โ SSD แจแแแแฎแแแก แแแแแขแแแแก แกแแฎแแแ.
แแ แจแแแงแแแแแ แฉแแแแ แชแแแแแแแ:
-
vcd_edge_local_ip_nginx โ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก IP แแแกแแแแ แแ NGINX-แแ,
-
vcd_edge_local_ip_bitrix - แแแ แขแฃแแแฃแ แ แแแแฅแแแแก IP แแแกแแแแ แแ 1C-แแ: Bitrix,
-
vcd_edge_local_ip_nextcloud โ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก IP แแแกแแแแ แแ Nextcloud-แแ.
แแแแ แ แคแแแแแ แฉแแแ แแฅแแแแ แแ แแแแฃแกแขแแแ แชแแแแแแแก VMware vCloud Director แแแแฃแแแกแแแแก vcd.tfvars แคแแแแจแ: แจแแแแฎแกแแแแแ, แ แแ แฉแแแแก แแแแแแแแจแ แแแงแแแแแ
vcd.tfvars แคแแแแแก แจแแแแแแกแ.
vcd_org_url = "https://vcloud.mclouds.ru/api"
vcd_org_user = "orgadmin"
vcd_org_password = "*"
vcd = "org"
vcd_org_vdc = "orgvdc"
vcd_org_maxretry_timeout = 60
vcd_org_allow_unverified_ssl = true
vcd_org_catalog = "Templates"
vcd_templateos_centos7 = "CentOS7"
vcd_org_ssd_sp = "Gold Storage Policy"
vcd_org_hdd_sp = "Bronze Storage Policy"
vcd_org_edge_name = "MCLOUDS-EDGE"
vcd_edge_external_ip = "185.17.66.1"
vcd_edge_local_subnet = "192.168.110.0/24"
vcd_edge_local_ip_nginx = "192.168.110.1"
vcd_edge_local_ip_bitrix = "192.168.110.10"
vcd_edge_local_ip_nextcloud = "192.168.110.11"
vcd_edge_external_network = "NET-185-17-66-0"
แฅแกแแแแก แแแแคแแแฃแ แแชแแ, network.tf.
แแแ แแแแก แชแแแแแแแ แแแงแแแแแฃแแแ, แแฎแแ แฉแแแ แแแแแงแแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แแแแแแจแแ แแแแก แกแฅแแแแก - แแแแแแแญแแแ แแแ แซแ IP แแแกแแแแ แแก แแแแแแฃแ แแแ แขแฃแแแฃแ แแแแฅแแแแก แแ แแแแแแแงแแแแแ Destination NAT-แก แแแ แขแแแแก แแแ แ แฅแกแแแจแ แแแแแกแแขแแแแ. แแแ แแแแก แแแ แขแแแแ แฌแแแแแแก แจแแกแแแฆแฃแแแ, แฉแแแ แแแแแงแแแแแ แฌแแแแแแก แแฎแแแแ แฉแแแแ IP แแแกแแแแ แแแกแแแแก.
แแแแแแแแ แแแแก Terraform แแแแขแคแแ แแแก แฅแกแแแแก แแแแแ แแแ
แฉแแแ แแฅแแแแ แแแ แขแฃแแแฃแ แแ แแแแแแแชแแฃแ แฅแกแแแก แกแแฎแแแฌแแแแแแ net_lan01, แแแแฃแแแกแฎแแแแ แแแ แแแญแ: 192.168.110.254 แแ แแกแแแ แแแกแแแแ แแแก แกแแแ แชแแ: 192.168.110.0/24.
แฉแแแ แแฆแแฌแแ แ แแแ แขแฃแแแฃแ แฅแกแแแก.
resource "vcd_network_routed" "net" {
name = "net_lan01"
edge_gateway = var.vcd_org_edge_name
gateway = "192.168.110.254"
dns1 = "1.1.1.1"
dns2 = "8.8.8.8"
static_ip_pool {
start_address = "192.168.110.1"
end_address = "192.168.110.253"
}
}
แแแแแ แจแแแฅแแแแ Firewall-แแก แฌแแกแแแ, แ แแแแแแแช แแแ แขแฃแแแฃแ แแแแฅแแแแแก แแแขแแ แแแขแจแ แฌแแแแแแก แกแแจแฃแแแแแแก แแซแแแแก. แแ แแแแแแก แคแแ แแแแแจแ แฆแ แฃแแแแจแ แแ แกแแแฃแ แงแแแแ แแแ แขแฃแแแฃแ แ แแกแฃแ แกแก แแฅแแแแ แฌแแแแแ แแแขแแ แแแขแแ:
แฉแแแ แแฆแฌแแ แก VM แแแขแแ แแแขแจแ แฌแแแแแแก แฌแแกแแแก.
resource "vcd_nsxv_firewall_rule" "fw_internet_access" {
edge_gateway = var.vcdorgedgename
name = "Internet Access"
source {
gateway_interfaces = ["internal"]
}
destination {
gateway_interfaces = ["external"]
}
service {
protocol = "any"
}
depends_on = [vcdnetworkrouted.net]
}
แแแแแแแแแแฃแแแแแก แแแแแแแแก แจแแแแแ, แ แแ vcdnetworkrouted.net แแแแแแก แแแแฃแจแแแแแแก แจแแแแแ, แฉแแแ แแแแ แซแแแแแ vcdnsxvfirewallrule แแแแแแก แแแแคแแแฃแ แแชแแแก., แแแแแงแแแแแแ แแแแแแแแแแฃแแแ. แฉแแแ แแแงแแแแแ แแ แแแ แแแแขแ แก, แ แแแแแ แแแแแแ แแ แแแแแแแแแแฃแแแแแก แแฆแแแ แแแ แจแแกแแซแแแแแแแ แแแแคแแแฃแ แแชแแแจแ.
แจแแแแแแ, แฉแแแ แจแแแฅแแแแ แฌแแกแแแก, แ แแแแแแแช แกแแจแฃแแแแแแก แแแกแชแแแก แแแ แขแแแแ แฌแแแแแแก แแแ แ แฅแกแแแแแแ แแ แแแแฃแแแแแแ แฉแแแแก IP แแแกแแแแ แแก SSH-แแก แกแแจแฃแแแแแแ แกแแ แแแ แแแแแ แแแกแแแแแจแแ แแแแแ. แแแขแแ แแแขแแก แแแแแกแแแแ แแแแฎแแแ แแแแแก แแฅแแก แฌแแแแแ แแแ แกแแ แแแ แแ 80 แแ 443 แแแ แขแแแแ, แฎแแแ 90.1.15.1 IP แแแกแแแแ แแแก แแฅแแแ แแแแฎแแแ แแแแแก แแฅแแก แฌแแแแแ แแแ แขแฃแแแฃแ แ แกแแ แแแ แแแแก SSH แแแ แขแแแแ.
แแแฃแจแแแ แแแ แขแแแแ แฌแแแแแ แแแ แ แฅแกแแแแแแ.
resource "vcd_nsxv_firewall_rule" "fwnatports" {
edge_gateway = var.vcd_org_edge_name
name = "HTTPs Access"
source {
gateway_interfaces = ["external"]
}
destination {
gateway_interfaces = ["internal"]
}
service {
protocol = "tcp"
port = "80"
}
service {
protocol = "tcp"
port = "443"
}
depends_on = [vcd_network_routed.net]
}
resource "vcd_nsxv_firewall_rule" "fw_nat_admin_ports" {
edge_gateway = var.vcd_org_edge_name
name = "Admin Access"
source {
ip_addresses = [ "90.1.15.1" ]
}
destination {
gateway_interfaces = ["internal"]
}
service {
protocol = "tcp"
port = "58301"
}
service {
protocol = "tcp"
port = "58302"
}
service {
protocol = "tcp"
port = "58303"
}
depends_on = [vcd_network_routed.net]
}
แฉแแแ แแฅแแแแ Source NAT แฌแแกแแแก แแแขแแ แแแขแจแ แฌแแแแแแกแแแแก แฆแ แฃแแแแแแแ แแแแแแฃแ แ แฅแกแแแแแแ:
แฉแแแ แแฆแแฌแแ แ Source NAT แฌแแกแแแก.
resource "vcd_nsxv_snat" "snat_local" {
edge_gateway = var.vcd_org_edge_name
network_type = "ext"
network_name = var.vcdedgeexternalnetwork
original_address = var.vcd_edge_local_subnet
translated_address = var.vcd_edge_external_ip
depends_on = [vcd_network_routed.net]
}
แแ แฅแกแแแแก แแแแแแก แแแแคแแแฃแ แแชแแแก แแแกแแกแ แฃแแแแแแ, แฉแแแ แแแแแแแขแแแ Destination NAT แฌแแกแแแก แแแ แ แฅแกแแแแแแ แกแแ แแแกแแแแ แฌแแแแแแกแแแแก:
แแแแแจแแฃแแแแแก NAT แฌแแกแแแแก แแแแแขแแแ.
resource "vcd_nsxv_dnat" "dnat_tcp_nginx_https" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"
description = "NGINX HTTPs"
original_address = var.vcd_edge_external_ip
original_port = 443
translated_address = var.vcd_edge_local_ip_nginx
translated_port = 443
protocol = "tcp"
depends_on = [vcd_network_routed.net]
}
resource "vcd_nsxv_dnat" "dnat_tcp_nginx_http" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"
description = "NGINX HTTP"
original_address = var.vcd_edge_external_ip
original_port = 80
translated_address = var.vcd_edge_local_ip_nginx
translated_port = 80
protocol = "tcp"
depends_on = [vcd_network_routed.net]
}
แแแแแแขแแ NAT แฌแแกแ แแแ แขแแก แแแ แแแแแกแแแแก SSH แกแแ แแแ แแ Nginx-แแก แฅแแแจ.
resource "vcd_nsxv_dnat" "dnat_tcp-nginx_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"
description = "SSH NGINX"
original_address = var.vcd_edge_external_ip
original_port = 58301
translated_address = var.vcd_edge_local_ip_nginx
translated_port = 22
protocol = "tcp"
depends_on = [vcd_network_routed.net]
}
แแแแแแขแแ NAT แฌแแกแ แแแ แขแแก แแแ แแแแแกแแแแก SSH แกแแ แแแ แแ 1C-Bitrix-แแ.
resource "vcd_nsxv_dnat" "dnat_tcp_bitrix_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"
description = "SSH Bitrix"
original_address = var.vcd_edge_external_ip
original_port = 58302
translated_address = var.vcd_edge_local_ip_bitrix
translated_port = 22
protocol = "tcp"
depends_on = [vcd_network_routed.net]
}
แแแแแแขแแ NAT แฌแแกแ แแแ แขแแก แแแ แแแแแกแแแแก SSH แกแแ แแแ แแ Nextcloud-แแ.
resource "vcd_nsxv_dnat" "dnat_tcp_nextcloud_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"
description = "SSH Nextcloud"
original_address = var.vcd_edge_external_ip
original_port = 58303
translated_address = var.vcd_edge_local_ip_nextcloud
translated_port = 22
protocol = "tcp"
depends_on = [vcd_network_routed.net]
}
Main.tf แแแ แขแฃแแแฃแ แ แแแ แแแแก แแแแคแแแฃแ แแชแแ
แ แแแแ แช แกแขแแขแแแก แแแกแแฌแงแแกแจแ แแแแแแแแแ, แฉแแแ แจแแแฅแแแแ แกแแ แแแ แขแฃแแแฃแ แแแแฅแแแแก. แแกแแแ แแแแแแแแแแ "แกแขแฃแแ แแแแก แแแ แกแแแแแแแแชแแแก" แแแแแงแแแแแแ. แฉแแแ แแแแแงแแแแแ แฅแกแแแแก แแแ แแแแขแ แแแก แฉแแแ แแแแ แแแแแแแแฃแแ แแแ แแแแขแ แแแแก แแแฎแแแแแ แแ แแแแฎแแแ แแแแแก แแแ แแแ แแแขแแแแขแฃแ แแ แแแแแ แแ แแแฃแแ แแฅแแแแ.
แแแแแ แแฆแแฌแแ แแ vApp, แ แแแแแจแแช แแแแแแแกแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแ แแ แแแแ แแแแคแแแฃแ แแชแแ.
แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แแแแคแแแฃแ แแชแแ
แแแแแ แจแแแฅแแแแ vApp แแแแขแแแแแ แ. แแแแกแแแแแก, แ แแ แฉแแแ แจแแแแแซแแแ แแแฃแงแแแแแแแแ แแแแฃแแแแจแแ แแ vApp แแ VM แแแ แขแฃแแแฃแ แฅแกแแแก, แฉแแแ แแกแแแ แแแแแขแแแ แแแแแแแแแแฃแแแ_on แแแ แแแแขแ แก:
แจแแฅแแแแแ แแแแขแแแแแ แ
resource "vcd_vapp" "vapp" {
name = "web"
power_on = "true"
depends_on = [vcd_network_routed.net]
}
แแแแแ แจแแแฅแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแ แแฆแฌแแ แแแแแแ
resource "vcd_vapp_vm" "nginx" {
vapp_name = vcd_vapp.vapp.name
name = "nginx"
catalog_name = var.vcd_org_catalog
template_name = var.vcd_template_os_centos7
storage_profile = var.vcd_org_ssd_sp
memory = 8192
cpus = 1
cpu_cores = 1
network {
type = "org"
name = vcd_network_routed.net.name
is_primary = true
adapter_type = "VMXNET3"
ip_allocation_mode = "MANUAL"
ip = var.vcd_edge_local_ip_nginx
}
override_template_disk {
bus_type = "paravirtual"
size_in_mb = "32768"
bus_number = 0
unit_number = 0
storage_profile = var.vcd_org_ssd_sp
}
}
แซแแ แแแแแ แแแ แแแแขแ แแแ VM แแฆแฌแแ แแแแแแจแ:
-
แกแแฎแแแ - แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แกแแฎแแแ,
-
vappname - vApp-แแก แกแแฎแแแ, แ แแแแแกแแช แฃแแแ แแแแแแขแแก แแฎแแแ VM,
-
แแแขแแแแแแก แกแแฎแแแ / แจแแแแแแแก แกแแฎแแแ - แแแขแแแแแแก แกแแฎแแแ แแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แจแแแแแแแก แกแแฎแแแ,
-
storageprofile - แแแแฃแแแกแฎแแแแ แจแแแแฎแแแก แแแแแขแแแ.
แฅแกแแแแก แแแแแแก แแแ แแแแขแ แแแ:
-
แขแแแ - แแแแแแจแแ แแแฃแแ แฅแกแแแแก แขแแแ,
-
แกแแฎแแแ โ แ แแแแ แแแ แขแฃแแแฃแ แฅแกแแแก แแแแฃแแแแจแแ แแ VM,
-
แแ แแก แแแ แแแแแแ - แแแ แแแแแแ แฅแกแแแแก แแแแแขแแ แ,
-
ipallocation_mode โ MANUAL / DHCP / POOL แแแกแแแแ แแแก แแแแแฌแแแแแแก แ แแแแแ,
-
ip โ IP แแแกแแแแ แแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแกแแแแก, แฉแแแ แแแก แฎแแแแ แแแแแแฃแกแขแแแ.
override_template_disk แแแแแ:
-
sizeinmb โ แฉแแขแแแ แแแแก แแแกแแแก แแแแ แแแ แขแฃแแแฃแ แ แแแแ แแขแแกแแแแก
-
storage_profile โ แจแแแแฎแแแก แแแแแขแแแ แแแกแแแกแแแแก
แแแแแ แจแแแฅแแแแ แแแแ แ VM Nextcloud แคแแแแแก แจแแแแฎแแแก แแฆแฌแแ แแ
resource "vcd_vapp_vm" "nextcloud" {
vapp_name = vcd_vapp.vapp.name
name = "nextcloud"
catalog_name = var.vcd_org_catalog
template_name = var.vcd_template_os_centos7
storage_profile = var.vcd_org_ssd_sp
memory = 8192
cpus = 1
cpu_cores = 1
network {
type = "org"
name = vcd_network_routed.net.name
is_primary = true
adapter_type = "VMXNET3"
ip_allocation_mode = "MANUAL"
ip = var.vcd_edge_local_ip_nextcloud
}
override_template_disk {
bus_type = "paravirtual"
size_in_mb = "32768"
bus_number = 0
unit_number = 0
storage_profile = var.vcd_org_ssd_sp
}
}
resource "vcd_vm_internal_disk" "disk1" {
vapp_name = vcd_vapp.vapp.name
vm_name = "nextcloud"
bus_type = "paravirtual"
size_in_mb = "102400"
bus_number = 0
unit_number = 1
storage_profile = var.vcd_org_hdd_sp
allow_vm_reboot = true
depends_on = [ vcd_vapp_vm.nextcloud ]
}
vcdvminternal_disk แแแแงแแคแแแแแแจแ แฉแแแ แแฆแแฌแแ แ แแฎแแ แแแ แขแฃแแแฃแ แแแกแแก, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแแ แขแฃแแแฃแ แแแแฅแแแแกแแแ.
แแฎแกแแ vcdvminternaldisk แแแแแแกแแแแก:
-
bustype - แแแกแแแก แแแแขแ แแแแ แแก แขแแแ
-
sizeinmb - แแแกแแแก แแแแ
-
busnumber / unitnumber - แแแแจแแ แแก แแแแแแแแแแแ แแแแ แแแแแขแแ แจแ
-
storage_profile โ แจแแแแฎแแแก แแแแแขแแแ แแแกแแแกแแแแก
แแแแแ แแฆแแฌแแ แแ แฃแแฎแแแกแ VM Bitrix-แแ
resource "vcd_vapp_vm" "bitrix" {
vapp_name = vcd_vapp.vapp.name
name = "bitrix"
catalog_name = var.vcd_org_catalog
template_name = var.vcd_template_os_centos7
storage_profile = var.vcd_org_ssd_sp
memory = 8192
cpus = 1
cpu_cores = 1
network {
type = "org"
name = vcd_network_routed.net.name
is_primary = true
adapter_type = "VMXNET3"
ip_allocation_mode = "MANUAL"
ip = var.vcd_edge_local_ip_bitrix
}
override_template_disk {
bus_type = "paravirtual"
size_in_mb = "81920"
bus_number = 0
unit_number = 0
storage_profile = var.vcd_org_ssd_sp
}
}
OS-แแก แแแแแฎแแแแ แแ แแแแแขแแแแแ แกแแ แแแขแแแแก แแแงแแแแแ
แแแแแแแแแฃแแแ แฅแกแแแ, แแฆแฌแแ แแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแ. แฉแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแ แขแแแแ, แฉแแแ แจแแแแแซแแแ แฌแแแแกแฌแแ แแแแแแฎแแ แชแแแแแ แแแ แแแแแแ แฃแแ แฃแแแแแงแแคแ แแ แแแแแแแ แแก แแแแแแแแก แแแแแงแแแแแแ แแ Ansible-แแก แแแแแงแแแแแแก แแแ แแจแ.
แแแแแ แจแแแฎแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแฎแแแ OS แแ แแแฃแจแแแ CMS Bitrix แแแกแขแแแแชแแแก แกแแ แแแขแ แแ แแแแแแแ แแก แแแแแแก แแแแแงแแแแแแ.
แแแ แแแแ, แแแแแ แแแแแงแแแแ CentOS แแแแแฎแแแแแก แแแแแขแแแ.
resource "null_resource" "nginx_update_install" {
provisioner "remote-exec" {
connection {
type = "ssh"
user = "root"
password = vcd_vapp_vm.nginx.customization[0].admin_password
host = var.vcd_edge_external_ip
port = "58301"
timeout = "30s"
}
inline = [
"yum -y update && yum -y upgrade",
"yum -y install wget nano epel-release net-tools unzip zip" ]
}
}
}
แแแแแแแแแขแแแแก แแฆแแแจแแแ:
-
แแ แแแแแแแ แ โremote-execโ - แแแแแแแจแแ แแ แแแกแขแแแชแแฃแ แ แฃแแ แฃแแแแแงแแคแแก แแแแแ
-
แแแแจแแ แแก แแแแแจแ แฉแแแ แแฆแแฌแแ แ แแแแจแแ แแก แขแแแกแ แแ แแแ แแแแขแ แแแก:
-
แขแแแ โ แแ แแขแแแแแ, แฉแแแแก แจแแแแฎแแแแแจแ SSH;
-
แแแแฎแแแ แแแแแ โ แแแแฎแแแ แแแแแก แกแแฎแแแ;
-
แแแ แแแ - แแแแฎแแแ แแแแแก แแแ แแแ. แฉแแแแก แจแแแแฎแแแแแจแ, แฉแแแ แแแแฃแแแแแแ แแแ แแแแขแ แก vcdvappvm.nginx.customization[0].admin_password, แ แแแแแแช แแแแฎแแแก แแแแแ แแ แแแฃแ แแแ แแแก แกแแกแขแแแแก แแแแฎแแแ แแแแแกแแแแก.
-
แฐแแกแขแ โ แแแ แ IP แแแกแแแแ แแ แแแแจแแ แแกแแแแก;
-
แแแ แขแ โ แแแ แขแ แแแแจแแ แแกแแแแก, แ แแแแแแช แแแ แ แแงแ แแแแแแแแฃแแ DNAT แแแ แแแแขแ แแแจแ;
-
inline - แฉแแแแแแแแแ แแ แซแแแแแแแแก แกแแ, แ แแแแแแแช แจแแแงแแแแแแ. แแ แซแแแแแแแ แจแแแงแแแแแแ แแ แแแแงแแคแแแแแแจแ แแแแแแแแฃแแ แแแแแแแแแแ แแแแ.
แแแแแแแแแ, แแแแแ แแแแแขแแแแ แจแแแแกแ แฃแแแ 1C-Bitrix แแแกแขแแแแชแแแก แกแแ แแแขแ. แกแแ แแแขแแก แจแแกแ แฃแแแแแก แจแแแแแแก แแแแแกแแแแแ แฎแแแแแกแแฌแแแแแ แแฅแแแแ แแแแแแก แแแจแแแแแกแแก. แกแแ แแแขแแก แแแกแขแแแแชแแแกแแแแก, แฏแแ แแฆแแฌแแ แ แแแแแก:
แแแแแ แแฆแแฌแแ แแ 1C-Bitrix-แแก แแแกแขแแแแชแแ.
provisioner "file" {
source = "prepare.sh"
destination = "/tmp/prepare.sh"
connection {
type = "ssh"
user = "root"
password = vcd_vapp_vm.nginx.customization[0].admin_password
host = var.vcd_edge_external_ip
port = "58301"
timeout = "30s"
}
}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/prepare.sh", "./tmp/prepare.sh"
]
}
แแ แฉแแแ แแแฃแงแแแแแแแแ แแฆแแฌแแ แ Bitrix แแแแแฎแแแแแก.
1C-Bitrix แฃแแ แฃแแแแแงแแคแแก แแแแแแแแ.
resource "null_resource" "install_update_bitrix" {
provisioner "remote-exec" {
connection {
type = "ssh"
user = "root"
password = vcd_vapp_vm.bitrix.customization[0].admin_password
host = var.vcd_edge_external_ip
port = "58302"
timeout = "60s"
}
inline = [
"yum -y update && yum -y upgrade",
"yum -y install wget nano epel-release net-tools unzip zip",
"wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh -O /tmp/bitrix-env.sh",
"chmod +x /tmp/bitrix-env.sh",
"/tmp/bitrix-env.sh"
]
}
}
แฒแแแจแแแแแแแแแ! แกแแ แแแขแแ แจแแแซแแแแ แแ แแแฃแจแแแก, แแฃ แฌแแแแกแฌแแ แแ แแแแแ แแแแ SELinux-แก! แแฃ แแญแแ แแแแแ แแแขแแแฃแ แ แกแขแแขแแ CMS 1C-Bitrix-แแก แแแกแขแแแแชแแแกแ แแ แแแแคแแแฃแ แแชแแแก แจแแกแแฎแแ bitrix-env.sh-แแก แแแแแงแแแแแแ, แจแแแแซแแแแ
3. แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแชแแแแแแแชแแ
แแแแฃแแแแแก แแ แแแแแแแขแแแแก แแแแชแแ แแแ
แกแแแฃแจแแแ แแแงแแแแแ แแแ แขแแ โแฏแแแขแแแแแแก แแแแแแแฅแขแกโ: แแแแขแแแก Windows 10 OS แแ แกแแแแกแขแ แแแฃแชแแ แแแแแแแฅแขแก แแคแแชแแแแฃแ แ แแแแกแแแขแแแแ. terraform.exe init
แแแแแแแแแแ แแ แฅแกแแแฃแ แ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแฆแฌแแ แแก แจแแแแแ, แฉแแแ แแแฌแงแแแ แแแแแแแแแก แฉแแแแ แแแแคแแแฃแ แแชแแแก แจแแกแแแแฌแแแแแแ, แกแแแแช แจแแแแแซแแแ แแแแฎแแ แ แ แจแแแฅแแแแแ แแ แ แแแแ แแแฃแแแแจแแ แแแแ แแ แแแแแแแก.
-
แจแแแกแ แฃแแแ แแ แซแแแแแ
- terraform plan -var-file=vcd.tfvars
. -
แจแแแแแก แแแฆแแแ
- Plan: 16 to add, 0 to change, 0 to destroy.
แแแฃ แแ แแแแแแก แแแฎแแแแแ แจแแแฅแแแแแ 16 แ แแกแฃแ แกแ. -
แฉแแแ แแแฌแงแแแ แแแแแแก แแ แซแแแแแแ
- terraform.exe apply -var-file=vcd.tfvars
.
แจแแแฅแแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแ, แจแแแแแ แแ แฉแแแ แแแแ แฉแแแแแแแแแ แแแแแขแแแ แจแแกแ แฃแแแแแ แแ แแแแแแแ แแก แแแแงแแคแแแแแแจแ - แแแแแฎแแแแแ OS แแ แแแแแกแขแแแแ แแแแ CMS Bitrix.
แแแแจแแ แแก แแแคแแ แแแชแแแก แแแฆแแแ
แแแแแแก แจแแกแ แฃแแแแแก แจแแแแแ, แฉแแแ แแแแแแ แแแแแฆแแ แแแแแชแแแแแ แขแแฅแกแขแฃแ แ แคแแ แแแ แกแแ แแแ แแแแแ แแแกแแแแแจแแ แแแแแ, แแแแกแแแแก แแแแแแแแแแ แแแแงแแคแแแแแแก แคแแ แแแขแแ แแแแก แแแแแฎแแแแ แจแแแแแแแแแ แแ:
output "nginxpassword" {
value = vcdvappvm.nginx.customization[0].adminpassword
}
แแ แจแแแแแแ แแแแแแแแแแ แแแแฃแแแแแ แจแแฅแแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แแแ แแแก:
Outputs: nginx_password = F#4u8!!N
แจแแแแแแ, แฉแแแ แแแฆแแแ แฌแแแแแแก แแแ แขแฃแแแฃแ แแแแฅแแแแแแ แแแแแฎแแแแฃแแ แแแแ แแชแแฃแแ แกแแกแขแแแแ แแ แฌแแแแกแฌแแ แแแแแกแขแแแแ แแแฃแแ แแแแแขแแแแ แฉแแแแ แจแแแแแแแ แแฃแจแแแแแกแแแแก. แงแแแแแคแแ แ แแแแแแ!
แแแแ แแ แ แ แแแฎแแแแ, แแฃ แฃแแแ แแแฅแแ แแ แกแแแฃแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แ?
3.1. แกแแแฃแจแแ Terraform แแ แกแแแฃแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแ
แแก แแแ แขแแแแ, แจแแแแซแแแแ แจแแแแแขแแแแ แแแแแแแแ แ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแ แแ แแแแ vApp แแแแขแแแแแ แแแ แแแแแ แขแแก แแ แซแแแแแแก แแแแแงแแแแแแ.
แแแแแ แแฆแแฌแแ แแ vAPP แ แแกแฃแ แกแ แแ แแแ แขแฃแแแฃแ แ แแแแฅแแแ.
resource "vcd_vapp" "Monitoring" {
name = "Monitoring"
org = "mClouds"
vdc = "mClouds"
}
resource "vcd_vapp_vm" "Zabbix" {
name = "Zabbix"
org = "mClouds"
vdc = "mClouds"
vapp = "Monitoring"
}
แจแแแแแแ แแแแแฏแ แแ แแก vApp แ แแกแฃแ แกแแแแก แแแแกแแแแแแก แคแแ แแแขแจแ แแแแแ แขแ vcdvapp.<vApp> <org>.<orgvdc>.<vApp>
แกแแ:
-
vApp - vApp แกแแฎแแแ;
-
org โ แแ แแแแแแแชแแแก แแแกแแฎแแแแแ;
-
org_vdc โ แแแ แขแฃแแแฃแ แ แแแแแชแแแแ แชแแแขแ แแก แกแแฎแแแ.
vAPP แ แแกแฃแ แกแแก แแแแกแแแแแแก แแแแแ แขแ
แแแแแ แจแแแแแแขแแแแ VM แ แแกแฃแ แกแแแแก แแแแกแแแแแ แคแแ แแแขแจแ: vcdvappvm.<VM> <org>.<orgvdc>.<vApp>.<VM>
, แ แแแแแจแแช:
-
VM - VM แกแแฎแแแ;
-
vApp - vApp แกแแฎแแแ;
-
org โ แแ แแแแแแแชแแแก แแแกแแฎแแแแแ;
-
orgvdc แแ แแก แแแ แขแฃแแแฃแ แ แแแแแชแแแแ แชแแแขแ แแก แกแแฎแแแ.
แแแแแ แขแ แฌแแ แแแขแแแฃแแ แแงแ
C:UsersMikhailDesktopterraform>terraform import vcd_vapp_vm.Zabbix mClouds.mClouds.Monitoring.Zabbix
vcd_vapp_vm.Zabbix: Importing from ID "mClouds.mClouds.Monitoring.Zabbix"...
vcd_vapp_vm.Zabbix: Import prepared!
Prepared vcd_vapp_vm for import
vcd_vapp_vm.Zabbix: Refreshing state... [id=urn:vcloud:vm:778f4a89-1c8d-45b9-9d94-0472a71c4d1f]
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
แแฎแแ แฉแแแ แจแแแแแซแแแ แจแแแฎแแแแ แแฎแแ แแแแแ แขแแ แแแฃแ แ แแกแฃแ แกแก:
แแแแแ แขแแ แแแฃแแ แ แแกแฃแ แกแ
> terraform show
...
# vcd_vapp.Monitoring:
resource "vcd_vapp" "Monitoring" {
guest_properties = {}
href = "https://vcloud.mclouds.ru/api/vApp/vapp-fe5db285-a4af-47c4-93e8-55df92f006ec"
id = "urn:vcloud:vapp:fe5db285-a4af-47c4-93e8-55df92f006ec"
ip = "allocated"
metadata = {}
name = "Monitoring"
org = "mClouds"
status = 4
status_text = "POWERED_ON"
vdc = "mClouds"
}
โฆ
# vcd_vapp_vm.Zabbix:
resource "vcd_vapp_vm" "Zabbix" {
computer_name = "Zabbix"
cpu_cores = 1
cpus = 2
expose_hardware_virtualization = false
guest_properties = {}
hardware_version = "vmx-14"
href = "https://vcloud.mclouds.ru/api/vApp/vm-778f4a89-1c8d-45b9-9d94-0472a71c4d1f"
id = "urn:vcloud:vm:778f4a89-1c8d-45b9-9d94-0472a71c4d1f"
internal_disk = [
{
bus_number = 0
bus_type = "paravirtual"
disk_id = "2000"
iops = 0
size_in_mb = 122880
storage_profile = "Gold Storage Policy"
thin_provisioned = true
unit_number = 0
},
]
memory = 8192
metadata = {}
name = "Zabbix"
org = "mClouds"
os_type = "centos8_64Guest"
storage_profile = "Gold Storage Policy"
vapp_name = "Monitoring"
vdc = "mClouds"
customization {
allow_local_admin_password = true
auto_generate_password = true
change_sid = false
enabled = false
force = false
join_domain = false
join_org_domain = false
must_change_password_on_first_login = false
number_of_auto_logons = 0
}
network {
adapter_type = "VMXNET3"
ip_allocation_mode = "DHCP"
is_primary = true
mac = "00:50:56:07:01:b1"
name = "MCLOUDS-LAN01"
type = "org"
}
}
แแฎแแ แฉแแแ แแแแแแแแแ แแแแ แแแ แ - แแแแแกแ แฃแแแ แแแแ แแฃแแฅแขแ (แแแแแ แขแ แแ แกแแแฃแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแจแ) แแ แแแแแแ แแ Terraform-แแแ แแฃแจแแแแแก แงแแแแ แซแแ แแแแแ แแฃแแฅแขแ.
แแแกแขแ แฃแแแแขแ แแฆแแแฉแแแ แซแแแแแ แแแกแแฎแแ แฎแแแแแ แแ แกแแจแฃแแแแแแก แแแซแแแแ แแฆแฌแแ แแ แแฅแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แ, แ แแแแ แช แแแแ, แแแฌแงแแแฃแแ แแ แแ แฆแ แฃแแแแแแแ แแ แแแแแแแ แแก แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแแแ แฅแกแแแแก แแแแแแแแแขแแแแก แ แแกแฃแ แกแแแแก แแฆแฌแแ แแแแ.
แแแแแแ แแฃแแแ, แแแ แแแแกแแแ แแแแแฃแแแแแแแแแ แจแแกแแซแแแแแแก แฎแแแก แแแแแแแแ แแ, แฆแ แฃแแแแแแ แ แแกแฃแ แกแแแแแ แแฃแจแแแแแก แแ แแแแขแคแแ แแแก แแแ แแแแกแแช แแ. แแ แแฃ แแ แแ แแก แแฎแแ แแแญแแ แแแ แแแแขแคแแ แแ แแ แแกแฃแ แ แแแแแแขแแ แแฎแแแ, แจแแแแซแแแแ แแแฌแแ แแ แแฅแแแแ แกแแแฃแแแ แ แแ แแแแแแแ แ แแ แแแแแแงแแแแ แแแ.
แฌแงแแ แ: www.habr.com