1
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 3 years have passed since last update.

Terraformコマンド 備忘録

Last updated at Posted at 2020-10-29

Terraformについて、勉強していたのでメモとして残します。
versionは0.13.2となっています。

作業ディレクトリの初期化

公式

# 初期化
terraform init

計画実行(dry-run)

追加・更新・削除内容を確認できます。
公式

ただし、terraformのdry-runであるだけで、例えばapply時に存在しないインスタンスタイプを指定して、エラーとなる場合もあります。
公式ではないが、チェックするためのツールもあるとのこと。
tflint

# 計画実行
terraform plan

# 特定のリソースのみ
# リソースの指定
terraform plan -target=aws_security_group.ecs_cluster

# モジュールの指定
terraform plan -target=module.api_ecs_cluster

リソースの追加・更新・削除

planにて出力された結果を実行。
公式

# 実行
terraform apply

リソースの削除

planにて出力された結果を実行。
公式

# 削除
terraform destroy

# コマンド実行前に確認で安心
terraform plan -destroy

リソースの削除

planにて出力された結果を実行する。
公式

# 削除
terraform destroy

# コマンド実行前に確認で安心
terraform plan -destroy

モジュールの取得

実行に必要なモジュールの取得。
公式

# モジュールの取得
terraform get

フォーマット

.tfファイルのフォーマットをしてくれる。
公式

# フォーマット
terraform fmt

# 再帰的にフォーマット
terraform fmt -recursive

記述チェック

.tfファイルの記述をチェックしてくれる。
公式

# 記述チェック
terraform validate

# Error: Missing newline after argument

  on main.tf line 41, in module "api_ecs_cluster":
  41:   source = "../../modules/ecs-cluster"aaa

An argument definition must end with a newline.

state

Terraformのstateファイルは実際にAWS等にデプロイされているインフラと、マッピングに利用されており、メタデータを保持しているとのこと。
また、チーム開発等を行う際はAWSであればS3に配置し、直接編集を行わないようにします。
公式

# 作成リソースのリスト表示
terraform state list

# リソースの詳細情報の表示
terraform state show <詳細情報を見たいリソース>
terraform state show aws_security_group.ecs_cluster

# S3等からstateファイルを持ってくる
terraform state pull

# ローカルのstateとリモートのStateを置き換える(※ 基本は使うべきではない)
terraform state push

# リソースをTerraform管理から外す
    terraform state rm <管理外にしたいリソース>
    terraform state rm aws_security_group.ecs_cluster

import

Terraformで管理されていないリソースを管理下に置きます。
既存のリソースに対してTerrafomを導入したいときに使います。

Googleがterrafomerというツールを作成しているのでそちらを使うのもありかと。
terrafomer

EC2を例にする

tfファイルの作成する

resource "aws_instance" "test_instance" {
}

インスタンスIDを確認しインスタンスIDを元にコマンド実行する

terraform import aws_instance.test_instance <インスタンスID>

stateコマンドの結果を元に.tfファイルを編集する

terraform state show aws_instance.test_instance

planで差分がないか確認 (差分があったとしても問題なければOK)

terraform plan
1
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
1
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?