Kuidas hallata pilveinfrastruktuuri Terraformi abil

Kuidas hallata pilveinfrastruktuuri Terraformi abil

Selles artiklis vaatleme, millest Terraform koosneb, ning kĂ€ime samm-sammult lĂ€bi, kuidas ĂŒles seada oma infrastruktuur pilves VMware'i abil — valmistame ette kolm VM erinevateks eesmĂ€rkideks: proksi, failide salvestamine ja CMS.

Kogu teema detailides ja kolmes etapis:

1. Terraform — kirjeldus, eelised ja koostisosad

Terraform on IaC (Infrastructure-as-Code) tööriist virtuaalse infrastruktuuri loomiseks ja haldamiseks koodi abil.

Tööriista kasutamise kÀigus mÀrkisime mitmeid eeliseid:

  • Uute klientide virtuaalsete keskkondade kiirus (kasutajakeskkondade). Üldiselt, mida rohkem uusi kliente, seda rohkem 'klikke' vajavad tehnilise toe töötajad uute ressursside avaldamiseks. Terraformi abil saavad kasutajad muuta virtuaalmasinate parameetreid (nt automaatselt vĂ€ljalĂŒlitada operatsioonisĂŒsteem ja suurendada virtuaalse ketta partitsiooni) ilma tehnilise toe ja masina vĂ€ljalĂŒlitamiseta.

  • Aktiveerimisplaani kohene kontrollimine uut teennust. Infrastruktuuri koodikirjelduste abil saame kohe kontrollida, mis ja millises jĂ€rjekorras lisatakse ning millises lĂ”ppseisundis on konkreetne virtuaalne masin vĂ”i virtuaalne vĂ”rk, mis on ĂŒhendatud virtuaalsete masinatega.

  • Enamik tuntud pilveteenuste platvormide kirjeldamine. Saate kasutada tööriista Amazonist ja Google Cloudist kuni era platvormideni, mis pĂ”hinevad VMware vCloud Directoril, pakkudes teenuseid IaaS, SaaS ja PaaS lahenduste raames.

  • Hallata mitmeid pilveteenuse pakkujaid ja jaotada infrastruktuuri nende vahel, et suurendada töökindlust, kasutades ĂŒhe konfiguratsiooni loomist, diagnostikat ja haldamist pilveressursside haldamiseks.

  • Mugav kasutamine demostendide loomiseks tarkvarade testimiseks ja silumiseks. Saate luua ja edastada stende testimisosakonnale, testida tarkvara erinevates keskkondades samal ajal ning kiiresti muuta ja eemaldada ressursse, luues vaid ĂŒhe ressursi loomise plaani.

„Terrarium“ Terraform

RÀÀkisime tööriista eeliste kohta, nĂŒĂŒd vaatame seda osade kaupa.

Teenusepakkujad. 

Terraformis saab praktiliselt iga infrastruktuuritĂŒĂŒbi esindada ressursina. Ressursside ja API platvormi vahelise ĂŒhenduse tagavad teenusepakkuja moduld, mis vĂ”imaldavad luua ressursse teatud platvormi raames, nĂ€iteks Azure vĂ”i VMware vCloud Director.

Projekti raames saate suhelda erinevate teenusepakkujatega erinevates platvormides.

Ressursid (ressursside kirjeldus).

Ressursside kirjeldus vÔimaldab hallata platvormi komponente, nÀiteks virtuaalseid masinaid vÔi vÔrgusid. 

Saate ise luua ressursi kirjeldusi VMware vCloud Directori teenusepakkuja jaoks ja kasutada seda kirjeldust ressursside loomiseks mis tahes hostiteenuse pakkuja juures, kes kasutab vCloud Directori. Peate vaid asendama autentimisparameetrid ja vajalikud vĂ”rguĂŒhenduse parameetrid soovitud hostiteenuse pakkujaga.

Provisionerid.

See komponent vĂ”imaldab teostada operatsioonisĂŒsteemi algse paigaldamise ja hooldamise toiminguid pĂ€rast virtuaalmasinate loomist. Kui olete virtuaalmasina ressursi loonud, saate provisioners'i abil seadistada ja ĂŒhenduda SSH kaudu, teostada operatsioonisĂŒsteemi vĂ€rskenduse ning laadida ja kĂ€ivitada skripti. 

Sisendi ja vÀljundi muutujad.

Sisendi muutujad — sissepÀÀsuks mĂ”eldud muutujad igasuguste plokkide jaoks. 

VÀljumise muutujad vÔimaldavad salvestada vÀÀrtusi pÀrast ressursside loomist ja neid saab kasutada sisendi muutujatena teiste moodulite, nÀiteks Provisioners'i plokkides.

Olekingud.

Olekufailid salvestavad teavet pakkujaressursside konfiguratsiooni kohta. Esmakordsel platvormi loomisel ei ole ressursiteavet ja enne iga operatsiooni uuendab Terraform olekut reaalse infrastruktuuriga juba kirjeldatud ressurssidest.

Oleku pÔhieesmÀrk on salvestada loodud ressursside objektide sidumine, et vÔrrelda lisatavate ressursside ja objektide konfiguratsiooni, vÀltimaks platvormi korduvat loomist ja muudatusi.

Vaikimisi oleku teave salvestatakse kohalikku faili terraform.tfstate, kuid vajadusel on vÔimalik kasutada ka kaughoidlat meeskonnatöötamiseks.

Samuti saate importida olemasolevad ressursid platvormilt olekusse, et hiljem interakteeruda teiste ressurssidega, mis omakorda on loodud ilma Terraformita.  

2. Infrastruktuuri loomine

Oleme koostisosad lĂ€bi vaadanud, nĂŒĂŒd loome Terraformi abil samm-sammult infrastruktuuri, mis koosneb kolmest virtuaalsest masinast. Esimene on varustatud nginxi proxiserveriga, teine Nextcloudi andmete hoidla ja kolmas CMS Bitrixiga.

Kirjutame ja kÀitame koodi meie VMware vCloud Directori. Meie kasutajad saavad kontot, mille Ôigused on Organization Administrator. Kui kasutate teises VMware'i pilves sama Ôigusega kontot, saate meie nÀidiskoodiga töötada. Alustame!

Esmalt loome meie uue projekti jaoks kausta, kuhu paigutame infrastruktuuri kirjeldavad failid.

mkdir project01

SeejĂ€rel kirjeldame infrastruktuuri komponente. Terraform loob seosed ja töötleb faile vastavalt failides olevatele kirjeldustele. Faile saab nimetada vastavalt kirjeldatavate blokkide eesmĂ€rgile, nĂ€iteks network.tf — kirjeldab infrastruktuuri vĂ”rguparameetreid.

Meie infrastruktuuri komponentide kirjeldamiseks oleme loonud jÀrgmised failid:

Failide nimekiri.

main.tf — kirjeldus virtuaalse keskkonna parameetritest — virtuaalsed masinad, virtuaalsed konteinerid;

network.tf — virtuaalse vĂ”rgu parameetrite ja NAT, Firewall reeglite kirjeldus;

variables.tf — muutuja nimekiri, mida kasutame;

vcd.tfvars — projekti muutuja vÀÀrtused VMware vCloud Director mooduli jaoks.

Terraformi konfigureerimiskeel on deklareeriv ja plokkide jÀrjekord ei oma tÀhtsust, vÀlja arvatud provisioner plokkide puhul, kuna selles plokis kirjeldame infrastruktuuri ettevalmistamisel tÀidetavaid kÀske ning need tÀidetakse jÀrjestikku.

Plokkide struktuur.

"" "" {

# Block body

= # Argument

}

Plokkide kirjeldamiseks kasutatakse oma programmeerimiskeelt HCL (HashiCorp Configuration Language), infrastruktuuri saab vĂ”imalusel kirjeldada ka JSON-i abil. TĂ€iendavat teavet sĂŒntaksi kohta saab lugeda arendaja veebisaidilt.

Keskkonna muutuja konfiguratsioon, variables.tf ja vcd.tfvars

Alustame kahe faili loomisega, mis kirjeldavad kÔiki kasutatavaid muutujaid ja nende vÀÀrtusi VMware vCloud Director'i Mooduli jaoks. Esiteks loome faili variables.tf.

File'i variables.tf sisu.

variable "vcd_org_user" {

  description = "vCD teenusekasutaja"

}

variable "vcd_org_password" {

  description = "vCD teenusekasutaja parool"

}

variable "vcd_org" {

  description = "vCD teenusekasutaja organisatsioon"

}

variable "vcd_org_vdc" {

  description = "vCD teenusekasutaja VDC"

}

variable "vcd_org_url" {

  description = "vCD teenusekasutaja URL"

}

variable "vcd_org_max_retry_timeout" {

  default = "60"

}

variable "vcd_org_allow_unverified_ssl" {

  default = "true"

}

variable "vcd_org_edge_name" {

  description = "vCD servamisi nimi"

}

variable "vcd_org_catalog" {

  description = "vCD avalik kataloog"

}

variable "vcd_template_os_centos7" {

  description = "OS CentOS 7"

  default = "CentOS7"

}

variable "vcd_org_ssd_sp" {

  description = "Salvestuspoliiid"

  default = "Kuldne salvestuspoliiid"

}

variable "vcd_org_hdd_sp" {

  description = "Salvestuspoliiid"

  default = "Pronksine salvestuspoliiid"

}

variable "vcd_edge_local_subnet" {

  description = "Organisatsiooni vÔrgu alamside"

}

variable "vcd_edge_external_ip" {

  description = "VÀline avalik IP"

}

variable "vcd_edge_local_ip_nginx" {}

variable "vcd_edge_local_ip_bitrix" {}

variable "vcd_edge_local_ip_nextcloud" {}

variable "vcd_edge_external_network" {}

Muutujate vÀÀrtused, mille me saame teenusepakkujalt.

  • vcd_org_user — organisatsiooni administraatori Ă”igustega kasutajanimi,

  • vcd_org_password — kasutaja parool,

  • vcd_org — organisatsiooni nimetus,

  • vcd_org_vdc — virtuaalse andmekeskuse nimetus,

  • vcd_org_url — API URL,

  • vcd_org_edge_name — virtuaalse ruuteri nimetus,

  • vcd_org_catalog — virtuaalmasinate malli katalooge nimetus,

  • vcd_edge_external_ip — avalik IP-aadress,

  • vcd_edge_external_network — vĂ€lise vĂ”rgu nimetus,

  • vcd_org_hdd_sp — HDD salvestuspoliitika nimetus,

  • vcd_org_ssd_sp — SSD salvestuspoliitika nimetus.

Ja sisestame oma muutujad:

  • vcd_edge_local_ip_nginx — NGINX-i virtuaalmasina IP-aadress,

  • vcd_edge_local_ip_bitrix — 1C:Bitrixi virtuaalmasina IP-aadress,

  • vcd_edge_local_ip_nextcloud — Nextcloudi virtuaalmasina IP-aadress.

Teise failina loome ja mÀÀratleme parameetrid VMware vCloud Director mooduli jaoks failis vcd.tfvars: Meenutame, et nĂ€ites kasutame oma pilve mClouds,, kui töötate teise teenusepakkujaga, kĂŒsige temalt vÀÀrtusi. 

Faili sisu 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 = "Kuldne salvestuspoliitika"

vcd_org_hdd_sp = "Pronksine salvestuspoliitika"

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 configuration, network.tf.

Keskkonfiguratsioon on mÀÀratud, nĂŒĂŒd seadistame virtuaalmasinate ĂŒhendusskeemi — igale virtuaalmasinale mÀÀrame privaatse IP-aadressi ning suuname Ports Destination NAT kaudu vĂ€lisse verre. Juhtimispordile ligipÀÀsu piiramiseks mÀÀrame ligipÀÀsu ainult meie IP-aadressile.

Kuidas hallata pilveinfrastruktuuri Terraformi abilVÔrguskeem loodava Terraform platvormi jaoks.

Loodame virtuaalse organisatsiooni vÔrku nimega net_lan01, vaikimisi vÀravaga: 192.168.110.254, samuti aadressiruumi: 192.168.110.0/24.

Kirjeldame virtuaalset vÔrku.

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"

  }

}

Loome tulemustereeglid, mis vĂ”imaldavad virtuaalmasinatel internetti pÀÀseda. Selle ploki raames on kĂ”ik pilveressursid ka internetti ĂŒhendatud:

Kirjeldame reegleid VM-i interneti ligipÀÀsuks.

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]

}

Seadetesse sÔltuvus, et pÀrast vcdnetworkrouted.net ploki töötlemist alustame vcdnsxvfirewallrule ploki konfigureerimist, kasutades dependson. Kasutame seda vÔimalust, kuna mÔned sÔltuvused vÔivad olla konfiguratsioonis vaikimisi tuvastatud.

SeejĂ€rel loome reeglid, mis lubavad juurdepÀÀsu portidele vĂ€lisest vĂ”rgust ja mÀÀrame oma IP-aadressi serveritesse SSH-ĂŒhenduse tegemiseks. IgaĂŒhel, kel on interneti juurdepÀÀs, on ligipÀÀs 80 ja 443 portidele veebiserveris, ning kasutajal, kelle IP-aadress on 90.1.15.1, on ligipÀÀs virtuaalserverite SSH-portidele.

Lubame juurdepÀÀsu portidele vÀlisest vÔrgust.

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]

}

Loome Source NAT reeglid, et pÀÀseda internetti pilvelokaalsest vÔrkust:

Kirjeldame Source NAT reegleid.

resource "vcd_nsxv_snat" "snat_local" {

edge_gateway = var.vcd_org_edge_name

  vĂ”rgutĂŒĂŒp = "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]

}

Ja lisame vÔrguploki konfiguratsiooni lÔpus Destination NAT reeglid teenustele vÀlisest vÔrgust juurde pÀÀsemiseks:

Lisame Destination NAT reeglid.

resource "vcd_nsxv_dnat" "dnat_tcp_nginx_https" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
vĂ”rgutĂŒĂŒp = "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
vĂ”rgutĂŒĂŒp = "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]

}

Lisame NAT reegli portide tÔlgendamiseks SSH serverile Nginx all.

resource "vcd_nsxv_dnat" "dnat_tcp-nginx_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
vĂ”rgutĂŒĂŒp = "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]

}

Lisame NAT reegli portide tÔlgendamiseks SSH serverile 1C-Bitrixiga.

resource "vcd_nsxv_dnat" "dnat_tcp_bitrix_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
vĂ”rgutĂŒĂŒp = "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]

}

Lisame NAT reegli portide tÔlgendamiseks SSH serverile Nextcloudiga.

resource "vcd_nsxv_dnat" "dnat_tcp_nextcloud_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
vĂ”rgutĂŒĂŒp = "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]

}

Virtuaalse keskkonna konfiguratsioon main.tf

Nagu me artikli alguses planeerisime, loome kolm virtuaalmasinat. Need seadistatakse "Guest Customization" abil. VÔrgusÀtted kirjutame vastavalt meie mÀÀratud seadistustele ja kasutaja parool genereeritakse automaatselt.

Kirjeldame vApp'i, milles asuvad virtuaalsed masinad ja nende konfiguratsioon.

Kuidas hallata pilveinfrastruktuuri Terraformi abilVirtuaalsete masinate konfiguratsioon

Loome vApp'i konteineri. Et saaksime koheselt ĂŒhendada vApp'i ja VM-i virtuaalvĂ”rku, lisame ka parameetri depends_on:

Loome konteineri

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

}

Loome virtuaalse masina koos kirjeldustega

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

}

}

Peamised parameetrid VM'i kirjelduses:

  • name — virtuaalse masina nimi,

  • vappname — vApp'i nimi, kuhu uus VM lisada,

  • catalogname / templatename — katalooge ja virtuaalmasina ĆĄablooni nimi,

  • storageprofile — vaikimisi salvestuspoliitika.

Network ploki parameetrid:

  • type — ĂŒhendatud vĂ”rgu tĂŒĂŒp,

  • name — millisesse virtuaalvĂ”rku VM'i ĂŒhendada,

  • isprimary — peamine vĂ”rguadapter,

  • ipallocation_mode — aadressi mÀÀramise reĆŸiim MANUAL / DHCP / POOL,

  • ip — IP-aadress virtuaalse masina jaoks, mÀÀrame kĂ€sitsi.

Override_template_disk blokk:

  • sizeinmb — virtuaalse masina kĂ€ivitamise ketta suurus

  • storage_profile — ketta sĂ€ilitamise poliitika

Loome teise VM failihoiustamise Nextcloud'i kirjeldustega

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 ]

}

Blokis vcdvminternal_disk kirjeldame uut virtuaalset ketast, mis ĂŒhendatakse virtuaalse masinaga.

Selgitused vcdvminternaldisk ploki kohta:

  • bustype — ketasjuhtme tĂŒĂŒp

  • sizeinmb — ketta suurus

  • busnumber / unitnumber — ĂŒhenduskoht adapteris

  • storage_profile — ketta sĂ€ilitamise poliitika

Kirjeldame viimast VM Bitrix'ile

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

}

}

OSe uuendamine ja tÀiendavate skriptide installimine

VÔrk on ette valmistatud, virtuaalsed masinad on kirjeldatud. Enne meie infrastruktuuri importimist saame eelnevalt lÀbi viia algse proviisiooni provisioners plokkide abil ja ilma Ansible'ita.

Vaadake, kuidas vÀrskendada OS-i ja kÀivitada CMS Bitrix'i installiskript provisioner ploki abil.

Alustame CentOS-i vÀrskenduste pakettide installimist.

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

}

}

}

Komponentide tÀhistamine:

  • provisioner «remote-exec» — ĂŒhendame kaugprovisionimise ploki

  • Ühenduse plokis kirjeldame tĂŒĂŒbi ja parameetrid ĂŒhendamiseks:

  • type — protokoll, meie puhul SSH;

  • user — kasutajanimi;

  • password — kasutaja parool. Meie juhul viitame parameetrile vcd_vapp_vm.nginx.customization[0].admin_password, mis salvestab genereeritud parooli sĂŒsteemi kasutaja jaoks.

  • host — vĂ€line IP-aadress ĂŒhendamiseks;

  • port — ĂŒhendamiseks vajalik port, mille mÀÀrasime DNAT-i seadistustes;

  • inline — loetleme kĂ€sud, mis viiakse sisse. KĂ€sud viiakse sisse jĂ€rjekorras, nagu see seadistuses nĂ€idatud.

NÀiteks jÀtkame 1C-Bitrixi installimise skripti tÀitmisega. Skripti tÀitmise tulemuse vÀljund on kÀttesaadav plaani tÀitmise ajal. Skripti installimiseks kirjeldame esmalt ploki:

Kirjeldame 1C-Bitrixi installimist.

provisioner "file" {

source = "prepare.sh"

sihtkoht = "/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"

]

}

Ja kohe kirjeldame Bitrixi vÀrskendust.

NĂ€idis 1C-Bitrixi varude haldamiseks.

resource "null_resource" "install_update_bitrix" {

provisioner "remote-exec" {

connection {

type = "ssh"

user = "root"

parool = vcd_vapp_vm.bitrix.customization[0].admin_password

host = var.vcd_edge_external_ip

port = "58302"

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

]

}

}

Oluline! Skript ei pruugi töötada, kui SELinux ei ole varem vĂ€lja lĂŒlitatud! Kui vajate ĂŒksikasjalikku artiklit CMS 1C-Bitrixi installimise ja seadistamise kohta, kasutades bitrix-env.sh, vĂ”ite suunata ennast meie artiklile blogis meie veebisaidil.

3. Infrastruktuuri initsialiseerimine

Kuidas hallata pilveinfrastruktuuri Terraformi abilMoodulite ja pistikprogrammide initsialiseerimine

Me kasutame töös lihtsat "gentlemani komplekti": sĂŒlearvuti Windows 10 operatsioonisĂŒsteemiga ja ametlikul kodulehel saadud distributsioon terraform.io. Lahti pakkida ja initsialiseerida kĂ€skluse abil: terraform.exe init

PÀrast arvutus- ja vÔrguinfrastruktuuri kirjeldamist kÀivitame planeerimise, et kontrollida meie konfiguratsiooni, kus saame nÀha, mida luuakse ja kuidas need omavahel mahuvad.

  1. KÀivita kÀsk - terraform plan -var-file=vcd.tfvars.

  2. Saame tulemuse - Plaan: lisada 16, 0 muuta, 0 hÀvitada. See tÀhendab, et selles plaanis luuakse 16 ressurssi.

  3. KĂ€ivitame plaani meeskonna kaudu - terraform.exe apply -var-file=vcd.tfvars.

Virtuaalsed masinad luuakse ja seejĂ€rel kĂ€ivitatakse meie loetletud paketid provisioner'i jaotises — operatsioonisĂŒsteem uuendatakse ja installitakse CMS Bitrix.

Ühendusandmete saamine

PĂ€rast plaani tĂ€itmist tahame saada serverite ĂŒhendusandmed tekstivormingus, selleks korraldame output jaotise jĂ€rgmiselt:

output "nginxpassword" {

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

}

Ja jÀrgmine vÀljund teatab meile loodud virtuaalse masina parooli:

Outputs: nginx_password = F#4u8!!N

KokkuvĂ”ttes saame juurdepÀÀsu uuendatud operatsioonisĂŒsteemiga virtuaalsetele masinatele ja eelinstalleeritud paketid meie edasiseks tööks. KĂ”ik on valmis!

Aga mis siis, kui teil on juba olemasolev infrastruktuur?

3.1. Terraformi töö juba olemasoleva infrastruktuuriga

KÔik on lihtne, saate importida praegused virtuaalsed masinad ja nende vApp konteinerid kÀsuga import.

Kirjeldame vAPP ressurssi ja virtuaalmasinat.

resource "vcd_vapp" "Monitoring" {

name = "Monitoring"

org = "mClouds"

vdc = "mClouds"

}

resource "vcd_vapp_vm" "Zabbix" {

name = "Zabbix"

org = "mClouds"

vdc = "mClouds"

vapp = "Monitoring"

}

JĂ€rgmine samm on importida vApp ressursside omadused formaadis vcdvapp. .., kus:

  • vApp — vApp nimi;

  • org — organisatsiooni nimi;

  • org_vdc — virtuaalse andmekeskuse nimi.

Kuidas hallata pilveinfrastruktuuri Terraformi abilvAPP ressursi omaduste import

Importime VM ressursside omadused formaadis: vcdvappvm. ..., mille sisu on jÀrgmine:

  • VM — VM nimi;

  • vApp — vApp nimi;

  • org — organisatsiooni nimi;

  • orgvdc — virtuaalse andmekeskuse nimi.

Importimine Ônnestus

C:UsersMikhailDesktopterraform>terraform import vcd_vapp_vm.Zabbix mClouds.mClouds.Monitoring.Zabbix

vcd_vapp_vm.Zabbix: Importimine ID-lt "mClouds.mClouds.Monitoring.Zabbix"...

vcd_vapp_vm.Zabbix: Import ette valmistatud!

vcd_vapp_vm importimiseks valmistatud

vcd_vapp_vm.Zabbix: Oleku vÀrskendamine... [id=urn:vcloud:vm:778f4a89-1c8d-45b9-9d94-0472a71c4d1f]

Importimine oli edukas!

Üles laaditud ressursid on nĂ€idatud ĂŒleval. Need ressursid on nĂŒĂŒd teie
Terraformi olekus ja neid haldab edaspidi Terraform.

NĂŒĂŒd saame vaadata uut imporditud ressurssi:

Imporditud ressurss

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

}

}

NĂŒĂŒd on kĂ”ik valmis — oleme viimase sammu (infot olemasolevasse infrastruktuuri import) lĂ”petanud ja vaadanud ĂŒle kĂ”ik Olulisemad punktid Terraformiga töötamisel. 

Tööriist on osutunud vĂ€ga mugavaks ja vĂ”imaldab kirjeldada teie infrastruktuuri kui koodi, alates ĂŒhe pilveteenuse pakkuja virtuaalmasinatest kuni vĂ”rgu komponentide ressursside kirjeldamiseni.

Selle kaudu on keskkonna sÔltumatus vÔimalus töötada nii kohalike kui ka pilve ressurssidega, lÔpetades platvormi haldamisega. Kui toetatud platvormi ei ole ja soovitakse uut lisada, on vÔimalik kirjutada oma pakkuja ja kasutada seda.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster