{"id":6301,"date":"2026-05-04T11:00:56","date_gmt":"2026-05-04T07:30:56","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6301"},"modified":"2026-05-04T11:00:56","modified_gmt":"2026-05-04T07:30:56","slug":"%d9%86%d8%ad%d9%88%d9%87-%d8%b3%d8%a7%d8%ae%d8%aa-%db%8c%da%a9-%d9%85%d8%a7%da%98%d9%88%d9%84-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-terraform","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d9%86%d8%ad%d9%88%d9%87-%d8%b3%d8%a7%d8%ae%d8%aa-%db%8c%da%a9-%d9%85%d8%a7%da%98%d9%88%d9%84-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-terraform\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 Terraform"},"content":{"rendered":"<h2 data-section-id=\"1jjrbyn\" data-start=\"44\" data-end=\"54\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n<p data-start=\"55\" data-end=\"387\">\u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Terraform \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u200c\u062a\u0627\u0646 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u06af\u0631\u0648\u0647\u200c\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0647\u0633\u062a\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0644\u062e\u0648\u0627\u0647 (customization) \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647\u200c\u06a9\u0627\u0631 \u0628\u0628\u0631\u06cc\u062f\u060c \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0631 \u0628\u0627\u0631 \u0647\u0645\u0647 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u062e\u0635\u0648\u0635\u0627\u064b \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0648 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a.<\/p>\n<p data-start=\"389\" data-end=\"640\">\u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <strong data-start=\"417\" data-end=\"438\">\u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 (inputs)<\/strong> \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0631\u0627 \u0634\u062e\u0635\u06cc\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0627 <strong data-start=\"471\" data-end=\"493\">\u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627 (outputs)<\/strong> \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0631\u0627 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0646\u06cc\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0633\u0627\u062e\u062a \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0634\u062e\u0635\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0622\u0645\u0627\u062f\u0647 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 Terraform Registry \u0647\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p data-start=\"642\" data-end=\"865\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0634\u0645\u0627 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 Terraform \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0686\u0646\u062f Droplet \u0631\u0627 \u067e\u0634\u062a \u06cc\u06a9 Load Balancer \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u0646\u06af\u06cc (redundancy) \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc <code data-start=\"788\" data-end=\"795\">count<\/code> \u0648 <code data-start=\"798\" data-end=\"808\">for_each<\/code> \u062f\u0631 HCL \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<hr data-start=\"867\" data-end=\"870\" \/>\n<h2 data-section-id=\"15s71sg\" data-start=\"872\" data-end=\"887\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n<p data-start=\"888\" data-end=\"939\">\u0628\u0631\u0627\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<ul data-start=\"941\" data-end=\"1068\">\n<li data-section-id=\"1vz6k4k\" data-start=\"941\" data-end=\"974\">\u06cc\u06a9 <strong data-start=\"946\" data-end=\"974\">\u062a\u0648\u06a9\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc DigitalOcean<\/strong><\/li>\n<li data-section-id=\"10yf1c3\" data-start=\"975\" data-end=\"1000\">\u0646\u0635\u0628 Terraform \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645<\/li>\n<li data-section-id=\"xvvp4g\" data-start=\"1001\" data-end=\"1068\">\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627:\n<ul data-start=\"1016\" data-end=\"1068\">\n<li data-section-id=\"1dw9j2p\" data-start=\"1016\" data-end=\"1042\">\u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0648 \u062d\u0644\u0642\u0647\u200c\u0647\u0627 \u062f\u0631 HCL<\/li>\n<li data-section-id=\"h7o6p7\" data-start=\"1045\" data-end=\"1068\">\u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627 \u062f\u0631 Terraform<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr data-start=\"1070\" data-end=\"1073\" \/>\n<h2 data-section-id=\"13r5bs6\" data-start=\"1075\" data-end=\"1100\">\u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0627\u0698\u0648\u0644 \u0648 \u0645\u0632\u0627\u06cc\u0627<\/h2>\n<p data-start=\"1101\" data-end=\"1194\">\u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u06af\u0631\u0648\u0647\u200c\u0628\u0646\u062f\u06cc \u0627\u062c\u0632\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u06a9\u0627\u0631\u0628\u0631\u062f \u062f\u0627\u0631\u0646\u062f.<\/p>\n<p data-start=\"1196\" data-end=\"1210\">\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u0647\u0645:<\/p>\n<ul data-start=\"1211\" data-end=\"1384\">\n<li data-section-id=\"zdqkjc\" data-start=\"1211\" data-end=\"1242\">\u062e\u0648\u062f\u06a9\u0641\u0627 \u0647\u0633\u062a\u0646\u062f (self-contained)<\/li>\n<li data-section-id=\"10hgpfl\" data-start=\"1243\" data-end=\"1297\">\u0641\u0642\u0637 \u0634\u0627\u0645\u0644 \u0645\u0646\u0627\u0628\u0639\u060c \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0648 provider\u0647\u0627\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632 \u0647\u0633\u062a\u0646\u062f<\/li>\n<li data-section-id=\"wb9vvs\" data-start=\"1298\" data-end=\"1341\">\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0631 \u067e\u0648\u0634\u0647 <code data-start=\"1316\" data-end=\"1325\">modules<\/code> \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f<\/li>\n<li data-section-id=\"1gienrb\" data-start=\"1342\" data-end=\"1384\">\u0647\u0631 \u0645\u0627\u0698\u0648\u0644 \u0628\u0627\u06cc\u062f <strong data-start=\"1358\" data-end=\"1373\">\u06cc\u06a9 \u0647\u062f\u0641 \u0645\u0634\u062e\u0635<\/strong> \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f<\/li>\n<\/ul>\n<p data-start=\"1386\" data-end=\"1444\">\u26a0\ufe0f \u0646\u06a9\u062a\u0647: \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0636\u0631\u0648\u0631\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n<hr data-start=\"1446\" data-end=\"1449\" \/>\n<h2 data-section-id=\"rbh9k3\" data-start=\"1451\" data-end=\"1464\">\u0633\u0627\u062e\u062a \u0645\u0627\u0698\u0648\u0644<\/h2>\n<h3 data-section-id=\"h3li5x\" data-start=\"1466\" data-end=\"1490\">1. \u0627\u06cc\u062c\u0627\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0648\u0634\u0647<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037cl\">mkdir<\/span> <span class=\"\u037cn\">-p<\/span> modules\/droplet-lb\r\n<span class=\"\u037cl\">cd<\/span> modules\/droplet-lb<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1554\" data-end=\"1557\" \/>\n<h3 data-section-id=\"12qlimt\" data-start=\"1559\" data-end=\"1594\">2. \u062a\u0639\u0631\u06cc\u0641 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 (variables.tf)<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>variable \"droplet_count\" {}\r\nvariable \"group_name\" {}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1660\" data-end=\"1663\" \/>\n<h3 data-section-id=\"1l9d7sq\" data-start=\"1665\" data-end=\"1701\">3. \u062a\u0639\u0631\u06cc\u0641 Droplet\u0647\u0627 (droplets.tf)<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>resource \"digitalocean_droplet\" \"droplets\" {\r\n  count  = var.droplet_count\r\n  image  = \"ubuntu-20-04-x64\"\r\n  name   = \"${var.group_name}-${count.index}\"\r\n  region = \"fra1\"\r\n  size   = \"s-1vcpu-1gb\"\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1909\" data-end=\"1912\" \/>\n<h3 data-section-id=\"1gxpbea\" data-start=\"1914\" data-end=\"1948\">4. \u062a\u0639\u0631\u06cc\u0641 Load Balancer (lb.tf)<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>resource \"digitalocean_loadbalancer\" \"www-lb\" {\r\n  name   = \"lb-${var.group_name}\"\r\n  region = \"fra1\"\r\n\r\n  forwarding_rule {\r\n    entry_port     = 80\r\n    entry_protocol = \"http\"\r\n    target_port     = 80\r\n    target_protocol = \"http\"\r\n  }\r\n\r\n  healthcheck {\r\n    port     = 22\r\n    protocol = \"tcp\"\r\n  }\r\n\r\n  droplet_ids = [\r\n    for droplet in digitalocean_droplet.droplets:\r\n    droplet.id\r\n  ]\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2342\" data-end=\"2345\" \/>\n<h3 data-section-id=\"lcvawf\" data-start=\"2347\" data-end=\"2382\">5. \u062a\u0639\u0631\u06cc\u0641 provider (provider.tf)<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>terraform {\r\n  required_providers {\r\n    digitalocean = {\r\n      source  = \"digitalocean\/digitalocean\"\r\n      version = \"~&gt; 2.0\"\r\n    }\r\n  }\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2532\" data-end=\"2535\" \/>\n<h3 data-section-id=\"m6hyaf\" data-start=\"2537\" data-end=\"2568\">6. \u062a\u0639\u0631\u06cc\u0641 \u062e\u0631\u0648\u062c\u06cc (outputs.tf)<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>output \"lb_ip\" {\r\n  value = digitalocean_loadbalancer.www-lb.ip\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2646\" data-end=\"2649\" \/>\n<h2 data-section-id=\"lqdkie\" data-start=\"2651\" data-end=\"2670\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644<\/h2>\n<h3 data-section-id=\"dt9y4f\" data-start=\"2672\" data-end=\"2688\">\u0641\u0627\u06cc\u0644 main.tf<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>module \"groups\" {\r\n  source = \".\/modules\/droplet-lb\"\r\n\r\n  droplet_count = 3\r\n  group_name    = \"group1\"\r\n}\r\n\r\noutput \"loadbalancer-ip\" {\r\n  value = module.groups.lb_ip\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2863\" data-end=\"2866\" \/>\n<h3 data-section-id=\"o3xs4v\" data-start=\"2868\" data-end=\"2883\">\u0627\u062c\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>terraform init\r\nterraform plan\r\nterraform apply<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2943\" data-end=\"2946\" \/>\n<h2 data-section-id=\"8a513x\" data-start=\"2948\" data-end=\"2989\">\u062a\u063a\u06cc\u06cc\u0631 \u0646\u0627\u0645 \u0645\u0646\u0627\u0628\u0639 \u0628\u062f\u0648\u0646 \u062d\u0630\u0641 (moved block)<\/h2>\n<p data-start=\"2991\" data-end=\"3094\">\u0627\u06af\u0631 \u0646\u0627\u0645 \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f\u060c Terraform \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062d\u0630\u0641 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u274c<br data-start=\"3066\" data-end=\"3069\" \/>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>moved {\r\n  from = module.groups\r\n  to   = module.groups_renamed\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3172\" data-end=\"3175\" \/>\n<h2 data-section-id=\"e2ha5u\" data-start=\"3177\" data-end=\"3204\">\u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644<\/h2>\n<h3 data-section-id=\"1sm5x5s\" data-start=\"3206\" data-end=\"3226\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 count<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>module \"groups\" {\r\n  source = \".\/modules\/droplet-lb\"\r\n\r\n  count  = 3\r\n  droplet_count = 3\r\n  group_name    = \"group1-${count.index}\"\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3369\" data-end=\"3372\" \/>\n<h3 data-section-id=\"12nqqco\" data-start=\"3374\" data-end=\"3397\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 for_each<\/h3>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code>variable \"group_counts\" {\r\n  type = map\r\n  default = {\r\n    \"group1\" = 1\r\n    \"group2\" = 3\r\n  }\r\n}\r\n\r\nmodule \"groups\" {\r\n  source   = \".\/modules\/droplet-lb\"\r\n  for_each = var.group_counts\r\n\r\n  droplet_count = each.value\r\n  group_name    = each.key\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3647\" data-end=\"3650\" \/>\n<h2 data-section-id=\"1uxrxh0\" data-start=\"3652\" data-end=\"3665\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h2>\n<p data-start=\"3666\" data-end=\"3690\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f:<\/p>\n<ul data-start=\"3692\" data-end=\"3881\">\n<li data-section-id=\"18lee4w\" data-start=\"3692\" data-end=\"3727\">\u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 Terraform \u0628\u0633\u0627\u0632\u06cc\u062f<\/li>\n<li data-section-id=\"1xcxmla\" data-start=\"3728\" data-end=\"3774\">\u0686\u0637\u0648\u0631 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u0645\u0627\u0698\u0648\u0644 \u06af\u0631\u0648\u0647\u200c\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f<\/li>\n<li data-section-id=\"145hktx\" data-start=\"3775\" data-end=\"3848\">\u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code data-start=\"3797\" data-end=\"3804\">count<\/code> \u0648 <code data-start=\"3807\" data-end=\"3817\">for_each<\/code> \u0686\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/li>\n<li data-section-id=\"124j9e8\" data-start=\"3849\" data-end=\"3881\">\u0686\u0637\u0648\u0631 \u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/p>\n<div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Terraform \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0645\u0646\u0627\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u200c\u062a\u0627\u0646 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u06af\u0631\u0648\u0647\u200c\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0647\u0633\u062a\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0644\u062e\u0648\u0627\u0647 (customization) \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647\u200c\u06a9\u0627\u0631 \u0628\u0628\u0631\u06cc\u062f\u060c \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0631 \u0628\u0627\u0631 \u0647\u0645\u0647 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u062e\u0635\u0648\u0635\u0627\u064b \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0648 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0633\u06cc\u0627\u0631 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":6302,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[131,215],"tags":[1023,1025,1031,1029,1027,1024,1028,1026,1030],"class_list":["post-6301","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-131","category-server","tag-load-balancer","tag--terraform","tag----terraform","tag---terraform---","tag---count--for_each--terraform","tag-1024","tag--load-balancer--droplet--terraform","tag--terraform-----"],"aioseo_notices":[],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=6301"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6301\/revisions"}],"predecessor-version":[{"id":6303,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6301\/revisions\/6303"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6302"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}