Sut i Reoli Seilwaith Cwmwl gyda Terraform

Sut i Reoli Seilwaith Cwmwl gyda Terraform

Yn yr erthygl hon, byddwn yn edrych ar yr hyn y mae Terraform yn ei gynnwys, a hefyd yn lansio ein seilwaith ein hunain fesul cam yn y cwmwl gyda VMware - paratoi tri VM at wahanol ddibenion: dirprwy, storio ffeiliau a CMS.

Popeth yn fanwl ac mewn tri cham:

1. Terraform - disgrifiad, buddion a chydrannau

Mae Terraform yn offeryn IaC (Isadeiledd-fel-Cod) ar gyfer adeiladu a rheoli seilwaith rhithwir gan ddefnyddio cod.

Wrth weithio gyda'r offeryn, gwnaethom nodi nifer o fanteision:

  • Cyflymder lleoli tenantiaid newydd (amgylcheddau rhithwir arferol). Fel arfer, po fwyaf o gwsmeriaid newydd, y mwyaf o "gliciau" y mae angen i'r staff cymorth technegol eu gwneud i gyhoeddi adnoddau newydd. Gyda Terraform, gall defnyddwyr newid paramedrau peiriannau rhithwir (er enghraifft, cau'r OS yn awtomatig a chynyddu'r rhaniad disg rhithwir) heb gyfranogiad cefnogaeth dechnegol a chau'r peiriant ei hun i lawr.

  • Gwiriad ar unwaith o'r cynllun actifadu tenant newydd. Gan ddefnyddio'r disgrifiad o'r cod seilwaith, gallwn wirio ar unwaith beth fydd yn cael ei ychwanegu ac ym mha drefn, yn ogystal ag ym mha gyflwr terfynol y bydd hwn neu'r peiriant rhithwir neu rwydwaith rhithwir gyda chysylltiadau â pheiriannau rhithwir.

  • Y gallu i ddisgrifio'r llwyfannau cwmwl mwyaf poblogaidd. Gallwch ddefnyddio'r offeryn o Amazon a Google Cloud i lwyfannau preifat yn seiliedig ar Gyfarwyddwr VMware vCloud sy'n cynnig atebion IaaS, SaaS a PaaS.

  • Rheoli darparwyr cwmwl lluosog a dosbarthu seilwaith rhyngddynt i wella goddefgarwch namau, gan ddefnyddio un ffurfweddiad i greu, diagnosio a rheoli adnoddau cwmwl.

  • Defnydd cyfleus ar gyfer creu standiau demo ar gyfer profi meddalwedd a dadfygio. Gallwch greu a throsglwyddo meinciau ar gyfer yr adran brofi, profi meddalwedd yn gyfochrog mewn gwahanol amgylcheddau, a newid a dileu adnoddau ar unwaith trwy greu un cynllun adeiladu adnoddau yn unig.

Teras "Terrarium".

Buom yn siarad yn fyr am fanteision yr offeryn, nawr byddwn yn ei ddadansoddi yn ei gydrannau

Darparwyr (darparwyr). 

Yn Terraform, gellir cynrychioli bron unrhyw fath o seilwaith fel adnodd. Mae'r cysylltiad rhwng adnoddau a'r llwyfan API yn cael ei ddarparu gan fodiwlau darparwr, sy'n eich galluogi i greu adnoddau o fewn platfform penodol, fel Cyfarwyddwr Azure neu VMware vCloud.

O fewn prosiect, gallwch ryngweithio â gwahanol ddarparwyr ar wahanol lwyfannau.

Adnoddau (disgrifiad o adnoddau).

Mae disgrifiad o adnoddau yn eich galluogi i reoli cydrannau platfform, fel peiriannau rhithwir neu rwydweithiau. 

Gallwch greu disgrifiad adnodd ar gyfer darparwr Cyfarwyddwr VMware vCloud eich hun a defnyddio'r disgrifiad hwn i greu adnoddau ar gyfer unrhyw ddarparwr cynnal sy'n defnyddio vCloud Director. Dim ond i'r darparwr cynnal gofynnol y mae angen i chi newid y paramedrau dilysu a pharamedrau cysylltiad rhwydwaith

Darpariaethwyr.

Mae'r gydran hon yn ei gwneud hi'n bosibl cyflawni gweithrediadau ar gyfer gosod a chynnal a chadw cychwynnol y system weithredu ar ôl creu peiriannau rhithwir. Unwaith y byddwch wedi creu adnodd peiriant rhithwir, gallwch ddefnyddio darparwyr i ffurfweddu a chysylltu trwy SSH, uwchraddio'r system weithredu, a lawrlwytho a gweithredu sgript. 

Mewnbwn ac Allbwn Newidynnau.

Newidynnau mewnbwn — newidynnau mewnbwn ar gyfer unrhyw fathau o floc. 

Mae newidynnau allbwn yn caniatáu i werthoedd gael eu cadw ar ôl creu adnoddau a gellir eu defnyddio fel newidynnau mewnbwn mewn modiwlau eraill, megis y bloc Provideers.

taleithiau.

Mae ffeiliau taleithiau yn storio gwybodaeth am gyfluniad adnoddau platfform y darparwr. Pan fydd y platfform yn cael ei greu gyntaf, nid oes unrhyw wybodaeth am yr adnoddau, a chyn unrhyw weithrediad, mae Terraform yn diweddaru'r wladwriaeth gyda seilwaith gwirioneddol yr adnoddau a ddisgrifiwyd eisoes.

Prif bwrpas gwladwriaethau yw arbed criw o wrthrychau o adnoddau a grëwyd eisoes ar gyfer cymharu cyfluniad adnoddau a gwrthrychau ychwanegol er mwyn osgoi ail-greu a newidiadau i'r platfform.

Mae gwybodaeth y wladwriaeth yn cael ei storio'n lleol yn y ffeil terraform.tfstate yn ddiofyn, ond gallwch ddefnyddio storfa bell ar gyfer gwaith tîm os oes angen.

Gallwch hefyd fewnforio'r adnoddau platfform presennol i'r wladwriaeth er mwyn rhyngweithio ymhellach ag adnoddau eraill, a grëwyd yn eu tro heb gymorth Terraform.  

2. Creu seilwaith

Mae'r cydrannau wedi'u datgymalu, nawr gyda chymorth Terraform byddwn yn raddol yn creu seilwaith gyda thri pheiriant rhithwir. Yr un cyntaf gyda gweinydd dirprwy nginx wedi'i osod, yr ail un gyda storfa ffeiliau yn seiliedig ar Nextcloud a'r trydydd gyda Bitrix CMS.

Byddwn yn ysgrifennu cod ac yn ei weithredu gan ddefnyddio'r enghraifft o'n cymylau ar VMware vCloud Cyfarwyddwr. Gyda ni, mae defnyddwyr yn cael cyfrif gyda hawliau Gweinyddwr Sefydliad, os ydych chi'n defnyddio cyfrif gyda'r un hawliau mewn cwmwl VMware arall, gallwch chi atgynhyrchu'r cod o'n henghreifftiau. Ewch!

Yn gyntaf, gadewch i ni greu cyfeiriadur ar gyfer ein prosiect newydd, a fydd yn cynnwys ffeiliau sy'n disgrifio'r seilwaith.

mkdir project01

Yna rydym yn disgrifio cydrannau'r seilwaith. Mae Terraform yn creu dolenni ac yn prosesu ffeiliau yn seiliedig ar y disgrifiad yn y ffeiliau. Gellir enwi'r ffeiliau eu hunain yn seiliedig ar bwrpas y blociau a ddisgrifir, er enghraifft, network.tf - yn disgrifio'r paramedrau rhwydwaith ar gyfer y seilwaith.

I ddisgrifio cydrannau ein seilwaith, rydym wedi creu'r ffeiliau canlynol:

Rhestr o ffeiliau.

main.tf - disgrifiad o baramedrau ar gyfer yr amgylchedd rhithwir - peiriannau rhithwir, cynwysyddion rhithwir;

network.tf - disgrifiad o baramedrau rhwydwaith rhithwir a NAT, rheolau Firewall;

Changes.tf - rhestr o newidynnau a ddefnyddiwn;

vcd.tfvars - gwerthoedd newidiol prosiect ar gyfer modiwl Cyfarwyddwr vCloud VMware.

Mae'r iaith ffurfweddu yn Terraform yn ddatganiadol ac nid yw trefn y blociau o bwys, ac eithrio blociau darparwr, oherwydd yn y bloc hwn, rydym yn disgrifio'r gorchmynion i'w gweithredu wrth baratoi'r seilwaith a byddant yn cael eu gweithredu mewn trefn.

Strwythur bloc.

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

# Block body

<IDENTIFIER> = <EXPRESSION> # Argument

}

Disgrifir blociau gan ddefnyddio eu hiaith raglennu eu hunain HCL (HashiCorp Configuration Language), mae'n bosibl disgrifio'r seilwaith gan ddefnyddio JSON. Am ragor o wybodaeth am gystrawen, gw darllen ar wefan y datblygwr.

Cyfluniad newidyn amgylchedd, variables.tf a vcd.tfvars

Yn gyntaf, gadewch i ni greu dwy ffeil sy'n disgrifio'r rhestr o'r holl newidynnau a ddefnyddir a'u gwerthoedd ar gyfer modiwl Cyfarwyddwr VMware vCloud. Yn gyntaf, gadewch i ni greu'r ffeil variables.tf.

Mae cynnwys y ffeil 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" {}

Gwerthoedd amrywiol a gawn gan y darparwr.

  • vcd_org_user - enw defnyddiwr gyda hawliau Gweinyddwr Sefydliad,

  • vcd_org_password - cyfrinair defnyddiwr,

  • vcd_org - enw'r sefydliad,

  • vcd_org_vdc - enw'r ganolfan ddata rithwir,

  • vcd_org_url - URL API,

  • vcd_org_edge_name - enw llwybrydd rhithwir,

  • vcd_org_catalog - enw'r cyfeiriadur gyda thempledi peiriant rhithwir,

  • vcd_edge_external_ip - cyfeiriad IP cyhoeddus,

  • vcd_edge_external_network - enw'r rhwydwaith allanol,

  • vcd_org_hdd_sp - enw polisi storio HDD,

  • vcd_org_ssd_sp yw enw'r polisi storio SSD.

A nodwch ein newidynnau:

  • vcd_edge_local_ip_nginx - cyfeiriad IP y peiriant rhithwir gyda NGINX,

  • vcd_edge_local_ip_bitrix - cyfeiriad IP y peiriant rhithwir gyda 1C: Bitrix,

  • vcd_edge_local_ip_nextcloud - Cyfeiriad IP y peiriant rhithwir gyda Nextcloud.

Yn yr ail ffeil, rydym yn creu ac yn pennu newidynnau ar gyfer modiwl Cyfarwyddwr VMware vCloud yn y ffeil vcd.tfvars: Dwyn i gof ein bod yn defnyddio yn ein hesiampl mClouds cwmwl hun, os ydych chi'n gweithio gyda darparwr arall, gwiriwch y gwerthoedd gydag ef. 

Mae cynnwys y ffeil 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"

Cyfluniad rhwydwaith, rhwydwaith.tf.

Mae'r newidynnau amgylchedd wedi'u gosod, nawr gadewch i ni ffurfweddu'r cynllun cysylltiad peiriant rhithwir - aseinio cyfeiriad IP preifat i bob peiriant rhithwir a defnyddio Destination NAT i "ymlaen" porthladdoedd i'r rhwydwaith allanol. Er mwyn cyfyngu mynediad i borthladdoedd rheoli, byddwn yn gosod mynediad ar gyfer ein cyfeiriad IP yn unig.

Sut i Reoli Seilwaith Cwmwl gyda TerraformDiagram rhwydwaith ar gyfer y llwyfan Terraform a grëwyd

Rydym yn creu rhwydwaith sefydliadol rhithwir gyda'r enw net_lan01, y porth rhagosodedig: 192.168.110.254, a hefyd gyda'r gofod cyfeiriad: 192.168.110.0/24.

Disgrifiwch y rhwydwaith rhithwir.

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"

  }

}

Gadewch i ni greu rheolau ar gyfer y wal dân, sy'n eich galluogi i ddarparu mynediad i'r Rhyngrwyd i beiriannau rhithwir. O fewn y bloc hwn, bydd gan yr holl adnoddau rhithwir yn y cwmwl fynediad i'r Rhyngrwyd:

Rydym yn disgrifio'r rheolau ar gyfer mynediad VM i'r Rhyngrwyd.

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]

}

Ar ôl sefydlu'r ddibyniaeth ar ôl prosesu'r bloc vcdnetworkrouted.net, byddwn yn symud ymlaen i gyfluniad y bloc vcdnsxvfirewallrule, trwy ddefnyddio dibynnu ar. Rydym yn defnyddio'r opsiwn hwn oherwydd gall rhai dibyniaethau gael eu cydnabod yn ymhlyg yn y ffurfweddiad.

Nesaf, byddwn yn creu rheolau sy'n caniatáu mynediad i borthladdoedd o'r rhwydwaith allanol ac yn nodi ein cyfeiriad IP ar gyfer cysylltu trwy SSH i'r gweinyddwyr. Mae gan unrhyw ddefnyddiwr Rhyngrwyd fynediad i borthladdoedd 80 a 443 ar y gweinydd gwe, ac mae gan ddefnyddiwr â chyfeiriad IP 90.1.15.1 fynediad i borthladdoedd SSH y gweinyddwyr rhithwir.

Rydym yn caniatáu mynediad i borthladdoedd o'r rhwydwaith allanol.

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]

}

Creu rheolau NAT Ffynhonnell ar gyfer cyrchu'r Rhyngrwyd o rwydwaith ardal leol y cwmwl:

Disgrifiwch reolau Ffynhonnell 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]

}

Ac ar ddiwedd cyfluniad bloc y rhwydwaith, rydym yn ychwanegu rheolau Cyrchfan NAT ar gyfer cyrchu gwasanaethau o rwydwaith allanol:

Ychwanegu rheolau NAT Cyrchfan.

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]

}

Ychwanegu rheol NAT i gyfieithu porthladdoedd i'r gweinydd SSH o dan 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]

}

Rydym yn ychwanegu rheol NAT ar gyfer cyfieithu porthladd i'r gweinydd SSH gyda 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]

}

Ychwanegu rheol NAT i gyfieithu porthladdoedd i'r gweinydd SSH gyda 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]

}

Ffurfweddiad amgylchedd rhithwir main.tf

Fel y gwnaethom gynllunio ar ddechrau'r erthygl, byddwn yn creu tri pheiriant rhithwir. Byddant yn cael eu paratoi gyda "Guest Customization". Byddwn yn ysgrifennu paramedrau'r rhwydwaith yn ôl y gosodiadau a nodwyd gennym, a chynhyrchir y cyfrinair gan y defnyddiwr yn awtomatig.

Gadewch i ni ddisgrifio'r vApp y bydd y peiriannau rhithwir a'u cyfluniad wedi'u lleoli ynddo.

Sut i Reoli Seilwaith Cwmwl gyda TerraformCyfluniad peiriant rhithwir

Gadewch i ni greu cynhwysydd vApp. Er mwyn i ni allu cysylltu'r vApp a'r VM ar unwaith â'r rhwydwaith rhithwir, rydym hefyd yn ychwanegu'r paramedr dibynnu_on:

Creu cynhwysydd

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

}

Creu peiriant rhithwir gyda disgrifiad

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

}

}

Y prif baramedrau yn y disgrifiad o'r VM:

  • enw yw enw'r peiriant rhithwir,

  • vappname - enw'r vApp i ychwanegu VM newydd ynddo,

  • enw catalog / enw ​​templed - enw catalog ac enw templed peiriant rhithwir,

  • storageprofile - polisi storio diofyn.

Paramedrau bloc rhwydwaith:

  • math - math o rwydwaith cysylltiedig,

  • enw - pa rwydwaith rhithwir i gysylltu'r VM ag ef,

  • isprimary - addasydd rhwydwaith cynradd,

  • ipallocation_mode - modd dyrannu cyfeiriad MANUAL / DHCP / POOL,

  • ip - cyfeiriad IP ar gyfer y peiriant rhithwir, byddwn yn ei nodi â llaw.

diystyru_template_disk bloc:

  • sizeinmb - maint disg cychwyn ar gyfer y peiriant rhithwir

  • storage_profile - polisi storio ar gyfer y ddisg

Gadewch i ni greu ail VM gyda disgrifiad o storfa ffeiliau 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 ]

}

Yn yr adran vcdvminternal_disk, rydym yn disgrifio disg rhithwir newydd sydd wedi'i gysylltu â'r peiriant rhithwir.

Esboniadau ar y bloc vcdvminternaldisk:

  • bustype - math rheolydd disg

  • sizeinmb - maint disg

  • rhif bws / rhif uned - pwynt cysylltu yn yr addasydd

  • storage_profile - polisi storio ar gyfer y ddisg

Gadewch i ni ddisgrifio'r VM olaf ar 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

}

}

Diweddariad OS a gosod sgriptiau ychwanegol

Mae'r rhwydwaith yn cael ei baratoi, disgrifir y peiriannau rhithwir. Cyn mewnforio ein seilwaith, gallwn ragddarparu gyda blociau darparwr a heb ddefnyddio Ansible.

Gadewch i ni ystyried sut i ddiweddaru'r OS a rhedeg sgript gosod Bitrix CMS gan ddefnyddio'r bloc darparwr.

Gadewch i ni osod y pecynnau gwasanaeth CentOS yn gyntaf.

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

}

}

}

Dynodi cydrannau:

  • darparwr "remote-exec" - cysylltu'r bloc "darparu" o bell

  • Yn y bloc cysylltiad, rydym yn disgrifio'r math a'r paramedrau ar gyfer y cysylltiad:

  • math - protocol, yn ein hachos ni SSH;

  • defnyddiwr - enw defnyddiwr;

  • cyfrinair - cyfrinair defnyddiwr. Yn ein hachos ni, rydym yn cyfeirio at y paramedr vcdvappvm.nginx.customization[0].admin_password, sy'n storio'r cyfrinair a gynhyrchir gan ddefnyddiwr y system.

  • gwesteiwr - cyfeiriad IP allanol ar gyfer cysylltiad;

  • porthladd - porthladd ar gyfer cysylltiad, a nodwyd yn flaenorol yn y gosodiadau DNAT;

  • inline - rhestrwch y rhestr o orchmynion a fydd yn cael eu nodi. Bydd y gorchmynion yn cael eu rhoi mewn trefn, fel y nodir yn yr adran hon.

Fel enghraifft, gadewch i ni hefyd weithredu'r sgript gosod 1C-Bitrix. Bydd allbwn canlyniad gweithredu'r sgript ar gael yn ystod gweithrediad y cynllun. I osod y sgript, rydym yn disgrifio'r bloc yn gyntaf:

Gadewch i ni ddisgrifio gosod 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"

]

}

A byddwn yn disgrifio diweddariad Bitrix ar unwaith.

Enghraifft o ddarpariaeth 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"

]

}

}

Pwysig! Efallai na fydd y sgript yn gweithio oni bai bod SELinux wedi'i analluogi ymlaen llaw! Os oes angen erthygl fanwl arnoch ar osod a ffurfweddu CMS 1C-Bitrix gan ddefnyddio bitrix-env.sh, gallwch defnyddiwch ein herthygl blog ar y wefan.

3. Cychwyn seilwaith

Sut i Reoli Seilwaith Cwmwl gyda TerraformCychwyn modiwlau ac ategion

Ar gyfer gwaith, rydym yn defnyddio “set dyn bonheddig” syml: gliniadur gyda Windows 10 a phecyn dosbarthu o'r wefan swyddogol terraform.io. Dadbacio a chychwyn gyda'r gorchymyn: terraform.exe init

Ar ôl disgrifio'r seilwaith cyfrifiadurol a rhwydwaith, rydym yn dechrau cynllunio i brofi ein cyfluniad, lle gallwn weld beth fydd yn cael ei greu a sut mae'n gysylltiedig â'i gilydd.

  1. Gweithredwch y gorchymyn - terraform plan -var-file=vcd.tfvars.

  2. Cawn y canlyniad - Plan: 16 to add, 0 to change, 0 to destroy. Hynny yw, yn ôl y cynllun hwn, bydd 16 o adnoddau yn cael eu creu.

  3. Lansio'r cynllun ar orchymyn - terraform.exe apply -var-file=vcd.tfvars.

Bydd peiriannau rhithwir yn cael eu creu, ac yna bydd y pecynnau a restrir gennym yn cael eu gweithredu o fewn yr adran darparwr - bydd yr OS yn cael ei ddiweddaru a bydd CMS Bitrix yn cael ei osod.

Cael data cysylltiad

Ar ôl gweithredu'r cynllun, rydym am dderbyn data ar ffurf testun ar gyfer cysylltu â gweinyddwyr, ar gyfer hyn byddwn yn trefnu'r adran allbwn fel a ganlyn:

output "nginxpassword" {

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

}

Ac mae'r allbwn canlynol yn dweud wrthym y cyfrinair o'r peiriant rhithwir a grëwyd:

Outputs: nginx_password = F#4u8!!N

O ganlyniad, rydym yn cael mynediad i beiriannau rhithwir gyda system weithredu wedi'i diweddaru a phecynnau wedi'u gosod ymlaen llaw ar gyfer ein gwaith pellach. Mae'r cyfan yn barod!

Ond beth os oes gennych chi seilwaith yn barod?

3.1. Teras yn gweithio gyda'r seilwaith presennol

Mae'n syml, gallwch fewnforio peiriannau rhithwir cyfredol a'u cynwysyddion vApp gan ddefnyddio'r gorchymyn mewnforio.

Gadewch i ni ddisgrifio'r adnodd vAPP a'r peiriant rhithwir.

resource "vcd_vapp" "Monitoring" {

name = "Monitoring"

org = "mClouds"

vdc = "mClouds"

}

resource "vcd_vapp_vm" "Zabbix" {

name = "Zabbix"

org = "mClouds"

vdc = "mClouds"

vapp = "Monitoring"

}

Y cam nesaf yw mewnforio eiddo adnoddau vApp yn y fformat vcdvapp.<vApp> <org>.<orgvdc>.<vApp>, lle:

  • vApp yw enw'r vApp;

  • org yw enw'r sefydliad;

  • org_vdc yw enw'r ganolfan ddata rithwir.

Sut i Reoli Seilwaith Cwmwl gyda TerraformMewnforio eiddo adnoddau vAPP

Gadewch i ni fewnforio priodweddau adnoddau VM yn y fformat: vcdvappvm.<VM> <org>.<orgvdc>.<vApp>.<VM>, lle:

  • VM - enw VM;

  • vApp yw enw'r vApp;

  • org yw enw'r sefydliad;

  • orgvdc yw enw'r ganolfan ddata rithwir.

Roedd mewnforio yn llwyddiannus

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.

Nawr gallwn edrych ar yr adnodd sydd newydd ei fewnforio:

Adnodd wedi'i fewnforio

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

}

}

Nawr rydym yn bendant yn barod - rydym wedi gorffen gyda'r eiliad olaf (mewnforio i seilwaith presennol) ac wedi ystyried yr holl brif bwyntiau gweithio gyda Terraform. 

Trodd yr offeryn yn gyfleus iawn ac mae'n caniatáu ichi ddisgrifio'ch seilwaith fel cod, yn amrywio o beiriannau rhithwir un darparwr cwmwl i ddisgrifio adnoddau cydrannau rhwydwaith.

Ar yr un pryd, mae annibyniaeth o'r amgylchedd yn ei gwneud hi'n bosibl gweithio gydag adnoddau lleol, cwmwl, ac, yn gorffen gyda rheolaeth platfform. Ac os nad oes platfform â chymorth a'ch bod am ychwanegu un newydd, gallwch ysgrifennu eich darparwr eich hun a'i ddefnyddio.

Ffynhonnell: hab.com

Ychwanegu sylw