12
20

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入門(1) - インストールと初期設定

Last updated at Posted at 2021-06-03

クラウドを学び始めてしばらくすると、インフラをコード化できることを知りました。
Infrastructure as Code(IaC)ってやつですね。

IaCのツールは様々です。
AWSであればCloudFormation、AzureであればARMTemplate、
そして、マルチクラウドに対応しているIaCのツールがHashiCorp社のTerraformです。

前に少しだけ触ったことはあったTerraformを改めて学んで、知見がたまってきたのでチュートリアル形式でまとめてみたいと思います。題材は、学習のためにAWSCLIで作った環境をTerraformで再現することにしました。

作りながら覚えるTerraform入門シリーズ
  1. インストールと初期設定 => 今回はコチラ
  2. 基本編
  3. VPC編
  4. EC2編
  5. Route53 + ACM編
  6. ELB編
  7. RDS編

システム構成

cloud02-aws-terraform.png

ELB、EC2、RDSなどの一般的な3層アーキテクチャの構成です。
ソースコードは以下にあります。

環境

  • macOS BigSur 11.3.1
  • Homebrew 3.1.9

Terraformインストール

Homebrewで簡単にインストールできます。

brew install terraform

現時点での最新バージョン0.15.5がインストールされました。
実態は/usr/local/bin/にあるのでPATHを通す必要もありませんでした。

terraform --version
Terraform v0.15.5

ちなみに、tfenvを使ってインストールする方法もあります。
tfenvを使うと、複数のバージョンを切り替えたり、チーム開発においてバージョンを固定するのに便利そうです。ただ、tfenv経由でterraformコマンドを実行すると遅かったので、現時点では使うのを控えています^^;

# tfenvのインストール
brew install tfenv

# tfenvを使ってterraformをインストール
tfenv install 0.15.4
tfenv install 0.15.5

# デフォルトバージョンを指定
tfenv use 0.15.4

# 一覧を表示(0.15.4を使う設定になっている)
tfenv list
  0.15.5
* 0.15.4 (set by /usr/local/Cellar/tfenv/2.2.2/version)

# バージョン確認
terraform --version    
Terraform v0.15.4

# バージョン切り替え
tfenv use 0.15.5

# バージョンが切り替わった
tfenv list
* 0.15.5 (set by /usr/local/Cellar/tfenv/2.2.2/version)
  0.15.4

# バージョン確認
terraform --version    
Terraform v0.15.5

tfenvを利用する場合、カレントディレクトリに.terraform-versionというファイル名でバージョンを書いてあげると、指定バージョンの利用を強制できます。tfenv installだけで(引数なしに)指定バージョンをインストールすることもできるようになります。

.terraform-version
0.15.5

VSCode拡張機能

以下の2つをインストールしました。

「HashiCorp Terraform」で構文チェック、シンタックスハイライト、候補表示ができるようになりますが、リファレンスにジャンプしたい場合に「Terraform Autocomplete」が便利そうだったので試験的に使っています。

それと、リンクページにも記載のあるとおり「HashiCorp Terraform」には自動フォーマットの機能がありますので、"editor.formatOnSave": trueを追記して有効にしておくと便利です。保存のたびにインデントを整えてくれます。

Formatting
To enable formatting, it is recommended that the following be added to the extension settings for the Terraform extension:

settings.json
    "[terraform]": {
        "editor.formatOnSave": true
    }

エイリアス設定

terraformを使い始めると次のようなコマンドを頻繁に入力することになります。

  • terraform plan
  • terraform apply
  • terraform destroy

毎回terraformと打つのが面倒なので、.zshrcにエイリアスを登録しておくと便利です。

~/.zshrc
alias tf="terraform"
alias tfp="terraform plan"
alias tfv="terraform validate"
alias tff="terraform fmt -recursive"
alias tfa="terraform apply -auto-approve"
alias tfd="terraform destroy -auto-approve"

applydestroyは作成・更新・削除するためのコマンドです。
-auto-approveをつけているのでyes/noの確認の入力を求められませんが、実際の業務で使用するのはとても危険なので、必要に応じてカットするようにしましょう。慣れるまではエイリアスを使わずに手入力して、planの結果を確認してからyes/noという流れのほうが良いかもしれません。

git-secretsのインストール

terraformを使ってAWSにアクセスするには、あらかじめ認証情報を登録しておく必要があります。
認証情報を定義する方法はいくつかありますが、そういった機密情報を誤ってGitのソース管理に含めてしまわないようにgit-secretesをインストールしておきます。

# インストール
brew install git-secrets

# git-secretsの設定
git secrets --register-aws --global
git secrets --install ~/.git-templates/git-secrets
git config --global init.templatedir '~/.git-templates/git-secrets'

AWSCLIのインストール

AWSへアクセスするための認証情報を登録するためにAWSCLIをインストールします。
公式ページ の「MacOS」のリンクからPKGをダウンロードしてインストールすることができます。

F72BE34B-1E07-49B8-9BBC-3754CADF6376.png

AWSCLIがインストールできたら、IAMユーザーのアクセスキーを登録します。
このユーザーのアクセス権に従ってterraformでリソースの作成・更新・削除などが行われますので、通常はAdministratorAccessの権限を持つユーザーを作成して割り当てます。

aws configure set aws_access_key_id <アクセスキーID>
aws configure set aws_secret_access_key <シークレットアクセスキー>

~/.aws/credentialsを確認して、認証情報が登録できていることを確認します。

~/.aws/credentials
[default]
aws_access_key_id = <アクセスキーID>
aws_secret_access_key = <シークレットアクセスキー>

試しに動作確認を行ってみます。
以下のコマンドを実行して、利用するIAMユーザーの情報が表示されればOKです。

aws sts get-caller-identity
{
    "UserId": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/terraform"
}

これでterraformを利用するための準備は完了です。
次回は、VPCの作成と削除のコマンドを通じて、terraformの基本的な使い方を書いてみたいと思います!

参考リンク

12
20
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
12
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?