{"id":25063792,"url":"https://github.com/harryjhin/terraform-study","last_synced_at":"2026-02-11T18:32:43.336Z","repository":{"id":275597174,"uuid":"926572938","full_name":"HarryJhin/terraform-study","owner":"HarryJhin","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-03T14:06:41.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-29T00:16:11.823Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HarryJhin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-03T13:53:40.000Z","updated_at":"2025-02-03T14:06:45.000Z","dependencies_parsed_at":"2025-02-03T15:22:00.974Z","dependency_job_id":"88af44ac-9018-44a8-9dbf-379d20ae33f6","html_url":"https://github.com/HarryJhin/terraform-study","commit_stats":null,"previous_names":["harryjhin/terraform-study"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HarryJhin/terraform-study","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarryJhin%2Fterraform-study","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarryJhin%2Fterraform-study/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarryJhin%2Fterraform-study/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarryJhin%2Fterraform-study/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HarryJhin","download_url":"https://codeload.github.com/HarryJhin/terraform-study/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarryJhin%2Fterraform-study/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29341227,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T18:24:36.877Z","status":"ssl_error","status_checked_at":"2026-02-11T18:23:50.867Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-06T18:54:04.453Z","updated_at":"2026-02-11T18:32:43.317Z","avatar_url":"https://github.com/HarryJhin.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform Study\n\n## 테라폼이란?\n\n테라폼(Terraform)은 **HashiCorp**에서 개발한 오픈 소스 인프라스트럭처 자동화 도구입니다. 주요 특징은 다음과 같습니다:\n\n1. 코드로 인프라 관리: 클라우드 및 온프레미스 리소스를 코드로 정의하고 프로비저닝할 수 있습니다.\n2. 다중 클라우드 지원: AWS, Google Cloud, Azure 등 다양한 클라우드 플랫폼을 지원합니다.\n3. 선언적 구성: `HCL`(HashiCorp Configuration Language)을 사용하여 원하는 인프라 상태를 선언합니다.\n4. 상태 관리: 인프라의 현재 상태를 추적하고 일관성을 유지합니다.\n5. 자동화된 인프라 프로비저닝: 코드 한 줄로 복잡한 인프라 환경을 신속하게 생성하고 변경할 수 있습니다.\n\n## 테라폼 설치\n\n### macOS\n\n```shell\nbrew install terraform\n```\n\n### Windows\n\n1. [Terraform 다운로드 페이지](https://www.terraform.io/downloads.html)에서 `Windows`용 바이너리 파일을 다운로드합니다.\n2. 압축을 해제한 후 `terraform.exe` 파일을 `PATH` 환경 변수에 추가합니다.\n3. 설치 확인:\n    ```shell\n    terraform --version\n    ```\n\n## 테라폼 기본 개념\n\n테라폼을 사용하기 위해 알아야 하는 몇 가지 기본 개념이 있습니다.\n\n### 1. Provider\n\n테라폼이 인프라를 관리하는 대상을 `Provider`라고 합니다. AWS, Google Cloud, Azure 등 다양한 클라우드 플랫폼을 지원합니다.\n\n```hcl\nprovider \"aws\" {\n  region = \"ap-northeast-2\"\n}\n```\n\n### 2. Resource\n\n`Resource`는 인프라를 구성하는 각 요소를 정의하는 블록입니다. EC2 인스턴스, VPC, 서브넷 등이 `Resource`에 해당합니다.\n\n```hcl\nresource \"aws_instance\" \"example\" {\n  ami           = \"ami-0c55b159cbfafe1f0\"\n  instance_type = \"t2.micro\"\n}\n```\n\n### 3. Module\n\n`Module`은 특정 기능을 가진 코드 블록을 재사용하기 위한 단위입니다. 코드를 모듈로 분리하여 관리하면 코드의 가독성과 재사용성을 높일 수 있습니다.\n\n```hcl\nmodule \"vpc\" {\n  source = \"./modules/vpc\"\n}\n```\n\n### 4. State\n\n테라폼이 관리하는 인프라의 현재 상태를 `State` 파일에 저장합니다. 이 파일은 테라폼 명령을 실행할 때 생성되며, 인프라의 변경 이력을 추적하고 일관성을 유지하는 데 사용됩니다.\n\n```shell\nterraform.tfstate\n```\n\n## 테라폼 명령어\n\n테라폼을 사용할 때 자주 사용하는 명령어는 다음과 같습니다.\n\n### 1. `terraform init`\n\n테라폼 프로젝트를 초기화합니다. Provider 플러그인을 설치하고 모듈을 불러옵니다.\n\n```shell\nterraform init\n```\n\n### 2. `terraform plan`\n\n테라폼이 실행할 변경 사항을 미리 확인합니다. 실제로 인프라를 변경하지는 않습니다.\n\n```shell\nterraform plan\n```\n\n### 3. `terraform apply`\n\n테라폼이 변경 사항을 적용하여 인프라를 생성하거나 업데이트합니다.\n\n```shell\nterraform apply\n```\n\n### 4. `terraform destroy`\n\n테라폼이 관리하는 인프라를 삭제합니다.\n\n```shell\nterraform destroy\n```\n\n## 참고 자료\n\n- [Terraform 공식 문서](https://www.terraform.io/docs/index.html)\n- [Terraform Tutorial](https://learn.hashicorp.com/collections/terraform/aws-get-started)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharryjhin%2Fterraform-study","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharryjhin%2Fterraform-study","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharryjhin%2Fterraform-study/lists"}