Mar a làimhsicheas tu bun-structar Cloud le Terraform

Mar a làimhsicheas tu bun-structar Cloud le Terraform

San artaigil seo, seallaidh sinn ris na tha Terraform air a dhèanamh suas, agus cuiridh sinn am bun-structar againn fhèin air bhog ann an ìrean san sgòth le VMware - ullaich trì VM airson diofar adhbharan: neach-ionaid, stòradh fhaidhlichean agus CMS.

A h-uile dad gu mionaideach agus ann an trì ìrean:

1. Terraform - tuairisgeul, buannachdan agus co-phàirtean

Tha Terraform na inneal IaC (Bun-structar-mar-Code) airson bun-structar brìgheil a thogail agus a riaghladh a’ cleachdadh còd.

Ann a bhith ag obair leis an inneal, thug sinn fa-near grunn bhuannachdan:

  • An luaths airson luchd-gabhail ùr a chleachdadh (àrainneachdan brìgheil àbhaisteach). Mar as trice, mar as motha de luchd-ceannach ùr, is ann as “cliogan” a dh’ fheumas an luchd-obrach taic theicnigeach a dhèanamh gus goireasan ùra fhoillseachadh. Le Terraform, faodaidh luchd-cleachdaidh crìochan innealan brìgheil atharrachadh (mar eisimpleir, an OS a dhùnadh gu fèin-ghluasadach agus an sgaradh diosc brìgheil àrdachadh) gun a bhith an sàs ann an taic theicnigeach agus an inneal fhèin a dhùnadh sìos.

  • Dearbhadh sa bhad air a’ phlana gnìomhachaidh neach-gabhail ùr. A’ cleachdadh an tuairisgeul air a’ chòd bun-structair, is urrainn dhuinn sgrùdadh a dhèanamh sa bhad air dè a thèid a chur ris agus dè an òrdugh, a bharrachd air dè an suidheachadh mu dheireadh a bhios an seo no an inneal brìgheil no lìonra brìgheil le ceanglaichean ri innealan brìgheil.

  • Comas cunntas a thoirt air na h-àrd-ùrlaran sgòthan as mòr-chòrdte. Faodaidh tu an inneal a chleachdadh bho Amazon agus Google Cloud gu àrd-ùrlaran prìobhaideach stèidhichte air Stiùiriche VMware vCloud a’ tabhann fuasglaidhean IaaS, SaaS agus PaaS.

  • Stiùirich grunn sholaraichean sgòthan agus bun-structar a sgaoileadh eatorra gus fulangas sgàinidhean a leasachadh, a’ cleachdadh aon rèiteachadh gus goireasan sgòthan a chruthachadh, a lorg agus a riaghladh.

  • Cleachdadh goireasach airson ionadan demo a chruthachadh airson deuchainn bathar-bog agus debugging. Faodaidh tu beingean a chruthachadh agus a ghluasad airson an roinn deuchainn, bathar-bog deuchainn co-shìnte ann an diofar àrainneachdan, agus goireasan atharrachadh agus cuir às sa bhad le bhith a’ cruthachadh dìreach aon phlana togail ghoireasan

Cruth-tìre "Terrarium".

Bhruidhinn sinn goirid mu na buannachdan a tha aig an inneal, a-nis nì sinn sgrùdadh air na co-phàirtean aige

Solaraichean (luchd-solair). 

Ann an Terraform, faodar cha mhòr seòrsa sam bith de bhun-structair a riochdachadh mar ghoireas. Tha an ceangal eadar goireasan agus an àrd-ùrlar API air a thoirt seachad le modalan solaraiche, a leigeas leat goireasan a chruthachadh taobh a-staigh àrd-ùrlar sònraichte, leithid Azure no VMware vCloud Director.

Taobh a-staigh pròiseact, faodaidh tu eadar-obrachadh le diofar sholaraichean air diofar àrd-ùrlaran.

Goireasan (tuairisgeul air goireasan).

Leigidh tuairisgeul air goireasan dhut co-phàirtean àrd-ùrlar a riaghladh, leithid innealan mas-fhìor no lìonraidhean. 

Faodaidh tu tuairisgeul goireas a chruthachadh airson solaraiche Stiùiriche VMware vCloud thu fhèin agus an tuairisgeul seo a chleachdadh gus goireasan a chruthachadh airson solaraiche aoigheachd sam bith a chleachdas vCloud Director. Chan fheum thu ach na paramadairean dearbhaidh agus paramadairean ceangail lìonra atharrachadh chun t-solaraiche aoigheachd a tha a dhìth

Luchd-solair.

Tha am pàirt seo ga dhèanamh comasach obair a dhèanamh airson a’ chiad stàladh agus cumail suas an t-siostam obrachaidh às deidh cruthachadh innealan brìgheil. Aon uair ‘s gu bheil thu air goireas inneal brìgheil a chruthachadh, faodaidh tu luchd-solair a chleachdadh gus rèiteachadh agus ceangal tro SSH, an siostam obrachaidh ùrachadh, agus sgriobt a luchdachadh sìos agus a chuir an gnìomh. 

Caochlaidhean cuir a-steach agus toradh.

Caochladairean cuir a-steach - caochladairean cuir a-steach airson seòrsa bloc sam bith. 

Tha caochladairean toraidh a’ ceadachadh luachan a shàbhaladh às deidh cruthachadh ghoireasan agus faodar an cleachdadh mar chaochladairean cuir a-steach ann am modalan eile, leithid bloc Provideers.

stàitean.

Bidh faidhlichean stàite a’ stòradh fiosrachadh mu rèiteachadh goireas àrd-ùrlair an t-solaraiche. Nuair a thèid an àrd-ùrlar a chruthachadh an toiseach, chan eil fiosrachadh sam bith ann mu na goireasan, agus ro obair sam bith, bidh Terraform ag ùrachadh na stàite le fìor bhun-structar nan goireasan a chaidh a mhìneachadh mar-thà.

Is e prìomh adhbhar stàitean dòrlach de stuthan de ghoireasan a chaidh a chruthachadh mar-thà a shàbhaladh airson coimeas a dhèanamh eadar rèiteachadh ghoireasan agus nithean a bharrachd gus ath-chruthachadh agus atharrachaidhean air an àrd-ùrlar a sheachnadh.

Tha fiosrachadh stàite air a stòradh gu h-ionadail anns an fhaidhle terraform.tfstate gu bunaiteach, ach faodaidh tu stòradh iomallach a chleachdadh airson obair-sgioba ma bhios feum air.

Faodaidh tu cuideachd na goireasan àrd-ùrlair gnàthach a thoirt a-steach don stàit gus tuilleadh eadar-obrachadh le goireasan eile, a chaidh an uair sin a chruthachadh gun chuideachadh bho Terraform.  

2. Cruthachadh bun-structair

Chaidh na pàirtean a thoirt às a chèile, a-nis le cuideachadh bho Terraform cruthaichidh sinn bun-structar mean air mhean le trì innealan brìgheil. A’ chiad fhear le frithealaiche proxy nginx air a chuir a-steach, an dàrna fear le stòradh faidhle stèidhichte air Nextcloud agus an treas fear le Bitrix CMS.

Sgrìobhaidh sinn còd agus cuiridh sinn an gnìomh e a’ cleachdadh an eisimpleir againn sgòthan air Stiùiriche VMware vCloud. Leinne, gheibh luchd-cleachdaidh cunntas le còraichean Rianaire Buidhne, ma chleachdas tu cunntas leis na h-aon chòraichean ann an sgòth VMware eile, faodaidh tu an còd ath-riochdachadh bho na h-eisimpleirean againn. Rach!

An toiseach, cruthaichidh sinn eòlaire airson ar pròiseact ùr, anns am bi faidhlichean a’ toirt cunntas air a’ bhun-structair.

mkdir project01

An uairsin bidh sinn a 'toirt cunntas air na pàirtean den bhun-structair. Bidh Terraform a’ cruthachadh cheanglaichean agus a’ pròiseasadh fhaidhlichean stèidhichte air an tuairisgeul anns na faidhlichean. Faodar na faidhlichean fhèin ainmeachadh a rèir adhbhar nam blocaichean a chaidh a mhìneachadh, mar eisimpleir, network.tf - a 'toirt cunntas air crìochan lìonra airson a' bhun-structair.

Gus cunntas a thoirt air na pàirtean den bhun-structair againn, tha sinn air na faidhlichean a leanas a chruthachadh:

Liosta de na faidhlichean.

main.tf - tuairisgeul air paramadairean airson na h-àrainneachd bhrìgheil - innealan brìgheil, soithichean brìgheil;

network.tf - tuairisgeul air paramadairean lìonra mas-fhìor agus NAT, riaghailtean Firewall;

caochladairean.tf - liosta de na caochladairean a bhios sinn a 'cleachdadh;

vcd.tfvars - luachan caochlaideach pròiseict airson modal Stiùiriche VMware vCloud.

Tha an cànan rèiteachaidh ann an Terraform dearbhach agus chan eil diofar ann an òrdugh nam blocaichean, ach a-mhàin blocaichean solair, oir anns a 'bhloc seo, tha sinn a' toirt cunntas air na h-òrdughan a thèid a chur gu bàs nuair a bhios iad ag ullachadh a 'bhun-structair agus thèid an cur gu bàs ann an òrdugh.

Structar bloca.

<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {

# Block body

<IDENTIFIER> = <EXPRESSION> # Argument

}

Thathas a’ toirt cunntas air blocaichean a’ cleachdadh a’ chànan prògramaidh aca fhèin HCL (Cànan rèiteachaidh HashiCorp), tha e comasach cunntas a thoirt air a’ bhun-structar a’ cleachdadh JSON. Airson tuilleadh fiosrachaidh air syntax, faic leugh air làrach-lìn an leasaiche.

Suidheachadh caochlaideach àrainneachd, caochladairean.tf agus vcd.tfvars

An toiseach, cruthaichidh sinn dà fhaidhle a bheir cunntas air liosta nan caochladairean a chaidh a chleachdadh agus na luachan aca airson modal Stiùiriche VMware vCloud. An toiseach, cruthaichidh sinn am faidhle variables.tf.

Tha susbaint an fhaidhle 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" {}

Luachan caochlaideach a gheibh sinn bhon t-solaraiche.

  • vcd_org_user - ainm neach-cleachdaidh le còraichean rianadair na buidhne,

  • vcd_org_password - facal-faire neach-cleachdaidh,

  • vcd_org - ainm na buidhne,

  • vcd_org_vdc - ainm an ionad dàta mas-fhìor,

  • vcd_org_url - URL API,

  • vcd_org_edge_name - ainm router mas-fhìor,

  • vcd_org_catalog - ainm an eòlaire le teamplaidean inneal mas-fhìor,

  • vcd_edge_external_ip - seòladh IP poblach,

  • vcd_edge_external_network - ainm an lìonra a-muigh,

  • vcd_org_hdd_sp - ainm poileasaidh stòraidh HDD,

  • Is e vcd_org_ssd_sp ainm a’ phoileasaidh stòraidh SSD.

Agus cuir a-steach na caochladairean againn:

  • vcd_edge_local_ip_nginx - seòladh IP an inneal brìgheil le NGINX,

  • vcd_edge_local_ip_bitrix - seòladh IP an inneal brìgheil le 1C: Bitrix,

  • vcd_edge_local_ip_nextcloud - seòladh IP an inneal brìgheil le Nextcloud.

Anns an dàrna faidhle, bidh sinn a’ cruthachadh agus a’ sònrachadh caochladairean airson modal Stiùiriche VMware vCloud anns an fhaidhle vcd.tfvars: Cuimhnich gu bheil sinn a’ cleachdadh san eisimpleir againn mClouds sgòthan fhèin, ma tha thu ag obair le solaraiche eile, thoir sùil air na luachan còmhla ris. 

Tha susbaint an fhaidhle 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"

Rèiteachadh lìonra, network.tf.

Tha na caochladairean àrainneachd air an suidheachadh, a-nis leig dhuinn an sgeama ceangail inneal brìgheil a rèiteachadh - sònraich seòladh IP prìobhaideach do gach inneal brìgheil agus cleachd Ceann-uidhe NAT gus puirt “air adhart” chun lìonra a-muigh. Gus ruigsinneachd gu puirt riaghlaidh a chuingealachadh, suidhichidh sinn ruigsinneachd dìreach airson ar seòladh IP.

Mar a làimhsicheas tu bun-structar Cloud le TerraformDiagram lìonra airson an àrd-ùrlar Terraform a chaidh a chruthachadh

Bidh sinn a’ cruthachadh lìonra eagrachaidh brìgheil leis an ainm net_lan01, an geata bunaiteach: 192.168.110.254, agus cuideachd leis an àite seòlaidh: 192.168.110.0/24.

Thoir cunntas air an lìonra mas-fhìor.

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"

  }

}

Cruthaichidh sinn riaghailtean airson a 'bhalla-teine, a leigeas leat innealan brìgheil a thoirt seachad le cothrom air an eadar-lìon. Taobh a-staigh a’ bhloc seo, bidh cothrom aig a h-uile goireas brìgheil san sgòth air an eadar-lìn:

Bidh sinn a’ toirt cunntas air na riaghailtean airson ruigsinneachd VM air an eadar-lìn.

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]

}

Às deidh dhuinn an eisimeileachd a stèidheachadh às deidh dhuinn am bloc vcdnetworkrouted.net a ghiullachd, thèid sinn air adhart gu rèiteachadh a’ bhloc vcdnsxvfirewallrule, le bhith cleachdadh an urra. Bidh sinn a’ cleachdadh an roghainn seo oir dh’ fhaodadh gum bi cuid de eisimeileachd air an aithneachadh gu soilleir san rèiteachadh.

An uairsin, cruthaichidh sinn riaghailtean a leigeas le ruigsinneachd gu puirt bhon lìonra a-muigh agus sònraichidh sinn an seòladh IP againn airson ceangal tro SSH ris na frithealaichean. Tha cothrom aig neach-cleachdaidh eadar-lìn sam bith air puirt 80 agus 443 air an t-seirbheisiche lìn, agus tha cothrom aig neach-cleachdaidh le seòladh IP 90.1.15.1 air puirt SSH nan frithealaichean mas-fhìor.

Leigidh sinn gu puirt bhon lìonra a-muigh.

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]

}

Cruthaich riaghailtean Stòr NAT airson faighinn chun eadar-lìn bho lìonra sgìre ionadail sgòthan:

Thoir cunntas air riaghailtean Stòr 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]

}

Agus aig deireadh rèiteachadh bloc an lìonraidh, cuiridh sinn riaghailtean NAT Ceann-uidhe airson faighinn gu seirbheisean bho lìonra a-muigh:

A’ cur ri riaghailtean NAT Ceann-uidhe.

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]

}

Cuir riaghailt NAT ris gus puirt eadar-theangachadh gu frithealaiche SSH fo 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]

}

Cuiridh sinn riaghailt NAT airson eadar-theangachadh port ris an fhrithealaiche SSH le 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]

}

Cuir riaghailt NAT ris gus puirt eadar-theangachadh gu frithealaiche SSH le 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]

}

Suidheachadh àrainneachd mas-fhìor main.tf

Mar a bha sinn an dùil aig toiseach an artaigil, cruthaichidh sinn trì innealan brìgheil. Bidh iad air an ullachadh le "Guest Customization". Sgrìobhaidh sinn crìochan an lìonraidh a rèir nan roghainnean a shònraich sinn, agus thèid am facal-faire bhon neach-cleachdaidh a chruthachadh gu fèin-obrachail.

Bheir sinn cunntas air an vApp anns am bi na h-innealan brìgheil agus an rèiteachadh aca.

Mar a làimhsicheas tu bun-structar Cloud le TerraformSuidheachadh inneal mas-fhìor

Nach cruthaich sinn soitheach vApp. Gus an urrainn dhuinn an vApp agus VM a cheangal ris an lìonra mas-fhìor, bidh sinn cuideachd a’ cur am paramadair depend_on ris:

Cruthaich soitheach

resource "vcd_vapp" "vapp" {
name = "web"
power_on = "true" depends_on = [vcd_network_routed.net]

}

Cruthaich inneal brìgheil le tuairisgeul

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

}

}

Na prìomh pharaimearan anns an tuairisgeul air an VM:

  • is e ainm ainm an inneal brìgheil,

  • vappname - ainm an vApp anns an cuir thu VM ùr ris,

  • ainm catalog / templatename - ainm catalog agus ainm teamplaid inneal brìgheil,

  • storageprofile - poileasaidh stòraidh bunaiteach.

Paramadairean bloc lìonra:

  • seòrsa - seòrsa de lìonra ceangailte,

  • ainm - dè an lìonra mas-fhìor airson an VM a cheangal ris,

  • isprimary - adapter lìonra bun-sgoile,

  • ipallocation_mode - modh riarachadh seòladh MANUAL / DHCP / POOL,

  • ip - seòladh IP airson an inneal brìgheil, sònraichidh sinn e le làimh.

override_template_disk block:

  • sizeinmb - meud diosc boot airson an inneal brìgheil

  • storage_profile - poileasaidh stòraidh airson an diosg

Cruthaichidh sinn dàrna VM le tuairisgeul air stòradh faidhle 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 ]

}

Anns an roinn vcdvminternal_disk, bidh sinn a’ toirt cunntas air diosc brìgheil ùr a tha ceangailte ris an inneal brìgheil.

Mìneachaidhean air a’ bhloc vcdvminternaldisk:

  • bustype - seòrsa rianadair diosc

  • sizeinmb - meud diosc

  • àireamh bus / aonad àireamh - puing ceangail san inneal-atharrachaidh

  • storage_profile - poileasaidh stòraidh airson an diosg

Bheir sinn cunntas air an VM mu dheireadh air 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

}

}

Ùrachadh OS agus stàladh sgriobtaichean a bharrachd

Tha an lìonra air ullachadh, tha na h-innealan brìgheil air am mìneachadh. Mus cuir sinn a-steach ar bun-structar, is urrainn dhuinn ro-sholarachadh le blocaichean solarachaidh agus gun a bhith a’ cleachdadh Ansible.

Beachdaichidh sinn air mar as urrainn dhut an OS ùrachadh agus an sgriobt stàlaidh Bitrix CMS a ruith a ’cleachdadh a’ bhloc solair.

Nach stàlaich sinn na pacaidean seirbheis CentOS an-toiseach.

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

}

}

}

Sònrachadh phàirtean:

  • Solaraiche "remote-exec" - ceangail am bloc "solarachadh" iomallach

  • Anns a 'bhloc ceangail, bidh sinn a' toirt cunntas air an t-seòrsa agus na crìochan airson a 'cheangail:

  • seòrsa - protocol, nar cùis SSH;

  • neach-cleachdaidh - ainm neach-cleachdaidh;

  • facal-faire - facal-faire an neach-cleachdaidh. Anns a 'chùis againn, bidh sinn a' comharrachadh am paramadair vcdvappvm.nginx.customization[0].admin_password, a bhios a 'stòradh am facal-faire a chaidh a chruthachadh bho neach-cleachdaidh an t-siostaim.

  • aoigheachd - seòladh IP taobh a-muigh airson ceangal;

  • port - port airson ceangal, a chaidh a shònrachadh roimhe seo anns na roghainnean DNAT;

  • inline - liostaich liosta nan òrduighean a thèid a chur a-steach. Thèid na h-òrdughan a chuir a-steach ann an òrdugh, mar a tha air a shònrachadh san earrann seo.

Mar eisimpleir, leig leinn cuideachd an sgriobt stàlaidh 1C-Bitrix a chuir an gnìomh. Bidh toradh toradh coileanadh an sgriobt ri fhaighinn nuair a thèid am plana a chur an gnìomh. Gus an sgriobt a stàladh, bheir sinn cunntas air a’ bhloc an toiseach:

Bheir sinn cunntas air stàladh 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"

]

}

Agus bheir sinn cunntas sa bhad air ùrachadh Bitrix.

Eisimpleir de sholarachadh 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"

]

}

}

Cudromach! Is dòcha nach obraich an sgriobt mura h-eil SELinux à comas ro-làimh! Ma tha feum agad air artaigil mionaideach mu bhith a’ stàladh agus a’ rèiteachadh CMS 1C-Bitrix a’ cleachdadh bitrix-env.sh, faodaidh tu cleachd an artaigil blog againn air an làrach-lìn.

3. Tòiseachadh bun-structair

Mar a làimhsicheas tu bun-structar Cloud le TerraformTòiseachadh mhodalan agus plugins

Airson obair, bidh sinn a’ cleachdadh “seata duine-uasal” sìmplidh: laptop le Windows 10 agus pasgan cuairteachaidh bhon làrach-lìn oifigeil terraform.io. Dèan dì-phapadh agus tòiseachadh leis an òrdugh: terraform.exe init

Às deidh dhuinn cunntas a thoirt air a’ bhun-structar coimpiutaireachd is lìonraidh, bidh sinn a’ tòiseachadh a’ dealbhadh gus ar rèiteachadh fheuchainn, far am faic sinn dè a thèid a chruthachadh agus mar a tha e ceangailte ri chèile.

  1. Cuir an gnìomh an àithne - terraform plan -var-file=vcd.tfvars.

  2. Gheibh sinn an toradh - Plan: 16 to add, 0 to change, 0 to destroy. Is e sin, a rèir a' phlana seo, gun tèid 16 goireasan a chruthachadh.

  3. A' cur air bhog a' phlana air àithne - terraform.exe apply -var-file=vcd.tfvars.

Thèid innealan mas-fhìor a chruthachadh, agus an uairsin thèid na pacaidean a tha air an liostadh leinn a chuir gu bàs taobh a-staigh roinn an t-solair - thèid an OS ùrachadh agus thèid CMS Bitrix a chuir a-steach.

A 'faighinn dàta ceangail

Às deidh am plana a chuir an gnìomh, tha sinn airson dàta fhaighinn ann an cruth teacsa airson ceangal ri frithealaichean, airson seo cuiridh sinn air dòigh an earrann toraidh mar a leanas:

output "nginxpassword" {

 value = vcdvappvm.nginx.customization[0].adminpassword

}

Agus tha an toradh a leanas ag innse dhuinn am facal-faire bhon inneal brìgheil cruthaichte:

Outputs: nginx_password = F#4u8!!N

Mar thoradh air an sin, gheibh sinn cothrom air innealan brìgheil le siostam obrachaidh ùraichte agus pasganan ro-stàlaichte airson ar tuilleadh obrach. Tha a h-uile dad deiseil!

Ach dè ma tha bun-structar agad mu thràth?

3.1. Terraform ag obair leis a’ bhun-structair a th’ ann mar-thà

Tha e sìmplidh, is urrainn dhut innealan brìgheil gnàthach agus na soithichean vApp aca a thoirt a-steach a’ cleachdadh an àithne in-mhalairt.

Bheir sinn cunntas air goireas vAPP agus an inneal brìgheil.

resource "vcd_vapp" "Monitoring" {

name = "Monitoring"

org = "mClouds"

vdc = "mClouds"

}

resource "vcd_vapp_vm" "Zabbix" {

name = "Zabbix"

org = "mClouds"

vdc = "mClouds"

vapp = "Monitoring"

}

Is e an ath cheum togalaichean stòrais vApp a thoirt a-steach don chruth vcdvapp.<vApp> <org>.<orgvdc>.<vApp>, far a bheil:

  • is e vApp ainm an vApp;

  • is e org ainm na buidhne;

  • Is e org_vdc an t-ainm a th’ air an ionad dàta mas-fhìor.

Mar a làimhsicheas tu bun-structar Cloud le TerraformCuir a-steach feartan stòrais vAPP

Nach cuir sinn feartan ghoireasan VM a-steach don chruth: vcdvappvm.<VM> <org>.<orgvdc>.<vApp>.<VM>, anns a bheil:

  • VM - ainm VM;

  • is e vApp ainm an vApp;

  • is e org ainm na buidhne;

  • Is e orgvdc an t-ainm a th’ air an ionad dàta brìgheil.

Bha an in-mhalairt soirbheachail

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.

A-nis is urrainn dhuinn coimhead air a’ ghoireas a chaidh a thoirt a-steach às ùr:

Stòr air a thoirt a-steach

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

}

}

A-nis tha sinn gu cinnteach deiseil - tha sinn air crìoch a chuir air a’ mhionaid mu dheireadh (a ’toirt a-steach bun-structar a th’ ann mar-thà) agus tha sinn air beachdachadh air na prìomh phuingean co-obrachaidh le Terraform. 

Thionndaidh an inneal gu bhith gu math goireasach agus leigidh e leat cunntas a thoirt air do bhun-structar mar chòd, bho innealan brìgheil aon sholaraiche sgòthan gu bhith a ’toirt cunntas air goireasan co-phàirtean lìonra.

Aig an aon àm, tha neo-eisimeileachd bhon àrainneachd ga dhèanamh comasach obrachadh le goireasan ionadail, sgòthan, agus, a’ crìochnachadh le riaghladh àrd-ùrlair. Agus mura h-eil àrd-ùrlar le taic ann agus gu bheil thu airson fear ùr a chuir ris, faodaidh tu do sholaraiche fhèin a sgrìobhadh agus a chleachdadh.

Source: www.habr.com

Cuir beachd ann