LoginSignup
0
0

More than 3 years have passed since last update.

Terraformでインフラを構築しようとして失敗する大学生日記

Last updated at Posted at 2020-06-15

Terraformとは

まず、この記事をご覧の方でTerraformをご存知でない方数時間前の私はこちらをご覧ください。
https://www.terraform.io/

まぁ一次記事を理解できるなら私のQiitaなんか見ないですよね、
初学者なりに理解したTerraformを説明させていただきます。
しっかりとした知見は得ていないので、間違っているならコメントしていただけるとありがたいです。

Terraformとは、インフラ構築をコードで行うツールであり
そのことをInfrastructure as Codeと言います。
メリットしては、同一環境が容易に構築できるという点や
gitでの管理が可能であるため以前の環境に戻すことが簡単である、などたくさんあります。
モダンですね、モダン、もダン、ジダン
 
それでは以下に私がTerraformでAWSを構築していった経緯を記述していきます。
記事を更新していくつもりなので、更新が遅いとか言わないでください。

参考のURL

こちらに参考にさせていただいたURLを記述していきます。
https://dev.classmethod.jp/articles/terraform-getting-started-with-aws/
(2020/06/15)
https://qiita.com/aromanokarisu/items/42e48c2fc6379517c031
(2020/06/16)

環境

私はmacOSのCatalinaを使用しております。
主にターミナルを利用するつもりです。

インストール

$ brew update
$ brew install terraform

Homebrewをインストールしていない場合はインストールしてからお願いします。
set up等は本記事よりも前に投稿されていて、質が良い記事があるのでそちらを参照お願いします。
AWS IAMについての記事も貼っておきます。
AWS IAM
(ぜひ公式ドキュメントから読んで理解できなかった人はアクセスしてください。)

つまづき点 1st IAMユーザーの作成とaws cliのダウンロード

私はルートユーザーでしかAWSにアクセスしたことがなく、
今回は複数ユーザーからのアクセスを仮定しているためIAMユーザーを作成しました。
aws_access_key_idaws_secret_access_keyは作成時しか確認できなさそうだったので、
csvを保存することをお忘れなく!!!!!!

また、AWS CLIのダウンロードもしていない人はしましょう。

バージョン管理

今回はgitにてtfファイルのバージョン管理を行うのでgitを引っ張ってきましょう。
gitのレポジトリをクローンしかしたことがない!という人はこちらを参照ください

つまづき点 2nd git管理下でのterraformコマンド

gitのレポジトリの管理下にある場所で

$ terraform init
$ terraform plan
$ terraform apply

行うとプラグインなどが自動で追加された際に、そのプラグインまで
gitの変更点として追加されます。当たり前
なので僕はgit管理下とは異なるdirにcpして上記のコマンドを実行しました。
もっといい方法をご存知でしたら教えてください。

.gitignoreにtfstateなどを無視する記述をすればいいと気づいたので
レポジトリ内に

#  Local .terraform directories
**/.terraform/*

# .tfstate files
*.tfstate
*.tfstate.*

# .tfvars files
*.tfvars

コメントアウトは消していただいても大丈夫です。(2020/06/18追記)

destroy

今回でterraformにて簡単ではありますが、AWSのインスタンス作成ができました。
仮で作成したインスタンスで不要であればdestroyしたい、と思いましたが

$ terraform destroy

で破壊されるインスタンスが何であるか確認したい
(消すと成果物が見れなくなるので)と思い確認するコマンドと特定のインスタンスをdestroyする
コマンドを拾ってきましたので下記に記述しておきます。

$ terraform plan -destroy         // EC2に紐づいているインスタンスのリソース名を取得
$ terraform destroy -target=[インスタンス名] -target=[インスタンス名] // 複数も可能

上記の参考はこちら

region

基本的にproviderはAWSを利用しております。そこでこれはなんだろう?と初学者ながら感じたので記述しておきます。

main.tf
provider "aws" { //
  //バージョンを固定
  version = "2.23.0"
  region  = "ap-northeast-1"
}

はい、regionですね。わからないものは一つ一つ潰していきたいので調べました。
regionとは実際にサーバーがある地域を表すものですので上記のコードにはTokyoのregionが指定されております。
公式ドキュメント
(2020/06/18追記)

ここ違うよ、とか
ここもっとこうしたほうがいいよってことがあればコメントお願いします。

0
0
2

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