🕌

【入門#3】TerraformでAWS情報と連携させよう

に公開

今回の目標

TerraformでAWSのリソースを管理するための下準備を行います。
※AWSシークレット情報をTerraformに追記

Terraformでは、AWSのリソースをコードで記載し、自在にデプロイすることが可能です。
TerraformでAWSと接続するまでをゴールとします。

-- provider.tf

前提条件

下記記事の【2.【入門#2】Route53の設定を行おう(手動作成分のみ)】までが完了していること
TerraformでAWS(EC2/ECS)環境を作るまでの目次

やっていきましょう!

1.AWSコンソールでTerraform用IAMユーザーを作成する

1.1.IAMユーザー作成

AWSコンソール画面から公式を参考にIAMユーザーを作成します。
権限は「AdministratorAccess」で設定してください。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_create.html

1.2.IAMユーザーのアクセスキー発行(アクセスキー、シークレット)

「作成したIAMユーザー -> セキュリティ認証情報 -> アクセスキー」からアクセスキーを発行します。
ユースケースは「コマンドラインインターフェイス (CLI)」を選択してください。
※発行されたアクセスキーはメモしておいてください。

1.3.awscliを整える

まだコマンドをインストールできていない人は下記でインストールします。

brew install aws

IAMユーザーのアクセスキーをawscliに設定する。

aws configure --profile 任意のプロジェクト名

下記のように入力する。
アクセスキー:【1.2.】で取得したアクセスキー
シークレット:【1.2.】で取得したシークレット
リージョン:ap-noath-east
フォーマット:None

おまけですが、私は環境変数の管理に.direnvを使用しています。
プロジェクト直下に.envrcファイルをおいておくことでプロジェクト切り替えると環境変数を自動適用できるので生産性バク上がりです。

AWS環境をたくさん作っていくと、aws configure --profile XXXをどんどん実行することが増え、プロジェクトを切り替えるたびに使用するプロファイルの切り替えが面倒になります。

awscliはAWS_PROFILEという環境変数をみて、プロファイルの切り替えを行うため、プロジェクト直下の.envrcに下記をかいておくと、ディレクトリを切り替えただけでAWSCLIの向き先が変わって超便利です。

export AWS_PROFILE='--profileで指定した任意のプロジェクト名'

1.4.TerraformにAWS情報を入力する

リポジトリ直下にprovider.tfを作成し、下記を記載します。

provider "aws" {
  region  = "ap-northeast-1"
  profile = "aws configure --profileで入力したprofile名"
}

では、接続確認をしていきましょう!!
と、その前に、、もう一つ設定しなければいけないものがあります。

使用するTerraformバージョンとproviderバージョンを指定する必要があります。
versions.tfを作成し、下記を記載します。

terraform {
  required_version = "1.11.3" # terraform -vで表示されるバージョン

  required_providers {
    aws = {
      source  = "hashicorp/aws" # 公式のawsプロバイダーバージョン
      version = "~> 5.0"
    }
  }
}

1.5.記載した内容でTerraformを初期化する。

ここまで設定ができたら、下記コマンドで接続を確認します。

terraform init

結果

$ terraform init
Initializing the backend...
Initializing provider plugins...
- Reusing previous version of hashicorp/aws from the dependency lock file
- Using previously-installed hashicorp/aws v5.94.1

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

成功したみたい!
下記のファイルたちが出力されました。
使用するawsプロバイダーについての情報みたいですね。

試しにterraform planを行ってみると、変更内容ないよーと教えてくれました。

$ terraform plan

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

以上!
これでterraformが使えるようになったので、バシバシとリソースを記述してAWS環境を構築できる用になりましたね。

Discussion