இந்தக் கட்டுரையில், டெர்ராஃபார்ம் எதைக் கொண்டுள்ளது என்பதைப் பார்ப்போம், மேலும் படிப்படியாக எங்கள் சொந்த உள்கட்டமைப்பைத் தொடங்குவோம்
எல்லாவற்றையும் பற்றி விரிவாக மற்றும் மூன்று நிலைகளில்:
1. Terraform - விளக்கம், நன்மைகள் மற்றும் கூறுகள்
டெர்ராஃபார்ம் என்பது குறியீட்டைப் பயன்படுத்தி மெய்நிகர் உள்கட்டமைப்பை உருவாக்க மற்றும் நிர்வகிப்பதற்கான IaC (உள்கட்டமைப்பு-குறியீடு) கருவியாகும்.
கருவியுடன் பணிபுரிவதில் பல நன்மைகளை நாங்கள் குறிப்பிட்டோம்:
-
புதிய குத்தகைதாரர்களின் வரிசைப்படுத்தல் வேகம் (தனிப்பயன் மெய்நிகர் சூழல்கள்). பொதுவாக, அதிகமான புதிய வாடிக்கையாளர்கள் இருப்பதால், புதிய ஆதாரங்களை வெளியிட தொழில்நுட்ப ஆதரவு ஊழியர்கள் அதிக "கிளிக்" செய்ய வேண்டும். டெர்ராஃபார்ம் மூலம், பயனர்கள் மெய்நிகர் இயந்திர அமைப்புகளை மாற்றலாம் (உதாரணமாக, தானாக OS ஐ மூடுவது மற்றும் மெய்நிகர் வட்டு பகிர்வை அதிகரிப்பது) தொழில்நுட்ப ஆதரவு தேவைப்படாமல் அல்லது இயந்திரத்தையே மூடுவது.
-
செயல்படுத்தும் திட்டத்தின் உடனடி சரிபார்ப்பு புதிய வாடகைதாரர். உள்கட்டமைப்பு குறியீட்டின் விளக்கத்தைப் பயன்படுத்தி, என்ன சேர்க்கப்படும், எந்த வரிசையில், எந்த இறுதி நிலையில் இந்த அல்லது அந்த மெய்நிகர் இயந்திரம் அல்லது மெய்நிகர் இயந்திரங்களுக்கான இணைப்புகளுடன் மெய்நிகர் நெட்வொர்க் இருக்கும் என்பதை உடனடியாகச் சரிபார்க்கலாம்.
-
மிகவும் பிரபலமான கிளவுட் இயங்குதளங்களை விவரிக்கும் திறன். நீங்கள் கருவியைப் பயன்படுத்தலாம் Amazon மற்றும் Google Cloud இலிருந்து, VMware vCloud இயக்குநரின் அடிப்படையிலான தனியார் தளங்களுக்கு, IaaS, SaaS மற்றும் PaaS தீர்வுகளுக்குள் சேவைகளை வழங்குகிறது.
-
பல கிளவுட் வழங்குநர்களை நிர்வகிக்கவும் மற்றும் மேகக்கணி வளங்களை உருவாக்க, கண்டறிய மற்றும் நிர்வகிக்க ஒற்றை உள்ளமைவைப் பயன்படுத்தி, தவறு சகிப்புத்தன்மையை மேம்படுத்த அவர்களுக்கு இடையே உள்கட்டமைப்பை விநியோகிக்கவும்.
-
டெமோ ஸ்டாண்டுகளை உருவாக்குவதற்கு வசதியான பயன்பாடு மென்பொருள் சோதனை மற்றும் பிழைத்திருத்தத்திற்கு. நீங்கள் சோதனைத் துறைக்கான ஸ்டாண்டுகளை உருவாக்கலாம் மற்றும் மாற்றலாம், வெவ்வேறு சூழல்களில் மென்பொருளை இணையாகச் சோதிக்கலாம் மற்றும் ஒரே ஒரு ஆதார உருவாக்கத் திட்டத்தை உருவாக்குவதன் மூலம் ஆதாரங்களை உடனடியாக மாற்றலாம் மற்றும் நீக்கலாம்.
"டெர்ரேரியம்" டெர்ராஃபார்ம்
கருவியின் நன்மைகளைப் பற்றி சுருக்கமாகப் பேசினோம், இப்போது அதை அதன் கூறுகளாக உடைப்போம்
வழங்குபவர்கள்.
டெர்ராஃபார்மில், ஏறக்குறைய எந்த வகையான உள்கட்டமைப்பையும் ஒரு ஆதாரமாகக் குறிப்பிடலாம். வளங்கள் மற்றும் API இயங்குதளத்திற்கு இடையேயான இணைப்பு வழங்குநர் தொகுதிகளால் வழங்கப்படுகிறது, இது ஒரு குறிப்பிட்ட தளத்திற்குள் ஆதாரங்களை உருவாக்க உங்களை அனுமதிக்கிறது, எடுத்துக்காட்டாக, Azure அல்லது VMware vCloud Director.
திட்டத்தின் ஒரு பகுதியாக, நீங்கள் வெவ்வேறு தளங்களில் வெவ்வேறு வழங்குநர்களுடன் தொடர்பு கொள்ளலாம்.
வளங்கள் (வள விளக்கம்).
ஆதாரங்களின் விளக்கம் மெய்நிகர் இயந்திரங்கள் அல்லது நெட்வொர்க்குகள் போன்ற இயங்குதள கூறுகளை நிர்வகிக்க உங்களை அனுமதிக்கிறது.
VMware vCloud Director வழங்குனருக்கான ஆதார விளக்கத்தை நீங்களே உருவாக்கலாம் மற்றும் vCloud Director ஐப் பயன்படுத்தும் எந்த ஹோஸ்டிங் வழங்குநருடனும் ஆதாரங்களை உருவாக்க இந்த விளக்கத்தைப் பயன்படுத்தலாம். நீங்கள் அங்கீகார அளவுருக்கள் மற்றும் பிணைய இணைப்பு அளவுருக்களை தேவையான ஹோஸ்டிங் வழங்குநருக்கு மட்டுமே மாற்ற வேண்டும்
வழங்குபவர்கள்.
மெய்நிகர் இயந்திரங்களை உருவாக்கிய பிறகு இயக்க முறைமையின் ஆரம்ப நிறுவல் மற்றும் பராமரிப்புக்கான செயல்பாடுகளை இந்த கூறு சாத்தியமாக்குகிறது. நீங்கள் ஒரு மெய்நிகர் இயந்திர வளத்தை உருவாக்கியதும், SSH வழியாக உள்ளமைக்கவும் இணைக்கவும், இயக்க முறைமையை புதுப்பிக்கவும் மற்றும் ஸ்கிரிப்டை பதிவிறக்கம் செய்து இயக்கவும் வழங்குநர்களைப் பயன்படுத்தலாம்.
உள்ளீடு மற்றும் வெளியீடு மாறிகள்.
உள்ளீட்டு மாறிகள் - எந்த தொகுதி வகைகளுக்கும் உள்ளீடு மாறிகள்.
வெளியீட்டு மாறிகள் வளங்களை உருவாக்கிய பிறகு மதிப்புகளைச் சேமிக்க உங்களை அனுமதிக்கின்றன மற்றும் பிற தொகுதிகளில் உள்ளீட்டு மாறிகளாகப் பயன்படுத்தலாம், எடுத்துக்காட்டாக, வழங்குநர்கள் தொகுதியில்.
மாநிலங்களில்.
மாநில கோப்புகள் வழங்குநர் இயங்குதள ஆதாரங்களின் உள்ளமைவு பற்றிய தகவல்களைச் சேமிக்கின்றன. தளம் முதன்முதலில் உருவாக்கப்பட்ட போது, வளங்களைப் பற்றிய எந்த தகவலும் இல்லை மற்றும் எந்தவொரு செயல்பாட்டிற்கும் முன், Terraform ஏற்கனவே விவரிக்கப்பட்டுள்ள ஆதாரங்களின் உண்மையான உள்கட்டமைப்புடன் மாநிலத்தை புதுப்பிக்கிறது.
மாநிலங்களின் முக்கிய நோக்கம், மீண்டும் மீண்டும் உருவாக்கம் மற்றும் மேடையில் மாற்றங்களைத் தவிர்ப்பதற்காக, சேர்க்கப்பட்ட வளங்கள் மற்றும் பொருள்களின் உள்ளமைவை ஒப்பிடுவதற்கு ஏற்கனவே உருவாக்கப்பட்ட வளங்களின் பொருள்களின் தொகுப்பைச் சேமிப்பதாகும்.
இயல்பாக, மாநிலத் தகவல் உள்ளூர் terraform.tfstate கோப்பில் சேமிக்கப்படும், ஆனால் தேவைப்பட்டால், குழுப்பணிக்கு தொலைநிலை சேமிப்பகத்தைப் பயன்படுத்த முடியும்.
டெர்ராஃபார்மின் உதவியின்றி உருவாக்கப்பட்ட பிற ஆதாரங்களுடன் மேலும் தொடர்புகொள்வதற்கு தற்போதைய இயங்குதள ஆதாரங்களை நீங்கள் மாநிலத்திற்கு இறக்குமதி செய்யலாம்.
2. உள்கட்டமைப்பு உருவாக்கம்
கூறுகள் வரிசைப்படுத்தப்பட்டுள்ளன, இப்போது Terraform ஐப் பயன்படுத்தி படிப்படியாக மூன்று மெய்நிகர் இயந்திரங்களுடன் ஒரு உள்கட்டமைப்பை உருவாக்குவோம். முதலில் நிறுவப்பட்ட nginx ப்ராக்ஸி சேவையகம், இரண்டாவது Nextcloud அடிப்படையிலான கோப்பு சேமிப்பகத்துடன் மற்றும் மூன்றாவது CMS Bitrix.
எங்கள் உதாரணத்தைப் பயன்படுத்தி குறியீட்டை எழுதி அதை இயக்குவோம்
முதலில், நமது புதிய திட்டத்திற்கான கோப்பகத்தை உருவாக்குவோம், அதில் உள்கட்டமைப்பை விவரிக்கும் கோப்புகள் வைக்கப்படும்.
mkdir project01
அடுத்து, உள்கட்டமைப்பு கூறுகளை விவரிக்கிறோம். டெர்ராஃபார்ம் உறவுகளை உருவாக்குகிறது மற்றும் கோப்புகளில் உள்ள விளக்கத்தின் அடிப்படையில் கோப்புகளை செயலாக்குகிறது. விவரிக்கப்பட்ட தொகுதிகளின் நோக்கத்தின் அடிப்படையில் கோப்புகளை பெயரிடலாம், எடுத்துக்காட்டாக, network.tf - உள்கட்டமைப்பிற்கான பிணைய அளவுருக்களை விவரிக்கிறது.
எங்கள் உள்கட்டமைப்பின் கூறுகளை விவரிக்க, நாங்கள் பின்வரும் கோப்புகளை உருவாக்கினோம்:
கோப்புகளின் பட்டியல்.
main.tf - மெய்நிகர் சூழலுக்கான அளவுருக்களின் விளக்கம் - மெய்நிகர் இயந்திரங்கள், மெய்நிகர் கொள்கலன்கள்;
network.tf - மெய்நிகர் பிணைய அளவுருக்கள் மற்றும் NAT மற்றும் Firewall விதிகளின் விளக்கம்;
variables.tf - நாம் பயன்படுத்தும் மாறிகளின் பட்டியல்;
vcd.tfvars - VMware vCloud இயக்குநர் தொகுதிக்கான திட்ட மாறி மதிப்புகள்.
டெர்ராஃபார்மில் உள்ள உள்ளமைவு மொழி பிரகடனமானது மற்றும் வழங்குபவர் தொகுதிகளைத் தவிர, தொகுதிகளின் வரிசை ஒரு பொருட்டல்ல, ஏனெனில் இந்த தொகுதியில் உள்கட்டமைப்பைத் தயாரிக்கும் போது செயல்படுத்த வேண்டிய கட்டளைகளை விவரிக்கிறோம், அவை வரிசையாக செயல்படுத்தப்படும்.
தொகுதி அமைப்பு.
<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
# Block body
<IDENTIFIER> = <EXPRESSION> # Argument
}
தொகுதிகளை விவரிக்க, அதன் சொந்த நிரலாக்க மொழியான HCL (ஹாஷிகார்ப் கட்டமைப்பு மொழி) பயன்படுத்தப்படுகிறது; JSON ஐப் பயன்படுத்தி உள்கட்டமைப்பை விவரிக்க முடியும். தொடரியல் பற்றி மேலும் அறியலாம்
சுற்றுச்சூழல் மாறி உள்ளமைவு, variables.tf மற்றும் vcd.tfvars
முதலில், VMware vCloud Director தொகுதிக்கான பயன்படுத்தப்படும் அனைத்து மாறிகளின் பட்டியலையும் அவற்றின் மதிப்புகளையும் விவரிக்கும் இரண்டு கோப்புகளை உருவாக்குவோம். முதலில், 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 — பொது ஐபி முகவரி,
-
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 இயக்குநர் தொகுதிக்கான மாறிகளை உருவாக்கி குறிப்பிடுகிறோம்: எங்கள் எடுத்துக்காட்டில் நாம் பயன்படுத்தியதை நினைவுபடுத்துவோம்.
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.
சூழல் மாறிகள் அமைக்கப்பட்டுள்ளன, இப்போது நாம் மெய்நிகர் இயந்திர இணைப்பு திட்டத்தை அமைப்போம் - ஒவ்வொரு மெய்நிகர் இயந்திரத்திற்கும் ஒரு தனிப்பட்ட ஐபி முகவரியை ஒதுக்குவோம் மற்றும் வெளிப்புற நெட்வொர்க்கிற்கு போர்ட்களை "ஃபார்வர்டு" செய்ய டெஸ்டினேஷன் NAT ஐப் பயன்படுத்துவோம். மேலாண்மை துறைமுகங்களுக்கான அணுகலைக் கட்டுப்படுத்த, எங்கள் IP முகவரிக்கு மட்டுமே அணுகலை அமைப்போம்.
டெர்ராஃபார்ம் இயங்குதளத்திற்கான பிணைய வரைபடம் உருவாக்கப்படுகிறது
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 தொகுதியை உள்ளமைக்கிறோம் என்ற சார்புநிலையை நிறுவிய பிறகு., பயன்படுத்தி பொறுத்தது. இந்த விருப்பத்தை நாங்கள் பயன்படுத்துகிறோம், ஏனெனில் சில சார்புகள் உள்ளமைவில் மறைமுகமாக அங்கீகரிக்கப்படலாம்.
அடுத்து, வெளிப்புற நெட்வொர்க்கிலிருந்து போர்ட்களை அணுக அனுமதிக்கும் விதிகளை நாங்கள் உருவாக்குவோம் மற்றும் SSH வழியாக சேவையகங்களுடன் இணைக்க எங்கள் IP முகவரியைக் குறிப்பிடுவோம். எந்தவொரு இணைய பயனருக்கும் வலை சேவையகத்தில் போர்ட்கள் 80 மற்றும் 443க்கான அணுகல் உள்ளது, மேலும் 90.1.15.1 ஐபி முகவரியைக் கொண்ட பயனர் மெய்நிகர் சேவையகங்களின் 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]
}
கிளவுட் லோக்கல் நெட்வொர்க்கிலிருந்து இணையத்தை அணுகுவதற்கான Source 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]
}
1C-Bitrix உடன் SSH சேவையகத்திற்கு போர்ட் மொழிபெயர்ப்புக்கான 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 மற்றும் அவற்றின் உள்ளமைவை விவரிப்போம்.
மெய்நிகர் இயந்திர கட்டமைப்பு
ஒரு vApp கொள்கலனை உருவாக்குவோம். vApp மற்றும் VM ஐ மெய்நிகர் நெட்வொர்க்குடன் உடனடியாக இணைக்க முடியும், நாங்கள் டிசென்ட்_ஆன் அளவுருவையும் சேர்க்கிறோம்:
ஒரு கொள்கலனை உருவாக்கவும்
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 - புதிய VM ஐ சேர்க்கும் vApp இன் பெயர்,
-
பட்டியல் பெயர் / வார்ப்புரு பெயர் - பட்டியல் பெயர் மற்றும் மெய்நிகர் இயந்திர டெம்ப்ளேட் பெயர்,
-
சேமிப்பு சுயவிவரம் - இயல்புநிலை சேமிப்பக கொள்கை.
நெட்வொர்க் பிளாக் அளவுருக்கள்:
-
வகை - இணைக்கப்பட்ட பிணைய வகை,
-
பெயர் - VM ஐ எந்த மெய்நிகர் நெட்வொர்க்குடன் இணைக்க வேண்டும்,
-
isprimary - முதன்மை பிணைய அடாப்டர்,
-
iallocation_mode — கையேடு / DHCP / POOL முகவரி ஒதுக்கீடு முறை,
-
ip — மெய்நிகர் கணினிக்கான IP முகவரியை, அதை கைமுறையாகக் குறிப்பிடுவோம்.
override_template_disk block:
-
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 - வட்டு அளவு
-
busnumber / unitnumber - அடாப்டரில் இணைப்பு இடம்
-
store_profile — வட்டுக்கான சேமிப்புக் கொள்கை
பிட்ரிக்ஸில் சமீபத்திய 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 Bitrix நிறுவல் ஸ்கிரிப்டை ப்ரொவிஷனர் பிளாக்கைப் பயன்படுத்தி இயக்குவது எப்படி என்பதைப் பார்ப்போம்.
முதலில், 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" ]
}
}
}
கூறுகளின் பெயர்:
-
provisioner “remote-exec” - ரிமோட் வழங்கல் தொகுதியை இணைக்கவும்
-
இணைப்புத் தொகுதியில், இணைப்பிற்கான வகை மற்றும் அளவுருக்களை விவரிக்கிறோம்:
-
வகை - நெறிமுறை, எங்கள் விஷயத்தில் SSH;
-
பயனர் - பயனர் பெயர்;
-
கடவுச்சொல் - பயனர் கடவுச்சொல். எங்கள் விஷயத்தில், கணினி பயனருக்காக உருவாக்கப்பட்ட கடவுச்சொல்லைச் சேமிக்கும் அளவுரு vcdvappvm.nginx.customization[0].admin_password ஐச் சுட்டிக்காட்டுகிறோம்.
-
ஹோஸ்ட் - இணைப்பிற்கான வெளிப்புற ஐபி முகவரி;
-
port — இணைப்புக்கான போர்ட், இது முன்பு DNAT அமைப்புகளில் குறிப்பிடப்பட்டது;
-
inline - உள்ளிடப்படும் கட்டளைகளின் பட்டியலை பட்டியலிடுங்கள். இந்த பிரிவில் குறிப்பிடப்பட்டுள்ளபடி கட்டளைகள் வரிசையாக உள்ளிடப்படும்.
உதாரணமாக, கூடுதலாக 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"
]
}
பிட்ரிக்ஸ் புதுப்பிப்பை உடனடியாக விவரிப்போம்.
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 ஐ நிறுவுதல் மற்றும் கட்டமைத்தல் பற்றிய விரிவான கட்டுரை உங்களுக்குத் தேவைப்பட்டால், oo உங்களால் முடியும்
3. உள்கட்டமைப்பு துவக்கம்
தொகுதிகள் மற்றும் செருகுநிரல்களைத் தொடங்குதல்
வேலைக்கு, நாங்கள் ஒரு எளிய “ஜென்டில்மேன் கிட்” ஐப் பயன்படுத்துகிறோம்: விண்டோஸ் 10 ஓஎஸ் கொண்ட மடிக்கணினி மற்றும் அதிகாரப்பூர்வ வலைத்தளத்திலிருந்து விநியோக கிட் terraform.exe init
கம்ப்யூட்டிங் மற்றும் நெட்வொர்க் உள்கட்டமைப்பை விவரித்த பிறகு, எங்கள் உள்ளமைவைச் சோதிக்கும் திட்டத்தைத் தொடங்குகிறோம், அங்கு என்ன உருவாக்கப்படும், அது எப்படி ஒன்றுக்கொன்று இணைக்கப்படும் என்பதைக் காணலாம்.
-
கட்டளையை இயக்கவும்
- terraform plan -var-file=vcd.tfvars
. -
முடிவைப் பெறுகிறோம்
- Plan: 16 to add, 0 to change, 0 to destroy.
அதாவது, இந்த திட்டத்தின் படி, 16 ஆதாரங்கள் உருவாக்கப்படும். -
நாங்கள் கட்டளையின் அடிப்படையில் திட்டத்தைத் தொடங்குகிறோம்
- 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 தற்போதுள்ள உள்கட்டமைப்புடன் பணிபுரியும் டெர்ராஃபார்ம்
இது எளிதானது, நீங்கள் தற்போதைய மெய்நிகர் இயந்திரங்களையும் அவற்றின் 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 — மெய்நிகர் தரவு மையத்தின் பெயர்.
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