Terraformの起動
Introduction
公式文書ではTerraformを以下に紹介します.
Terraform is an infrastructure as code (IaC) tool that allows you to build, change, and version infrastructure safely and efficiently. This includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc. Terraform can manage both existing service providers and custom in-house solutions.
簡単に言えば、TeraFormはコード型インフラストラクチャツール(IaC)であり、インフラストラクチャを安全かつ効率的に構築、変更、バージョン化することができます.GUIを使用してインフラストラクチャを管理するのが一般的ですが、コードで管理できる点が大きなメリットのようです.AWS、Azure、Docker、GCP、OCI、Terraform Cloudなど、さまざまなクラウドプラットフォームをサポートし、バージョン管理をサポートします.以前AWS CloudFormationを使用したことがありますが、Terraformはこれと非常に似ており、より多くのプラットフォームをサポートしているようです.
Key Features
https://www.terraform.io/intro/index.html#key-features
Infrastructure as Code
インフラストラクチャを読み取り可能なコードにすることができます.これにより、バージョン管理、共有、再利用が可能になります.
Execution Plan
実行するタスクを記述する実行計画を生成します.これにより、実行計画をチェックすることができます.また、実際に適用する前に承認を要求することで、インフラストラクチャをより安全に管理できます.
Resource Graph
リソースグラフを作成し、依存しないリソースを並列に作成および変更します.これにより、リソースを最大限に迅速かつ効率的に実行できます.
Change Automation
複雑なインフラストラクチャの変更を適用および管理しながら、人為的な介入を最小限に抑えることができます.プロファイルを更新すると、Terraformは変更を確認し、相関性を考慮してインクリメンタル実行計画を生成します.(正直、この点はまだ感じていません.もっと勉強して、理解してくれれば、もう一つ詳しい説明を書いて...)
Getting Started with AWS
https://learn.hashicorp.com/collections/terraform/aws-get-started
私はTerraformを勉強してAWSリソースを管理しています.私が管理するインフラストラクチャがAWSに構築されているからです.そして、ちょうど正式な書類の中で、この内容はとてもよく整理されています.AWSだけでなく、Azure、Dockerなど様々なプラットフォームでどのようにスタートするか、茫然とした人々のために簡単で親切なガイドを用意し、私のように最初はTerraformの人は正式なドキュメントを見て簡単にフォローすることを強くお勧めします.以下に学習中に記録した内容を書きます.
Write Configuration# sample configuration
# Terraform 셋팅 관련 설정을 위한 블록
terraform {
required_providers { # Terraform이 인프라를 provisioning 하기 위해 필요한 소스
aws = {
source = "hashicorp/aws" # optional hostname
version = "~> 3.27" # optional, but recommended. 만약 설정하지 않으면, Terraform은 가장 최신 버전을 사용함!
}
}
required_version = ">= 0.14.9"
}
# provider란 Terraform이 당신이 정의한 리소스를 생성 및 관리하기위해 사용할 플러그인
# 구체적인 provider를 정의하기 위한 블록. 이 경우에는 "aws"
provider "aws" {
profile = "default" # 이 값은 Terraform 이 너의 local에 AWS config file의 AWS credencials를 참고한다.
region = "us-west-2"
}
# 인프라의 컴포넌트들을 정의하기 위해 사용하는 블록
# resource "{RESOURCE_TYPE}" "{RESOURCE_NAME}"
resource "aws_instance" "app_server" {
ami = "ami-830c94e3"
instance_type = "t2.micro"
tags = {
Name = "ExampleAppServerInstance"
}
}
Commandterraform init # download necessary providers
Inspect state
https://www.terraform.io/intro/index.html#key-features
Infrastructure as Code
インフラストラクチャを読み取り可能なコードにすることができます.これにより、バージョン管理、共有、再利用が可能になります.
Execution Plan
実行するタスクを記述する実行計画を生成します.これにより、実行計画をチェックすることができます.また、実際に適用する前に承認を要求することで、インフラストラクチャをより安全に管理できます.
Resource Graph
リソースグラフを作成し、依存しないリソースを並列に作成および変更します.これにより、リソースを最大限に迅速かつ効率的に実行できます.
Change Automation
複雑なインフラストラクチャの変更を適用および管理しながら、人為的な介入を最小限に抑えることができます.プロファイルを更新すると、Terraformは変更を確認し、相関性を考慮してインクリメンタル実行計画を生成します.(正直、この点はまだ感じていません.もっと勉強して、理解してくれれば、もう一つ詳しい説明を書いて...)
Getting Started with AWS
https://learn.hashicorp.com/collections/terraform/aws-get-started
私はTerraformを勉強してAWSリソースを管理しています.私が管理するインフラストラクチャがAWSに構築されているからです.そして、ちょうど正式な書類の中で、この内容はとてもよく整理されています.AWSだけでなく、Azure、Dockerなど様々なプラットフォームでどのようにスタートするか、茫然とした人々のために簡単で親切なガイドを用意し、私のように最初はTerraformの人は正式なドキュメントを見て簡単にフォローすることを強くお勧めします.以下に学習中に記録した内容を書きます.
Write Configuration# sample configuration
# Terraform 셋팅 관련 설정을 위한 블록
terraform {
required_providers { # Terraform이 인프라를 provisioning 하기 위해 필요한 소스
aws = {
source = "hashicorp/aws" # optional hostname
version = "~> 3.27" # optional, but recommended. 만약 설정하지 않으면, Terraform은 가장 최신 버전을 사용함!
}
}
required_version = ">= 0.14.9"
}
# provider란 Terraform이 당신이 정의한 리소스를 생성 및 관리하기위해 사용할 플러그인
# 구체적인 provider를 정의하기 위한 블록. 이 경우에는 "aws"
provider "aws" {
profile = "default" # 이 값은 Terraform 이 너의 local에 AWS config file의 AWS credencials를 참고한다.
region = "us-west-2"
}
# 인프라의 컴포넌트들을 정의하기 위해 사용하는 블록
# resource "{RESOURCE_TYPE}" "{RESOURCE_NAME}"
resource "aws_instance" "app_server" {
ami = "ami-830c94e3"
instance_type = "t2.micro"
tags = {
Name = "ExampleAppServerInstance"
}
}
Commandterraform init # download necessary providers
Inspect state
# sample configuration
# Terraform 셋팅 관련 설정을 위한 블록
terraform {
required_providers { # Terraform이 인프라를 provisioning 하기 위해 필요한 소스
aws = {
source = "hashicorp/aws" # optional hostname
version = "~> 3.27" # optional, but recommended. 만약 설정하지 않으면, Terraform은 가장 최신 버전을 사용함!
}
}
required_version = ">= 0.14.9"
}
# provider란 Terraform이 당신이 정의한 리소스를 생성 및 관리하기위해 사용할 플러그인
# 구체적인 provider를 정의하기 위한 블록. 이 경우에는 "aws"
provider "aws" {
profile = "default" # 이 값은 Terraform 이 너의 local에 AWS config file의 AWS credencials를 참고한다.
region = "us-west-2"
}
# 인프라의 컴포넌트들을 정의하기 위해 사용하는 블록
# resource "{RESOURCE_TYPE}" "{RESOURCE_NAME}"
resource "aws_instance" "app_server" {
ami = "ami-830c94e3"
instance_type = "t2.micro"
tags = {
Name = "ExampleAppServerInstance"
}
}
terraform init # download necessary providers
- : 리소스를 제거한다는 의미
+ : 리소스를 생성한다는 의미
-/+ : 리소스를 제거하고 다시 생성한다는 의미 (교체가 아님)
Reference
この問題について(Terraformの起動), 我々は、より多くの情報をここで見つけました https://velog.io/@doubleknd26/Terraformテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol