Quomodo nubem infrastructuram cum Terraform Curo

Quomodo nubem infrastructuram cum Terraform Curo

In hoc articulo videbimus quid sit Terraformia, et etiam paulatim nostram infrastructuram deducemus in nube cum VMware - tres vms parabimus ad diversos usus: procuratorem, tabulam repositionis et CMS.

De omnibus singillatim et in tribus gradibus:

1. Terraformia - descriptio, commoda et componentia

Terraformia est IaC (Infrastructure-as-Code) instrumentum aedificandi et administrandi virtualem infrastructuram utendi codicem.

Multa commoda notavimus in operando cum instrumento;

  • Celeritas novis colonis instruere (consuetudo virtualis ambitus). Typice, quo plures clientes novi sunt, eo magis "clipe" technicae subsidii virgam opus est ad novas facultates edendas. Cum Terraform, usores virtualis apparatus occasus mutare possunt (exempli gratia, sponte OS claudentes et partitionem disci virtualem augentes) non indigent subsidio technico vel machinam ipsam claudendi.

  • Instant verificationem de activation consilium new Tennant. Codicis infrastructure descriptione adhibito, statim inspicere possumus quid adiiciatur et quo ordine, tum in quo statu finali hic vel illa virtualis machina vel retis virtualis cum nexus ad machinas virtuales fient.

  • Facultates populares nubes tabulas describere. Potes uti instrumentum ex Amazonum et Google Cloud, ad suggesta privata in VMware vCloud Directoris, officia exhibens intra IaaS, Saas et Paas solutiones.

  • Curo multa nubes providers et distribue infrastructuram inter eas ad tolerantiam emendandam culpae, utens unica configuratione creare, egritudo et nubes administrare facultates.

  • Commodus usus ad partum demo stat pro software probatio et debugging. Potes creare et transferre pro probatione department, programmata probandi in diversis ambitibus parallelis, et statim mutare ac delere opes, creando unum tantum auxilium consilium aedificandi

"Terrarium" Terraform

Breviter de commodis instrumenti locuti sumus, nunc illud in partes eius rumpamus

PROVIDIT. 

In Terraform, fere cuiuslibet generis infrastructure subsidii repraesentari potest. Connexio inter facultates et API suggestum a provisore modulorum praebetur, quae te permittit ut facultates intra peculiare suggestum creare, v. gr. azure vel VMware vCloud Director.

Pro parte exertus, cum diversis provisoribus in diversis rostris penitus potes.

Resources (resources description).

Descriptio facultatum permittit te ad partes tribunalis regendas, sicut machinis virtualis vel retiacula. 

Potes descriptionem opum creare pro VMware vCloud Directore provisore te ipsum et hac descriptione ad facultates creandas cum aliquo provisore obnoxio qui vCloud Directore utitur. Tantum debes mutare parametros authenticas et nexum retis parametri ad provisor obnoxius debiti

PROVIDIT.

Haec pars efficit ut operationes perficiat ad institutionem initialem et sustentationem systematis operantis post virtualem machinas creando. Postquam resource virtualem machinam creavisti, praefectis uti potes configurare et coniungere via SSH, ratio operativa renovare, et detrahere et scriptam currere. 

Input and output variables.

Input variabiles - initus variabiles pro quolibet genere scandali. 

Variabiles output te permittunt ut bona servarent post opes creando et in aliis modulis variabilibus initus adhiberi possunt, exempli gratia in Provisioners angustos.

Foederatae.

Civitates files informationes de configuratione provisoris suggesti facultates condunt. Cum suggestum primum creatum est, nulla notitia de opibus et antequam aliqua operatione, Terraform statum renovat cum reali infrastructura opum iam descriptorum.

Praecipuum propositum civitatum est, ut fasciculum rerum iam creatarum opum servaret ad conformationem additarum facultatum et objectorum comparandi, ne crebris creationibus et mutationibus in suggestu vitaretur.

Defalta, status informationes in terraform.tfstate loci reposita est, sed si opus est, remota repositione pro labore quadrigis uti potest.

Potes etiam importare opes suggesti currentes in statum ad ulteriora mutuam cum aliis facultatibus quae vicissim sine auxilio Terraformi creatae sunt.  

2. De creatione infrastructure

Partes digestae sunt, nunc utentes Terraformi paulatim infrastructuram cum tribus machinis virtualibus creabimus. Prima cum nginx procuratorio inauguratus est, secunda cum tabulario repositione innixa Nextcloud et tertia cum CMS Bitrix.

codicem scribemus et illud utendo exemplo nostro exequemur nubibus on VMware vCloud Director. Utentes nostri rationem cum Administratore Organizationis iuribus accipiunt, si rationes eodem iure in alio VMware nube uteris, codicem ex nostris exemplis referre potes. Perge!

Primum, directorium creare pro novo incepto nostro in quo tabulae infrastructuram describentes collocabuntur.

mkdir project01

Deinceps infrastructuram partium describimus. Terraform relationes processusque imaginum gignit secundum descriptionem in antisto. Ipsae fasciculi nominari possunt ex proposito caudices descriptorum, exempli gratia, retiacula.tf - parametros retis describit pro infrastructura.

Partes infrastructurae nostrae describere, sequentia fasciculi creavimus;

Indicem imaginum.

main.tf - description parametrorum pro ambitu virtuali - machinis virtualis, vasis virtualis;

network.tf - descriptionem parametri virtualis retis NAT et Firewall regit;

variables.tf - Index variabilium quibus utimur;

vcd.tfvars - valores variabiles in VMware vCloud Director moduli exstent.

Configuratio linguarum Terraformium declarativa est et ordo caudicum nihil refert, nisi ad caudicem provisorem, quia in hoc impedimento iussa exsecutioni mandanda infrastructuras describimus, et in ordine exsecuta erunt.

Obstructionum structura.

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

# Block body

<IDENTIFIER> = <EXPRESSION> # Argument

}

Ad stipites describere, lingua programmandi HCL (HashiCorp Configurationis Language) usus est, describere potest infrastructuram JSON utens. Plus discere potes de syntaxi legitur in elit scriptor website.

Environment configurationis variabilis, variables.tf et vcd.tfvars

Primum, faciamus duas tabellas quae indicem omnium variabilium usitatum et eorum bona pro modulo VMware vCloud Directoris describentes. Primum, lima variabiles creare.

Contenta variabilium.tf fasciculi.

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

Ut ultrices varius tellus a suscipit.

  • vcd_org_user — username with Administrator iura,

  • vcd_org_password - user password,

  • vcd_org — nomen regiminis,

  • vcd_org_vdc — nomen virtualis notularum centrum;

  • vcd_org_url - API URL,

  • vcd_org_edge_name — nomen itineris virtualis;

  • vcd_org_catalog - nomen indicem cum exemplaribus machinae virtualis,

  • vcd_edge_external_ip — IP oratio publica,

  • vcd_edge_external_network — nomen reticuli externi,

  • vcd_org_hdd_sp — nomen repositionis HDD consilium,

  • vcd_org_ssd_sp — nomen ex consilio repositionis SSD.

Et intrent variabiles nostras:

  • vcd_edge_local_ip_nginx — IP oratio machinae virtualis cum NGINX,

  • vcd_edge_local_ip_bitrix - IP oratio machinae virtualis cum 1C: Bitrix,

  • vcd_edge_local_ip_nextcloud — IP oratio machinae virtualis cum Nextcloud.

Cum secundo fasciculo variabiles variabiles pro vCloud Directori moduli in vcd.tfvars fasciculi creamus et specificamus: Recordemur in exemplo nostro utimur. sua nubes mCloudssi cum alio provisore laboras, bona cum eis reprime. 

Tabula vcd.tfvars Contenta.

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"

Configuratio retis, network.tf.

Ambitus variabiles sunt, nunc machinae virtualis connexionis rationem statuemus - IP oratio privatam unicuique virtuali machinam tribuemus et Destination NAT ad "promovendum" portus ad network externam adhibebimus. Ut aditus ad administrationes portus limitet, accessum solum ad IP oratio nostra dabimus.

Quomodo nubem infrastructuram cum Terraform CuroRetiacula tabula ad Terraform suggestum creatum

Rectum norma virtualis retis nomine rete_lan01 creamus, portae defaltam: 192.168.110.254, et etiam cum spatio inscriptionis: 192.168.110.0/24.

Rectum ornatum describimus.

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"

  }

}

Praecepta firewall faciamus quae virtualis machinis ad Internet accedere sinunt. In hoc scandalo omnes opes virtuales in nube accessum ad Interreti habebunt:

Regulas de VM ad Interreti accessum describimus.

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]

}

Posita dependentia quod, post impedimentum vcdnetworkrouted.net dispensando, procedimus ad scandalum vcdnsxvfirewallrule configurandum., ab usura dependet. Hac optione utimur, quia quaedam dependentiae implicite in schemate cognosci possunt.

Deinde regulas creabimus quae aditus ad portuum ab retis extraneis permittunt et nostram IP electronicam indicabimus pro connectendi via SSH ministrantibus. Quisquis interreti usoris aditus ad portus 80 et 443 in interretiali servo habet, et usor cum IP inscriptione 90.1.15.1 aditus habet ad SSH portus virtualis servientium.

Aditus ad portus ab extraneis ornatum permittite.

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 praecepta creamus ad Internet accessu ex nube network locali:

Fontem NAT regulas describimus.

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]

}

Et ut configurationem retis expleret, addimus regulas Destination NAT ad officia accessu retis externae;

Additis regulis Destination 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]

}

Regula NAT ad translationem portum ad SSH sub Nginx servo addere.

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]

}

Regula NAT ad translationem portum cum servo SSH cum 1C-Bitrix addere.

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]

}

Regula NAT ad portum translationis cum servo SSH cum Nextcloud addere.

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 virtualis environment configuratione

Ut in principio articuli proposuimus, tres machinas virtuales creabimus. Praeparantur utentes "Guest Customization". Parametros retis ponemus secundum uncinos designatos, et tessera usoris automatice generabitur.

Describamus vApp in quo virtualis machinis collocabitur earumque figuratio.

Quomodo nubem infrastructuram cum Terraform CuroRectum apparatus configuratione

Faciamus vApp continens. Ut statim coniungi possimus vApp et VM ad retis virtualis, etiam modulo pendente addimus:

Create vas

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

}

Faciamus virtualis apparatus cum descriptione

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

}

}

Praecipuum ambitum in VM descriptione:

  • nomen - nomen apparatus virtualis;

  • vappname - nomen vApp, cui addere novum VM;

  • cataloguename / templatename - catalogue name and virtual machine template name,

  • storageprofile - default repono consilium.

Network parametri obstructionum:

  • type - type of connexa retiacula;

  • nominare - quod virtualis network ad coniungere VM ad,

  • isprimary - adaptor retis primarius;

  • ipallocation_mode — MANUAL / DHCP / LACUS oratio destinatio modus,

  • IP - IP oratio pro machina virtuali, eam manually exprimemus.

override_template_disk obstructionum:

  • sizeinmb - tabernus orbis magnitudine pro virtualis apparatus

  • storage_profile - repono consilium pro disco

Alterum VM faciamus cum descriptione tabularii Nextcloud repositionis

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 ]

}

In sectione vcdvminternal_disk describemus novam disci virtualem quae cum machina virtuali coniuncta est.

Explicationes pro vcdvminternadisk scandali:

  • bustype - genus orbis moderatoris

  • sizeinmb - orbis magnitudine

  • busnumber / unitnumber - nibh nexum locum in

  • storage_profile - repono consilium pro disco

Novissima VM in Bitrix describemus

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

}

}

Adaequationis OS ac installing additional scriptor

Reticulum praeparatur, machinae virtuales describuntur. Antequam infrastructuram nostram inferentes, provisionem initialem exercere possumus in antecessum utendi caudices et sine Ansible.

Intueamur quomodo ad OS update ac currat CMS Bitrix scriptor institutionis institutionis utens scandalum provisionis.

Primum, inaugurarimus CentOS fasciculos renovationis.

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

}

}

}

Designatio partium:

  • commeatus "exec-remotus" - iungo commeatus remotum scandalum

  • In nexu scandali genus ac parametri nexus describemus:

  • typus — protocollum, in nostro casu SSH;

  • user - user nomen;

  • password - user password. In casu nostro demonstramus parametrum vcdvappvm.nginx.customizationis[0].admin_password, quae password generatae pro usoris systematis reponit.

  • exercitum - IP oratio externa pro connexione;

  • portum - portum pro connexione, quod praelibatum erat in occasus DNAT;

  • inline - list of the order that will be entered. Mandata in hoc ordine ingredientur ut in hac sectione indicatur.

Exemplum, documentum institutionis 1C-Bitrix praeterea exequatur. Executio scriptionis in promptu erit, dum consilium currit. Ad scripturam instituendam, primum truncum describemus;

Institutionem 1C-Bitrix describemus.

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"

]

}

Et statim Bitrix renovatio describenda est.

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

]

}

}

Maximus! Scriptum non potest operari, si SELinux in antecessum non disable! Si articulum singularem desideras in inauguratione et configuratione CMS 1C-Bitrix per bitrix-env.sh, oc potes. utere nostro blog articulo in website.

3. Infrastructure initialization

Quomodo nubem infrastructuram cum Terraform CuroModulorum initializing ac plugins

Pro opere simplici "ornamentum generosi" utimur: laptop in Fenestra 10 OS et ornamentum e officiali distributione terraform.io. Lets unpack et initialize utens imperio; terraform.exe init

Computationem et retis infrastructuram describentes, consilio nostro configurationem experiendi deducimus, ubi videre possumus quid creabitur et quomodo inter se coniungetur.

  1. Mandatum - terraform plan -var-file=vcd.tfvars.

  2. Nos adepto effectus - Plan: 16 to add, 0 to change, 0 to destroy. Hoc est, secundum hoc consilium, 16 opes creabuntur.

  3. Consilium de launch nobis mandatum - terraform.exe apply -var-file=vcd.tfvars.

Machinae virtuales creabuntur, et tunc fasciculi quos enumeravimus agetur intra sectionem provisionis - OS renovabitur et CMS Bitrix instituetur.

Accipiens nexum data

Post consilium capiendum, notitias in forma textus recipere cupimus pro connectendis cum ministris, ad hanc sectionem output ut sequitur formabimus:

output "nginxpassword" {

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

}

Sequenti output nobis tesseram narrat machinae virtualis creatae:

Outputs: nginx_password = F#4u8!!N

Quam ob rem accessum habemus ad machinis virtualis cum systemate operante updated et fasciculis praestructis ad ulteriorem opus nostrum. Omnia parata sunt!

Sed quid si iam infrastructuram exsistes?

3.1. Opus Terraform cum infrastructure existentium

Simplex est, venas virtualis machinis importare potes eorumque vasis vApp utentes imperio importare.

Describamus vAPP resource et machinam virtualem.

resource "vcd_vapp" "Monitoring" {

name = "Monitoring"

org = "mClouds"

vdc = "mClouds"

}

resource "vcd_vapp_vm" "Zabbix" {

name = "Zabbix"

org = "mClouds"

vdc = "mClouds"

vapp = "Monitoring"

}

Proximus gradus est importare proprietates vApp opum in forma vcdvapp.<vApp> <org>.<orgvdc>.<vApp>Ubi:

  • vApp - vApp nomen;

  • org — nomen regiminis;

  • org_vdc - nomen virtualis Mauris interdum.

Quomodo nubem infrastructuram cum Terraform CuroInferentes vAPP resource proprietatibus

Sit importare proprietates facultatum VM in forma: vcdvappvm.<VM> <org>.<orgvdc>.<vApp>.<VM>, in quibus:

  • VM — VM, nomen;

  • vApp - vApp nomen;

  • org — nomen regiminis;

  • orgvdc nomen est virtualis Mauris interdum.

Import valuitque

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.

Nunc spectare possumus ad novam resource importatam:

Importari resource

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

}

}

Nunc certo parati sumus - cum ultimo puncto (invehendo infrastructuram existendi) omnia praecipua puncta operandi cum Terraform consideravimus. 

Instrumentum valde commodum evasit et permittit ut codicem tuum infrastructuram describere, incipiens a machinis virtualis unius nubis provisoris ad facultates retis componendas describendas.

Eodem tempore, independentia a ambitu efficit ut cum localibus, nubes opibus laborare, ac etiam suggestum administrare possit. Et si suggestum subnixum non est et vis novam addere, provisorem tuum scribere et eo uti potes.

Source: www.habr.com

Add a comment