د Terraform سره د کلاوډ زیربنا اداره کولو څرنګوالی

د Terraform سره د کلاوډ زیربنا اداره کولو څرنګوالی

په دې مقاله کې به موږ وګورو چې Terraform څه شی لري، او په تدریجي ډول زموږ خپل زیربنا هم پیلوي په بادل کې د VMware سره - موږ به د مختلفو موخو لپاره درې VM چمتو کړو: پراکسي، د فایل ذخیره او CMS.

د هر څه په اړه په تفصیل او په دریو مرحلو کې:

1. Terraform - توضیحات، ګټې او برخې

Terraform د کوډ په کارولو سره د مجازی زیربنا رامینځته کولو او اداره کولو لپاره د IaC (Infrastructure-as-Code) وسیله ده.

موږ د وسیلې سره کار کولو کې ډیری ګټې یادونه کړې:

  • د نوي کرایه کونکو د ګمارلو سرعت (د دودیز مجازی چاپیریال). په عموم ډول، څومره چې نوي پیرودونکي شتون لري، د تخنیکي مالتړ کارمندانو ډیر "کلکونه" د نوي سرچینو خپرولو لپاره اړتیا لري. د Terraform سره، کاروونکي کولی شي د مجازی ماشین ترتیبات بدل کړي (د مثال په توګه، په اتوماتيک ډول د OS بندول او د مجازی ډیسک ویش زیاتول) پرته له دې چې تخنیکي ملاتړ ته اړتیا ولري یا پخپله ماشین بند کړي.

  • د فعال کولو پلان سمدستي تایید نوی کرایه دار د زیربنا کوډ توضیحاتو په کارولو سره ، موږ کولی شو سمدلاسه وګورو چې څه به اضافه شي او په کوم ترتیب کې ، او همدارنګه په کوم وروستي حالت کې دا یا هغه مجازی ماشین یا مجازی شبکه به د مجازی ماشینونو سره اړیکې ولري.

  • د ډیری مشهور کلاوډ پلیټ فارمونو تشریح کولو وړتیا. تاسو کولی شئ وسیله وکاروئ د ایمیزون او ګوګل کلاوډ څخه ، د VMware vCloud ډایرکټر پراساس خصوصي پلیټ فارمونو ته ، د IaaS ، SaaS او PaaS حلونو کې خدمات وړاندې کوي.

  • ډیری کلاوډ چمتو کونکي اداره کړئ او د دوی تر مینځ زیربنا توزیع کړئ ترڅو د غلطۍ زغم ښه کړي ، د بادل سرچینو رامینځته کولو ، تشخیص او اداره کولو لپاره د یو واحد ترتیب په کارولو سره.

  • د ډیمو سټینډونو رامینځته کولو لپاره اسانه کارول د سافټویر ازموینې او ډیبګ کولو لپاره. تاسو کولی شئ د ازموینې څانګې لپاره سټینډونه رامینځته او لیږد کړئ ، په موازي ډول په مختلف چاپیریالونو کې د ازموینې سافټویر ، او سمدستي یوازې د یوې سرچینې جوړونې پلان رامینځته کولو سره سرچینې بدل او حذف کړئ.

Terraform "Terrarium" Terraform

موږ په لنډه توګه د وسیلې د ګټو په اړه خبرې وکړې، اوس راځئ چې دا د هغې په برخو وویشو

برابرونکي. 

په Terraform کې، نږدې هر ډول زیربنا د سرچینې په توګه استازیتوب کیدی شي. د سرچینو او API پلیټ فارم ترمینځ اړیکه د چمتو کونکي ماډلونو لخوا چمتو شوې ، کوم چې تاسو ته اجازه درکوي په ځانګړي پلیټ فارم کې سرچینې رامینځته کړئ ، د مثال په توګه ، Azure یا VMware vCloud Director.

د پروژې د یوې برخې په توګه، تاسو کولی شئ په مختلفو پلیټ فارمونو کې د مختلف چمتو کونکو سره اړیکه ونیسئ.

سرچینې (د سرچینې توضیحات).

د سرچینو توضیحات تاسو ته اجازه درکوي د پلیټ فارم اجزا اداره کړئ ، لکه مجازی ماشینونه یا شبکې. 

تاسو کولی شئ پخپله د VMware vCloud ډایرکټر چمتو کونکي لپاره د سرچینې توضیحات رامینځته کړئ او دا توضیحات د هر کوربه چمتو کونکي سره سرچینې رامینځته کولو لپاره وکاروئ چې د vCloud ډایرکټر کاروي. تاسو یوازې اړتیا لرئ د اړتیا وړ کوربه توب چمتو کونکي ته د تصدیق پیرامیټرې او د شبکې پیوستون پیرامیټونه بدل کړئ

روزونکي.

دا برخه د مجازی ماشینونو رامینځته کولو وروسته د عملیاتي سیسټم لومړني نصب او ساتنې لپاره عملیات ترسره کول امکان لري. یوځل چې تاسو د مجازی ماشین سرچینې رامینځته کړې ، تاسو کولی شئ د SSH له لارې تنظیم کولو او وصل کولو لپاره چمتو کونکي وکاروئ ، عملیاتي سیسټم تازه کړئ ، او سکریپټ ډاونلوډ او چل کړئ. 

د داخل او محصول متغیرونه.

د ننوتلو متغیرونه - د هر ډول بلاک ډولونو لپاره د داخل متغیرونه. 

د محصول تغیرات تاسو ته اجازه درکوي د سرچینو رامینځته کولو وروسته ارزښتونه خوندي کړئ او په نورو ماډلونو کې د ان پټ متغیر په توګه کارول کیدی شي ، د مثال په توګه د پروویژنرز بلاک کې.

ایالتونه.

د ریاست فایلونه د چمتو کونکي پلیټ فارم سرچینو ترتیب کولو په اړه معلومات ذخیره کوي. کله چې پلیټ فارم په لومړي ځل جوړ شي، د سرچینو په اړه هیڅ معلومات شتون نلري او د هر ډول عملیاتو څخه مخکې، Terraform د هغه سرچینو اصلي زیربنا سره چې دمخه یې تشریح شوي تازه کوي.

د دولتونو اصلي هدف د دمخه رامینځته شوي سرچینو څخه د شیانو یوه ډله خوندي کول دي ترڅو د اضافه سرچینو او شیانو ترتیب پرتله کولو لپاره په پلیټ فارم کې د تکرار رامینځته کیدو او بدلونونو څخه مخنیوی وشي.

د ډیفالټ په توګه، د دولت معلومات په محلي terraform.tfstate فایل کې زیرمه شوي، مګر که اړتیا وي، دا ممکنه ده چې د ټیم کار لپاره د ریموټ ذخیره کارول ممکن وي.

تاسو کولی شئ اوسني پلیټ فارم سرچینې په دولت کې وارد کړئ ترڅو د نورو سرچینو سره نور تعامل وکړي چې په پایله کې د Terraform مرستې پرته رامینځته شوي.  

2. د زیربنا جوړول

اجزاوې ترتیب شوي، اوس د Terraform په کارولو سره موږ به په تدریجي ډول د دریو مجازی ماشینونو سره زیربنا جوړه کړو. لومړی د نګینکس پراکسي سرور نصب سره ، دوهم د Nextcloud پراساس د فایل ذخیره کولو سره او دریم د CMS Bitrix سره.

موږ به کوډ ولیکو او زموږ د مثال په کارولو سره به یې اجرا کړو بادل په VMware vCloud ډایرکټر کې. زموږ کاروونکي د سازمان د مدیر حقونو سره یو حساب ترلاسه کوي. که تاسو په بل VMware کلاوډ کې د ورته حقونو سره حساب کاروئ، تاسو کولی شئ زموږ د مثالونو څخه کوډ بیا تولید کړئ. لاړ شه!

لومړی، راځئ چې زموږ د نوې پروژې لپاره لارښود جوړ کړو په کوم کې چې د زیربنا تشریح کولو فایلونه به ځای په ځای شي.

mkdir project01

بیا، موږ د زیربناوو برخې تشریح کوو. Terraform اړیکې رامینځته کوي او فایلونه په فایلونو کې د توضیحاتو پراساس پروسس کوي. فایلونه پخپله نومول کیدی شي د بلاکس هدف پراساس چې تشریح شوي ، د مثال په توګه ، network.tf - د زیربنا لپاره د شبکې پیرامیټونه تشریح کوي.

زموږ د زیربنا اجزاو تشریح کولو لپاره، موږ لاندې فایلونه جوړ کړل:

د فایلونو لیست.

main.tf - د مجازی چاپیریال لپاره د پیرامیټونو توضیحات - مجازی ماشینونه، مجازی کانټینرونه؛

network.tf - د مجازی شبکې پیرامیټونو توضیحات او د NAT او فایروال قواعد؛

variables.tf - د متغیرونو لیست چې موږ یې کاروو؛

vcd.tfvars - د VMware vCloud ډایرکټر ماډل لپاره د پروژې متغیر ارزښتونه.

په Terraform کې د ترتیب کولو ژبه اعلاناتي ده او د بلاکونو ترتیب هیڅ اهمیت نلري، پرته له دې چې چمتو کونکي بلاکونه، ځکه چې په دې بلاک کې موږ هغه حکمونه تشریح کوو چې د زیربنا چمتو کولو په وخت کې اجرا کیږي او دوی به په ترتیب سره اجرا شي.

د بلاک جوړښت.

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

# Block body

<IDENTIFIER> = <EXPRESSION> # Argument

}

د بلاکونو تشریح کولو لپاره، د هغې د خپل پروګرام کولو ژبه HCL (HashiCorp Configuration Language) کارول کیږي؛ دا ممکنه ده چې د JSON په کارولو سره زیربنا تشریح کړئ. تاسو کولی شئ د ترکیب په اړه نور معلومات زده کړئ د پراختیا کونکي ویب پاڼه کې ولولئ.

د چاپیریال متغیر ترتیب، variables.tf او vcd.tfvars

لومړی، راځئ چې دوه فایلونه جوړ کړو چې د VMware vCloud ډایرکټر ماډل لپاره د ټولو کارول شویو متغیرونو لیست او د دوی ارزښتونه تشریح کوي. لومړی، راځئ چې د variables.tf فایل جوړ کړو.

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

متغیر ارزښتونه چې موږ یې د چمتو کونکي څخه ترلاسه کوو.

  • vcd_org_user — د سازمان د مدیر حقونو سره کارن نوم،

  • vcd_org_password — د کارن پټنوم،

  • vcd_org — د سازمان نوم،

  • vcd_org_vdc — د مجازی معلوماتو مرکز نوم،

  • vcd_org_url - API URL،

  • vcd_org_edge_name — د مجازی روټر نوم،

  • vcd_org_catalog — د مجازی ماشین ټیمپلیټونو سره د لارښود نوم،

  • vcd_edge_external_ip - عامه IP پته،

  • vcd_edge_external_network — د بهرنۍ شبکې نوم،

  • vcd_org_hdd_sp — د HDD ذخیره کولو پالیسۍ نوم،

  • vcd_org_ssd_sp - د SSD ذخیره کولو پالیسۍ نوم.

او زموږ متغیرونه دننه کړئ:

  • vcd_edge_local_ip_nginx — د NGINX سره د مجازی ماشین IP پته،

  • vcd_edge_local_ip_bitrix - د 1C سره د مجازی ماشین IP پته: Bitrix،

  • vcd_edge_local_ip_nextcloud - د Nextcloud سره د مجازی ماشین IP پته.

د دوهم فایل سره موږ د vcd.tfvars فایل کې د VMware vCloud ډایرکټر ماډل لپاره متغیرونه رامینځته کوو او مشخص کوو: راځئ چې یادونه وکړو چې زموږ په مثال کې موږ کاروو خپل کلاوډ mClouds، که تاسو د بل چمتو کونکي سره کار کوئ ، د دوی سره ارزښتونه چیک کړئ. 

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

د شبکې ترتیب، network.tf.

د چاپیریال تغیرات تنظیم شوي ، اوس به موږ د مجازی ماشین اتصال سکیم تنظیم کړو - موږ به هر مجازی ماشین ته یو شخصي IP پته وټاکو او د منزل NAT به بهرنۍ شبکې ته بندرونه "پرمختللي" وکاروو. د مدیریت بندرونو ته د لاسرسي محدودولو لپاره ، موږ به یوازې زموږ د IP پتې لپاره لاسرسی تنظیم کړو.

د Terraform سره د کلاوډ زیربنا اداره کولو څرنګوالید ټریفارم پلیټ فارم لپاره د شبکې ډیاګرام رامینځته کیږي

موږ د net_lan01 په نوم یو مجازی سازماني شبکه رامینځته کوو، د ډیفالټ دروازې: 192.168.110.254، او همدارنګه د پتې ځای سره: 192.168.110.0/24.

موږ یو مجازی شبکه تشریح کوو.

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"

  }

}

راځئ چې د فایروال قواعد رامینځته کړو چې مجازی ماشینونو ته اجازه ورکوي انټرنیټ ته لاسرسی ومومي. د دې بلاک دننه، په بادل کې ټولې مجازی سرچینې به انټرنیټ ته لاسرسی ولري:

موږ انټرنیټ ته د VM لاسرسي لپاره مقررات تشریح کوو.

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]

}

د انحصار رامینځته کولو سره چې د vcdnetworkrouted.net بلاک پروسس کولو وروسته ، موږ د vcdnsxvfirewallrule بلاک تنظیم کولو ته دوام ورکوو، په کارولو اړه لري پر. موږ دا اختیار کاروو ځکه چې ځینې انحصارونه په ترتیب کې په ښکاره ډول پیژندل کیدی شي.

بیا، موږ به هغه مقررات رامینځته کړو چې د بهرني شبکې څخه بندرونو ته د لاسرسي اجازه ورکوي او زموږ IP پته د SSH له لارې سرورونو ته وصل کولو لپاره په ګوته کوي. د انټرنیټ هر کارونکي په ویب سرور کې 80 او 443 بندرونو ته لاسرسی لري، او یو کارن چې د 90.1.15.1 IP پته لري د مجازی سرورونو SSH بندرونو ته لاسرسی لري.

د بهرني شبکې څخه بندرونو ته د لاسرسي اجازه ورکړئ.

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]

}

موږ د بادل محلي شبکې څخه انټرنیټ ته د لاسرسي لپاره د سرچینې NAT قواعد رامینځته کوو:

موږ د سرچینې 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]

}

او د شبکې بلاک ترتیب بشپړولو لپاره، موږ د بهرني شبکې څخه خدماتو ته د لاسرسي لپاره د منزل NAT قواعد اضافه کوو:

د منزل 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]

}

د Nginx لاندې SSH سرور ته د پورټ ژباړې لپاره د NAT قاعده اضافه کړئ.

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]

}

د SSH سرور ته د 1C-Bitrix سره د پورټ ژباړې لپاره د NAT قاعده اضافه کړئ.

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]

}

د Nextcloud سره SSH سرور ته د پورټ ژباړې لپاره د NAT قاعده اضافه کړئ.

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 مجازی چاپیریال ترتیب

لکه څنګه چې موږ د مقالې په پیل کې پلان کړی و، موږ به درې مجازی ماشینونه جوړ کړو. دوی به د "میلمه اصلاح" په کارولو سره چمتو شي. موږ به د شبکې پیرامیټونه د هغه ترتیباتو سره سم تنظیم کړو چې موږ یې مشخص کړي، او د کارونکي پټنوم به په اتوماتيک ډول تولید شي.

راځئ چې د vApp تشریح وکړو په کوم کې چې مجازی ماشینونه به موقعیت ولري او د دوی تشکیلات.

د Terraform سره د کلاوډ زیربنا اداره کولو څرنګوالید مجازی ماشین ترتیب

راځئ چې د vApp کانټینر جوړ کړو. د دې لپاره چې موږ وکولی شو سمدلاسه vApp او VM مجازی شبکې سره وصل کړو ، موږ د انحصار_on پیرامیټر هم اضافه کړو:

یو کانټینر جوړ کړئ

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

}

راځئ چې د توضیحاتو سره یو مجازی ماشین جوړ کړو

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

}

}

د VM توضیحاتو کې اصلي پیرامیټونه:

  • نوم - د مجازی ماشین نوم،

  • vappname - د vApp نوم چې پکې نوی VM اضافه کول،

  • catalogname / templatename - د کتلاګ نوم او د مجازی ماشین ټیمپلیټ نوم،

  • د ذخیره کولو پروفایل - د ډیفالټ ذخیره کولو پالیسي.

د شبکې بلاک پیرامیټونه:

  • ډول - د تړل شوي شبکې ډول،

  • نوم - کوم مجازی شبکه چې د VM سره وصل شي،

  • isprimary - لومړني شبکې اډاپټر،

  • ipallocation_mode - لارښود / DHCP / POOL پته تخصیص حالت،

  • ip - د مجازی ماشین لپاره IP پته، موږ به دا په لاسي ډول مشخص کړو.

override_template_disk بلاک:

  • sizeinmb - د مجازی ماشین لپاره د بوټ ډیسک اندازه

  • store_profile - د ډیسک لپاره د ذخیره کولو پالیسي

راځئ چې د Nextcloud فایل ذخیره کولو توضیحاتو سره دوهم VM جوړ کړو

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 ]

}

د vcdvminternal_disk برخه کې به موږ یو نوی مجازی ډیسک تشریح کړو چې د مجازی ماشین سره وصل دی.

د vcdvminternaldisk بلاک لپاره توضیحات:

  • bustype - د ډیسک کنټرولر ډول

  • sizeinmb - د ډیسک اندازه

  • د بس نمبر / واحد شمیره - په اډاپټر کې د پیوستون موقعیت

  • store_profile - د ډیسک لپاره د ذخیره کولو پالیسي

راځئ چې په Bitrix کې وروستي VM تشریح کړو

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

}

}

د OS تازه کول او اضافي سکریپټونه نصب کول

شبکه چمتو شوې، مجازی ماشینونه بیان شوي. زموږ د زیربنا واردولو دمخه، موږ کولی شو د چمتو کونکي بلاکونو په کارولو سره او د ځواب وړ کارولو پرته لومړني چمتو کول ترسره کړو.

راځئ وګورو چې څنګه OS تازه کړئ او د چمتو کونکي بلاک په کارولو سره د CMS بټریکس نصب کولو سکریپټ چل کړئ.

لومړی ، راځئ چې د CentOS تازه کڅوړې نصب کړو.

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

}

}

}

د اجزاو نومول:

  • چمتو کونکی "remote-exec" - د ریموټ چمتو کولو بلاک سره وصل کړئ

  • د پیوستون بلاک کې موږ د پیوستون ډول او پیرامیټونه تشریح کوو:

  • ډول - پروتوکول، زموږ په قضیه کې SSH؛

  • کارن - د کارن نوم؛

  • پاسورډ - د کارونکي پټنوم. زموږ په قضیه کې، موږ پیرامیټر vcdvappvm.nginx.customization[0].admin_password ته اشاره کوو، کوم چې د سیسټم کارونکي لپاره پیدا شوی پټنوم ذخیره کوي.

  • کوربه - د ارتباط لپاره بهرنی IP پته؛

  • بندر - د ارتباط لپاره بندر، کوم چې مخکې د DNAT ترتیباتو کې مشخص شوی و؛

  • انلاین - د امرونو لیست لیست کړئ چې داخلیږي. حکمونه به په ترتیب سره داخل شي لکه څنګه چې پدې برخه کې ښودل شوي.

د مثال په توګه، راځئ چې د 1C-Bitrix نصب کولو سکریپټ هم اجرا کړو. د سکریپټ اجرا کولو پایله به د پلان په جریان کې شتون ولري. د سکریپټ نصبولو لپاره، لومړی موږ بلاک تشریح کوو:

راځئ چې د 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"

]

}

او موږ به سمدلاسه د Bitrix تازه معلومات بیان کړو.

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

]

}

}

مهم! سکریپټ ممکن کار ونکړي که تاسو دمخه SELinux غیر فعال نه کړئ! که تاسو د bitrix-env.sh په کارولو سره د CMS 1C-Bitrix نصب او تنظیم کولو په اړه تفصيلي مقالې ته اړتیا لرئ، او تاسو کولی شئ په ویب پاڼه کې زموږ د بلاګ مقاله وکاروئ.

3. د زیربنا پیل کول

د Terraform سره د کلاوډ زیربنا اداره کولو څرنګوالید ماډلونو او پلگ انونو پیل کول

د کار لپاره، موږ یو ساده "د ښاغلو کټ" کاروو: د وینډوز 10 OS سره یو لپ ټاپ او د رسمي ویب پاڼې څخه د توزیع کټ terraform.io. راځئ چې د کمانډ په کارولو سره خلاص او پیل کړو: terraform.exe init

د کمپیوټینګ او شبکې زیربنا تشریح کولو وروسته، موږ پالن جوړوو چې خپل ترتیب ازموینه وکړو، چیرته چې موږ وګورو چې څه به رامینځته شي او دا به څنګه یو بل سره وصل شي.

  1. کمانډ اجرا کړئ - terraform plan -var-file=vcd.tfvars.

  2. موږ پایله ترلاسه کوو - Plan: 16 to add, 0 to change, 0 to destroy. یعنی د دغه پلان له مخې به ۱۶ منابع رامنځته شی.

  3. موږ پلان په قومانده پیل کوو - terraform.exe apply -var-file=vcd.tfvars.

مجازی ماشینونه به رامینځته شي، او بیا هغه کڅوړې چې موږ لیست کړي دي به د چمتو کونکي برخې کې اجرا شي - OS به تازه شي او CMS Bitrix به نصب شي.

د پیوستون معلومات ترلاسه کول

د پلان پلي کولو وروسته، موږ غواړو د سرورونو سره د نښلولو لپاره د متن په بڼه ډاټا ترلاسه کړو، د دې لپاره به موږ د محصول برخه په لاندې ډول بڼه کړو:

output "nginxpassword" {

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

}

او لاندې محصول موږ ته د جوړ شوي مجازی ماشین لپاره پټنوم وایی:

Outputs: nginx_password = F#4u8!!N

د پایلې په توګه، موږ د نوي عملیاتي سیسټم سره مجازی ماشینونو ته لاسرسۍ ترلاسه کوو او زموږ د نور کار لپاره مخکې نصب شوي کڅوړې. ټول چمتو دي!

مګر څه که تاسو دمخه موجود زیربناوې لرئ؟

3.1. د موجوده زیربنا سره د Terraform کار کول

دا ساده ده، تاسو کولی شئ د وارداتو کمانډ په کارولو سره اوسني مجازی ماشینونه او د دوی vApp کانټینرونه وارد کړئ.

راځئ چې د VAPP سرچینې او مجازی ماشین تشریح کړو.

resource "vcd_vapp" "Monitoring" {

name = "Monitoring"

org = "mClouds"

vdc = "mClouds"

}

resource "vcd_vapp_vm" "Zabbix" {

name = "Zabbix"

org = "mClouds"

vdc = "mClouds"

vapp = "Monitoring"

}

بل ګام په فارمیټ کې د vApp سرچینو ملکیت واردول دي vcdvapp.<vApp> <org>.<orgvdc>.<vApp>چیرته:

  • vApp - د vApp نوم؛

  • org - د سازمان نوم؛

  • org_vdc - د مجازی معلوماتو مرکز نوم.

د Terraform سره د کلاوډ زیربنا اداره کولو څرنګوالید VAPP سرچینو ملکیتونو واردول

راځئ چې د VM سرچینو ملکیتونه په بڼه وارد کړو: vcdvappvm.<VM> <org>.<orgvdc>.<vApp>.<VM>, په کوم کې:

  • VM - د VM نوم؛

  • vApp - د vApp نوم؛

  • org - د سازمان نوم؛

  • orgvdc د مجازی معلوماتو مرکز نوم دی.

واردات بریالی وو

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.

اوس موږ کولی شو نوي وارد شوي سرچینې وګورو:

وارد شوي سرچینې

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

}

}

اوس موږ حتما چمتو یو - موږ وروستي ټکي (موجوده زیربنا ته واردول) سره ترسره شوي او د Terraform سره د کار کولو ټول اصلي ټکي په پام کې نیولي دي. 

وسیله خورا اسانه شوه او تاسو ته اجازه درکوي خپل زیربنا د کوډ په توګه تشریح کړئ ، د یو کلاوډ چمتو کونکي مجازی ماشینونو څخه پیل د شبکې اجزاو سرچینې تشریح کولو لپاره.

په ورته وخت کې، د چاپیریال څخه خپلواکي دا ممکنه کوي چې د محلي، بادل سرچینو سره کار وکړي، او حتی د پلیټ فارم اداره کړي. او که چیرې هیڅ ملاتړ شوی پلیټ فارم شتون نلري او تاسو غواړئ یو نوی اضافه کړئ ، تاسو کولی شئ خپل چمتو کونکی ولیکئ او وکاروئ.

سرچینه: www.habr.com

Add a comment