Terraform इन्फ्रास्ट्रक्चर कोड के रूप
(धारा: प्रौद्योगिकी और बुनियादी ढांचा)
संक्षिप्त सारांश
Terraform IGaming क्लाउड इंफ्रास्ट्रक्चर के प्रजनन और सत्यापन योग्य निर्माण के लिए मूल IaC उपकरण है: VPC/सबनेट्स, बैलेंसर्स, डेटाबेस/क्लस्टर्स, कतारें/बसें, KDDDn। सफलता एक मॉड्यूलर वास्तुकला, सख्त राज्य और लॉक नीतियों, रिलीज के लिए GitOps दृष्टिकोण, नीति-ए-कोड, स्वचालित परीक्षण और पारदर्शी FinOps पर टिकी हुई है।
1) IGaming के लिए IaC सिद्धांत
घोषणात्मक: कोड द्वारा वर्णित बुनियादी ढांचा; कोई मैनुअल कदम नहीं हैं।
पहचान: दोहराया 'लागू' एक ही परिणाम देता है।
वातावरण का पृथक्करण: मापदंडों के साथ एकल कोड से 'dev/stage/prod'।
मॉड्यूल रचना: वीपीसी, डीबी, कतारें, K8s, निगरानी के लिए मॉड्यूल की एक एकल सूची।
डिफ़ॉल्ट सुरक्षा: निजी सबनेट, एमटीएलएस, न्यूनतम आईएएम अधिकार।
अवलोकन और लागत: मैट्रिक्स/अलर्ट/बजट भी Terraform के अधीन हैं।
2) भंडार संरचना
मोनोरेपो संस्करण (उदाहरण):
iac/
modules/
vpc/
mysql/
kafka/
eks_aks_gke/
redis/
monitoring/
envs/
prod/
eu-west/
main. tf variables. tf backend. tf stage/
eu-west/
...
dev/
...
policies/
opa/
sentinel/
pipelines/
ci_cd/
विकल्प एक मॉड्यूलर रेपो (प्रत्येक मॉड्यूल के लिए एक अलग भंडार) + उपभोक्ताओं है।
3) बेसिक मॉड्यूलरिटी (एचसीएल उदाहरण)
वीपीसी मॉड्यूल (मॉड्यूल/वीपीसी/मुख्य। tf):hcl variable "name" {}
variable "cidr" {}
variable "az_count" { default = 3 }
cloud provider resources (summarized)
resource "cloud_vpc" "this" { name = var. name cidr = var. cidr }
resource "cloud_subnet" "private" {
count = var. az_count vpc_id = cloud_vpc. this. id type = "private"
}
output "vpc_id" { value = cloud_vpc. this. id }
output "private_subnets" { value = cloud_subnet. private[].id }
मॉड्यूल खपत (ईवीएस/प्रोड/यूरोपीय संघ-पश्चिम/मुख्य। tf):
hcl module "vpc" {
source = "../../modules/vpc"
name = "prod-eu-west"
cidr = "10. 20. 0. 0/16"
}
module "mysql" {
source = "../../modules/mysql"
name = "payments"
vpc_id = module. vpc. vpc_id subnets = module. vpc. private_subnets pitr = true size = "r6g. large"
kms_key = module. kms. key_id
}
4) राज्य प्रबंधन और ताले
रिमोट बैकेंड (उदाहरण के लिए, ऑब्जेक्ट स्टोरेज) + लॉक (डायनामोडीबी/ब्लॉक-लॉक) - 'लागू' दौड़ को रोकें।
बैकेंड वर्शनिंग और स्टेट एनक्रिप्शन (KMS)।
पहुंच नियम: केवल सीआई/सीडी और "इन्फ्रा मालिकों" के पास 'लागू' अधिकार हैं; डेवलपर्स - 'योजना'।
कार्यस्थान बनाम पर्यावरण निर्देशिका:- कार्यस्थल समान वातावरण (प्रतिकृति) के लिए सुविधाजनक हैं,
- अलग निर्देशिका - स्पष्ट रूप से पृथक विन्यास और विभिन्न टोपोलॉजी के लिए।
hcl terraform {
backend "s3" {
bucket = "iac-state-prod"
key = "eu-west/terraform. tfstate"
region = "eu-west-1"
dynamodb_table = "iac-state-locks"
encrypt = true
}
}
5) चर, रहस्य और संवेदनशील डेटा
चर। वातावरण के लिए tf + .tfvars; संवेदनशील = निजी मूल्यों के लिए सही।
रहस्य Git में संग्रहीत नहीं हैं। डेटा-स्रोत या प्रदाता के माध्यम से गुप्त प्रबंधक/केएमएस का उपयोग करें।
डिफ़ॉल्ट गोपन: वॉल्यूम/बैकअप/स्नैपशॉट/डेटाबेस के लिए।
घुमाव: कुंजी और पासवर्ड स्वतः घुमाया जाता है.
hcl variable "db_password" {
type = string sensitive = true
}
data "external_secret" "db_password" {
conceptual secret source name = "prod/payments/db_password"
}
6) Terraform के लिए GitOps और CI/CD
पीआर प्रवाह: 'टेराफॉर्म fmt' 'init' 'मान्य' 'tflint' 'योजना' के साथ आउटपुट के साथ PR manual मैनुअल अनुमोदन 'लागू' CI से।
पर्यावरण प्रचार: पहले 'चरण' में परिवर्तन, फिर 'प्रोड' में टैग/विलय।
लॉग और कलाकृतियां: बचत योजना और डिफ़ा, कलाकृति-रिपोर्ट।
उदाहरण CI (टुकड़ा):yaml steps:
- run: terraform fmt -check
- run: terraform init -upgrade
- run: terraform validate
- run: tflint --enable-rule=terraform_standard_module_structure
- run: terraform plan -var-file=envs/stage/eu-west/vars. tfvars -out tfplan
- run: terraform show -no-color tfplan > plan. txt after April
- run: terraform apply tfplan
7) पॉलिसी-ए-कोड (ओपीए/प्रहरी)
उद्देश्य: स्वचालित रूप से असुरक्षित/महंगे परिवर्तनों को अस्वीका
नीतियों के उदाहरण:- संसाधन गोपन आवश्यक है.
- सार्वजनिक आईपी - केवल अपवाद सूची के माध्यम से।
- पर्यावरण द्वारा उदाहरणों/समूहों के आकार को सीमित करना।
- आवश्यक टैग: 'env', 'स्वामी', 'cost _ center'.
rego deny[msg] {
input. resource. type == "db_instance"
not input. resource. encrypted msg:= "DB must be encrypted at rest"
}
8) IaC परीक्षण
टेराफॉर्म वेलिडेट-बेसिक सिंटैक्स चेक।
tflint - शैली/एंटीपैटर्न/प्रदाता-विशिष्टता।
इन्फ्राकोस्ट - पीआर में प्रारंभिक लागत अनुमान।
टेराटेस्ट - एकीकरण परीक्षण (गो): लिफ्ट/चेक/स्टैंड को ध्वस्त करें।
रसोई-Terraform - संसाधन अपरिवर्तनों के साथ इकाई परीक्षण।
बहाव-पहचान: रीड-ओनली और आउट-ऑफ-सिंक अलर्ट में आवधिक 'योजना'।
9) आईगेमिंग प्लेटफॉर्म के लिए विशिष्ट मॉड्यूल
नेटवर्क
VPC/VNets/VPC-Peering, निजी/सार्वजनिक सबनेट, रूटिंग, NAT/Firewall, सुरक्षा समूह/NSG।
DNS/Felover: Route- политики, स्वास्थ्य-जांच, विलंबता-आधारित मार्ग।
डाटा
MySQL/PostgreSQL: मल्टी-AZ, PITR, 'auto _ minital _ version _ Upgrade'।
Redis/Memcatched: मल्टी-AZ, स्नैपशॉट/TTL नीतियां।
डेटा लेक/लेकहाउस: बाल्टी, नीतियां, टेबल (कैटलॉग/मेटास्टर)।
क्लिकहाउस/OLAP समूह: शार्कनेस/प्रतिकृति, डिस्क नीतियां।
बसें/कतार
काफ्का/पल्सर/प्रबंधित वेरिएंट, एसीएल, प्रतिधारण, रजिस्ट्री योजनाएं।
K8s
EKS/AKS/GKE с NodeGroups, दागी/सहिष्णुता, IRSA/कार्यभार पहचान, इंग्रेस/सेवा मेश, ऑटोस्कलिंग।
बाहरी रहस्यों का एकीकरण, प्रोमेथियस/ग्राफाना, लोकी/ईएलके, प्रमाणित-प्रबंधक।
किनारा/सीडीएन
सीडीएन वितरण, कैशिंग नियम, डब्ल्यूएएफ, बॉट शमन।
10) चर/आउटपुट/स्थानीय - अभ्यास
गणना किए गए मूल्यों (मास्क, नाम) के लिए स्थानीय।
मॉड्यूल एपीआई के रूप में आउटपुट: न्यूनतम आवश्यक।
संसाधन नामकरण '<env> - <क्षेत्र> - <डोमेन> - <घटक>'.
Тэги: 'एनवी', 'मालिक', 'कॉस्ट _ सेंटर', 'क्रिटिकलिटी', 'पिई'।
hcl locals {
name_prefix = "${var. env}-${var. region}-${var. service}"
}
resource "cloud_lb" "api" { name = "${locals. name_prefix}-lb" }
11) बहु-बादल और क्षेत्र
एक ही मॉड्यूल के माध्यम से सार, अलग-अलग प्रदाता: 'aws', 'azurerm', 'google'।
क्रॉस-रीजनल संसाधनों (DR/प्रतिकृति) के लिए प्रदाता उर्फ।
सेवा अंतर शर्तों और मॉड्यूल में phicheflags द्वारा बंद कर दिए जाते हैं।
डेटा स्थानीयकृत हैं: क्षेत्र द्वारा व्यक्तिगत बाल्टी/डीबी (ईयू/टीआर/एलटीएएम)।
hcl provider "aws" { region = "eu-west-1" alias = "eu" }
provider "aws" { region = "sa-east-1" alias = "latam" }
12) कोड के रूप में अवलोकन और अलर्ट
डैशबोर्ड, अलर्ट नियम (p95/p99, त्रुटि-दर, सीपीयू/आईओ), एसएलओ मॉनिटर।
अभिगम/लेखा परीक्षा लॉग (WORM), लागत मैट्रिक्स (टैग/नेमस्पेस द्वारा)।
घटनाएं: चैट सूचनाएं, संसाधन एनोटेशन में रनबुक यूआरएल।
13) फिनोप्स: मूल्य नियंत्रण में
पीआर + बजट अलर्ट में infracost।
पर्यावरण कोटा: उदाहरण/गोदाम कक्षाओं को सीमित करना।
ऑटो-स्वच्छता: देव संसाधनों, बाल्टी/लॉग प्रतिधारण नीतियों के लिए टीटीएल।
गैर-महत्वपूर्ण कार्यों के लिए स्पॉट/प्रस्तावना, प्रोड के लिए आरक्षण।
14) प्रवासन/परिवर्तन प्रक्रियाएं
'टेराफॉर्म आयात' फोर कानूनी संसाधन (तुरंत बाद - 'योजना '/' लागू')।
विनाश से बचने के लिए पलटने पर 'mived '/' हटा दिया' ब्लॉक।
शून्य-डाउनटाइम परिवर्तन: महत्वपूर्ण आकृति (डीबी/संतुलन) के लिए डबल रोलिंग (नीला-हरा)।
चरण-दर-चरण पीआर: नया संसाधन समूह पहले, फिर यातायात, फिर विघटित।
15) सुरक्षा और अनुपालन
कम से कम विशेषाधिकार: मॉड्यूल केवल आवश्यक अधिकार बनाते हैं, उपयोग नहीं करते हैं। "
केएमएस हर जगह: वॉल्यूम/बैकअप/सीक्रेट/स्टेट्स का एन्क्रिप्शन।
Terraform/IaC स्कैन CI (IaC के लिए SAST) में।
गिट के बाहर रहस्य: केवल गुप्त प्रबंधक; रोटेशन और एक्सेस ऑडिट।
PII क्षेत्र: टैग/नीतियां, अंतरक्षेत्रीय निर्यात प्रतिबंध तक पहुंच।
16) नमूना टेम्पलेट
PITR के साथ संबंधपरक डेटाबेस (विचार):hcl module "db" {
source = "../../modules/mysql"
name = "wallet"
multi_az = true storage_gb = 500 pitr = true backup_retention_days = 14 deletion_protection = true
}
निगरानी और एसएलओ अलर्ट:
hcl module "slo_latency" {
source = "../../modules/monitoring/slo"
name = "api-latency-p95"
target_ms = 250 window = "30m"
alert_channels = ["chatops#incidents"]
}
WAF/CDN वितरण:
hcl module "cdn" {
source = "../../modules/cdn"
domain = "example. com"
waf_enabled = true cache_ttl = 600
}
17) टेराफॉर्म/आईएसी कार्यान्वयन चेकलिस्ट
1. भंडार संरचना चुनें (मॉड्यूल मोनोरेपोस + पर्यावरण निर्देशिका)।
2. ताले और गोपन के साथ दूरस्थ स्थिति कॉन्फ़िगर करें (KMS)।
3. GitOps-pipline दर्ज करें: fmt/validate/tflint/plan → review → लागू करें।
4. एक मॉड्यूल लाइब्रेरी (VPC, K8s, DB, कतार, निगरानी, CDN, रहस्य) बनाएं।
5. CI में पॉलिसी-as-Code (OPA/Sentinel) और IaC स्कैन सक्षम करें।
6. प्रबंधक, कुंजियों - केएमएस, घुमावों के माध्यम से रहस्य व्यवस्थित करें।
7. परीक्षण जोड़ें: महत्वपूर्ण मॉड्यूल के लिए टेराटेस्ट, पीआर में Infracost।
8. SLO/अलर्ट और "कोड के रूप में निगरानी" को परिभाषित करें।
9. गैर महत्वपूर्ण संसाधनों के लिए कोटा/बजट और टीटीएल सेट करें।
10. चरणों में योजना पलायन (नीला-हरा/दो-रेल)।
18) एंटीपैटर्न
Terraform के बाहर संसाधनों के मैनुअल "स्नोफ्लेक्स" - बहाव और दुर्घटनाएं जब 'लागू' होती हैं।
स्थानीय रूप से/बिना ताले के एक राज्य का भंडारण - रेसिंग और स्थिरता का नुकसान।
बिना एन्क्रिप्शन के Git/in '.tfvars' में रहस्य.
सैकड़ों संसाधनों के लिए "गॉड-मॉड्यूल" - परीक्षण/पुन: उपयोग करने में असमर्थता।
पीआर और योजना समीक्षा के बिना लैपटॉप से भोजन के लिए प्रत्यक्ष 'लागू'।
पॉलिसी-ए-कोड/स्कैन - लीक, सार्वजनिक आईपी/बाल्टी की अनदेखी।
Infracost/बजट की कमी - अप्रत्याशित लागत।
सारांश
Terraform/IaC iGaming प्लेटफ़ॉर्म प्रजनन, गति और नियंत्रित सुरक्षा/लागत देता है। मॉड्यूलर डिजाइन, सख्त राज्य और GitOps, सुरक्षा नीतियां, ऑटोटेस्ट और फिनोप्स बुनियादी ढांचे को एक विश्वसनीय "पाइपलाइन" में बदल देते हैं - डाउनटाइम के बिना तेजी से रिलीज, पूर्वानुमानित p99 और पीक टूर्नामेंट और नियान की आवश्यता।