Terraform入門
はじめに
僕は、Terraformを実務で触ったことがありませんでした。また個人的な学習でも何から触っていいかもわからんしまぁひとまずなんかインフラをコードでどうこうできるんしょくらいの認識でいました。
本記事では、書籍に沿って行った学習過程で書籍に記載がない点と「ん?」ってなった点を取り上げたいと思います。
- 書籍詳細に関しては、省きます。
教材
- 同僚の方にお勧めいただいたこちらを使用して学習を始めることにしました。
学習方法
- 基本的には、書籍の内容に沿ってハンズオンしながら理解を進めていけたらなと思ってます。
書籍の中身
- 前提としてAWSを題材にした書籍になってます。また目次をみていただければ記載あるのでご覧ください。
- 個人的にいいなって思っているのはサンプルコードが200以上ある点です。
Terraformとは?
- 下記記事を参考にしてください。
AWSでTerraformに入門 | Developers.IO
今回ハンズオンで行ったこと
上記に記載しているQiitaの記事と似通っていますが以下を学習しました。
-
- AMI
- IAM
- EC2
Terraform
- plan
- apply
- destroy
学習の流れ
- 学習の流れは、EC2インスタンをTrraformで作成し、更新を行い、また
must be replaced
と表示されるような変更を行い最後にリソースの削除を行いました。- コード、書籍の手順等は、割愛します。
学習の際に困った点
1. 書籍の第1章セットアップでは、いきなりIAMの作成から始まってますが指示通り作成します。
日を跨いで学習を行う場合やターミナルを別タブで行う場合があまり想定されていません、環境変数の設定で使用するシークレットアクセスキーに関しては、IAM作成時にコピーして控えておいた方がいいです。 もし忘れてしまったりメモし忘れてしまった場合、下記画像を参考に新たにシークレットアクセスキーの作成を行えば再度取得ができます。(僕はこの方法しかたどり着けなかったので他に方法があるなら知りたいです!!)
- ターミナル上で入手したアクセスIDとシークレットアクセスキーを環境変数に設定します。これで書籍の指示通りに
AWSアカウントID
が出力されます。
2. 書籍に記載ないけど.....
「第2章」でAMI
の使用が前提になっており肝心のAMI
の作成に関してが記載ありません。作成手順がないのでAWS初心者にとっては、なんのことよ!!!!ってなると思います。
*ここでAMIの詳細については、割愛させていただきます。
AWSが公開しているAMIを使用します
参考にした記事:CloudFormationで最新のAmazon Linux 2のAMI IDを取得してEC2を構築する | Developers.IO
$ aws ssm get-parameter \ --name /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2 \ --query "Parameter.Value" \ --region ap-northeast-1 "ami-06ad9296e6cf1e3cf"
これで書籍のハンズオンが進められるようになります。
学習をしてみて
大きな障害もなく終えれてよかったです。入門内容から触ってみて実際に実務で触った内容の理解が進んだり、自分の手でインスタンスが作成されたぜやっほいって気持ちとかを感じレたりしたのでハンズオン形式での学習は大事だなって改めて思いました。
次は、第3章からですが内容を読むと第5章までは一気に進められる内容になっているので頑張ろうと思います。またこれを期にAWSに関しての知識も実践で使えるものに変換できていけたらならと個人的には思っています。
最後に
今回、在籍する会社のCTOにAMIを作成しなくても学習できるとアドバイスをいただきました。当初公開した際の記事では、下記に示すように自分でAMIを作成する手順で書籍の内容を進めてましたがAWSが提供しているAMIを使用する手順へ変更しました。ご興味ある方は、下記手順でオリジナルのAMIを作成することが可能なので、tryしてみてください。
また今回記載している内容は、2020/07/21現在で動作確認が取れた内容となっています。
修正前の内容は以下です。
自身で作成する
AMIを作成する
AMIのIDを取得
- こちらは左にあるメニューからAMIを選択し上記で作成したAMIのIDをコピーします。
早速手順に従いterraform apply
を行いインスタンスを作成するぞーって気持ちをいきなり砕きます
Error: Error launching source instance: InvalidAMIID.NotFound: The image id '[ami-id]' does not exist status code: 400, request id: request_id(英数字が並んでいる)
- 何が原因か?
オハイオに設定するなら下記をターミナル上で実行すればOKです。
$ export AWS_DEFAULT_REGION=us-east-2