In hoc articulo videbimus quid sit Terraformia, et etiam paulatim nostram infrastructuram deducemus
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
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
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.
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.
Retiacula 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.
Rectum 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.
3. Infrastructure initialization
Modulorum initializing ac plugins
Pro opere simplici "ornamentum generosi" utimur: laptop in Fenestra 10 OS et ornamentum e officiali distributione terraform.exe init
Computationem et retis infrastructuram describentes, consilio nostro configurationem experiendi deducimus, ubi videre possumus quid creabitur et quomodo inter se coniungetur.
-
Mandatum
- terraform plan -var-file=vcd.tfvars
. -
Nos adepto effectus
- Plan: 16 to add, 0 to change, 0 to destroy.
Hoc est, secundum hoc consilium, 16 opes creabuntur. -
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.
Inferentes 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