0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初めてのTerraform

Posted at

Terraformとは

TerraformはHashiCorpという会社が開発したIaCツール(Infrastructure as Code)です。

Terraformを使うことでAzureなどのクラウドリソースをコード化することができ、バージョン管理や再利用、共有などを行うことができます。

インフラをコード化することで以下のようなメリットがあります。

  • 効率的にインフラ環境を構築できる:コード化が完了していればTerraformを実行するだけで、定義されたリソース設定を基に構築してくれます。
  • 人的ミスの削減:Terraformが自動的にインフラを構築してくれるため、ヒューマンエラーを防ぐことができます。
  • 保守性の向上:インフラがコード化されたことによりGithubなどでバージョン管理を行うことができるようになりました。これにより、大規模な構成でもメンテナンスが行いやすくなります。

Terraformの基本的なワークフロー

Terraformでの一般的なワークフローは以下のようになります。

  1. Write(コードを書く): 構築したいリソースをコードで定義します。
  2. Plan(変更内容の確認):クラウド上のインフラと構成と、リソースを定義したコードを比較します。次のステップであるApply(変更の適用)を実行した際にリソースが作成されるのか、更新されるのか、または破棄されるのか教えてくれます。「terraform plan」コマンドで実行されます。
  3. Apply(変更の適用):コード化されたリソースの設定をクラウド上に適用します。「terraform apply」コマンドで実行されます。

どうやって書くのか

Terraform ではHCL(HashiCorp Configuration Language)と呼ばれる構文で定義リソースの設定を記述します。

以下の例は、HCLでAzureのリソースグループを定義しているコードです。

resource "azurerm_resource_group" "example" {
	name     = "example-resources" 
	location = "West Europe"
}

resourceというブロックの中に、リソース名とリージョンを指定しています。

どうやってクラウド上のリソースとコードを比較しているのか

Terraformではterraform.tfstateというファイルにリソースの状態がJSON形式で保存されています。

terraform planを実行した際は、terraform.tfstateとコード化されたリソース設定を比較することで、リソースがどう変更されるのかわかるようになっています。terraform planが実行できるのはterraform.tfstateがあるおかげということですね。

terraform.tfstateterraform applyを実行するたびに更新されるので、常に最新の状態を保つようになっています。

デフォルトではローカルに自動生成されますが、クラウド上に保管することが推奨されています。

おわり

業務でTerraformを使いそうなので簡単にまとめてみました

ちなみにHashiCorpという名前は創設者であるMitchell Hashimotoさんの名前が由来しているそうです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?