<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Terraform on Kiglo</title>
    <link>https://page.kiglo.org/tags/terraform/</link>
    <description>Recent content in Terraform on Kiglo</description>
    <generator>Hugo</generator>
    <language>ko-kr</language>
    <lastBuildDate>Sun, 21 Dec 2025 11:00:00 +0900</lastBuildDate>
    <atom:link href="https://page.kiglo.org/tags/terraform/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Terraform 실전: 2-AZ VPC와 서브넷 세팅</title>
      <link>https://page.kiglo.org/posts/iac-terraform-vpc-manual/</link>
      <pubDate>Sun, 21 Dec 2025 11:00:00 +0900</pubDate>
      <guid>https://page.kiglo.org/posts/iac-terraform-vpc-manual/</guid>
      <description>&lt;h2 id=&#34;이론을-넘어-실전으로&#34;&gt;이론을 넘어 실전으로&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;../iac-terraform-networking&#34;&gt;VPC 세팅과 Peering vs TGW&lt;/a&gt; 글 내용을 기반으로, 2AZ VPC 를 terraform 으로 구성해 보겠습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-변수-정의와-리전-설정&#34;&gt;1. 변수 정의와 리전 설정&lt;/h2&gt;
&lt;p&gt;먼저 확장성을 위해 AZ 목록을 변수화하고 리전을 정의합니다.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-hcl&#34; data-lang=&#34;hcl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;variable&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;region&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  default &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ap-northeast-2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;variable&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;azs&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  description &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;사용할 가용 영역 리스트&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  type        &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;list&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  default     &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ap-northeast-2a&amp;#34;, &amp;#34;ap-northeast-2c&amp;#34;&lt;/span&gt;]&lt;span style=&#34;color:#75715e&#34;&gt; # 2-AZ 전략
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;variable&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vpc_cidr&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  default &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;10.0.0.0/16&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;2-vpc와-서브넷-cidrsubnet과-count의-활용&#34;&gt;2. VPC와 서브넷: &lt;code&gt;cidrsubnet&lt;/code&gt;과 &lt;code&gt;count&lt;/code&gt;의 활용&lt;/h2&gt;
&lt;p&gt;서브넷을 하드코딩하는 것은 가장 피해야 할 습관입니다. 테라폼의 내장 함수를 사용하여 자동으로 계산되게 구성합니다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Infrastructure as Code: 효율적인 테라폼 Layer 설계와 격리(Isolation) 전략</title>
      <link>https://page.kiglo.org/posts/iac-terraform-introduction/</link>
      <pubDate>Sat, 20 Dec 2025 10:00:00 +0900</pubDate>
      <guid>https://page.kiglo.org/posts/iac-terraform-introduction/</guid>
      <description>&lt;h2 id=&#34;딸깍의-함정&#34;&gt;&amp;ldquo;딸깍의 함정&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;테라폼을 처음 접하면 모든 리소스(VPC, DB, EC2 등)를 하나의 &lt;code&gt;.tf&lt;/code&gt; 파일 혹은 하나의 프로젝트 폴더에 몰아넣고 &lt;code&gt;terraform apply&lt;/code&gt;를 날리고 싶다는 유혹에 빠지기 쉽다고 생각합니다. 하지만 프로덕션 환경에서 이런 방식은 매우 위험합니다.&lt;/p&gt;
&lt;p&gt;인프라의 규모가 커질수록 **폭발 반경(Blast Radius)**을 최소화하고 관리 효율을 높이기 위한 &lt;strong&gt;Layered Architecture&lt;/strong&gt; 도입이 필수적입니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;레이어layer-도입의-계기와-의의&#34;&gt;레이어(Layer) 도입의 계기와 의의&lt;/h2&gt;
&lt;p&gt;모든 인프라를 한 곳에서 관리하면 특정 리소스(예: 보안 그룹 규칙)를 수정하다가 실수로 VPC 전체를 재생성하거나, 상태(State) 파일이 꼬여 전체 인프라가 마비되는 리스크가 존재합니다.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
