はじめに
お疲れ様です。相変わらず文鳥とハムスターに飼われている網中です。
今回は先日課内にてTerraform勉強会を実施したので、その内容について書こうと思います。
またAWS初心者向けに書いていますので、記事がやや長くなっております。
今回の記載範囲
- Terraform とは
- Terraform vs CloudFormation
- Terraformの環境構築 までです。
実践的なことについては、また後日…
また、VPC・サブネット作成方法とEC2へのアクセス法については本記事では取り扱わないので、わからない場合は事前に調べてみてください。
1.Terraformとは
今話題のInfrastructure as Code を実現するOSSです。
開発元は、カリフォルニア州サンフランシスコを拠点とするHashiCorp社です。
言語は、HashiCorp社特有のHCL (Hashicorp Configuration Language)というJSON形式と互換性がある言語を利用します。非常に可読性が高く、殆どコーディング経験のない私でもすんなり使う事ができました。
対応プラットフォームは、AWS・GCP・Azureなどに対応しており、マルチプラットフォームで構築する人にとって、Terraformはもってこいのツールではないかと感じています。
また、利用できるOSは、Windowsをはじめ macOS, Linux等に対応しており、職場環境など選ばず使用できることもTerraformの利点です。
2.Terraform vs CloudFormation
普段AWSを使っている人間としては、ここが気になるところ。
Infrastructure as Codeとは言えど、CloudFormationとは何が違うのかと。
下の表は、あくまでも投稿者の主観となります。気になる方はぜひ実際にCloudFormationとTerraformを使ってみて、実感していただければ嬉しいです。
Terraform | CloudFormation | |
サポート | OSSである為、情報は多い。 | AWSのサービスで、サポートをしっかり受けられる。 |
学習
コスト |
最低限のコマンドで構築可能な為、学習コストは低い。 | aws cloudformationコマンドもあるが、オプションが多いので、やや学習コストは高い。 |
プラットフォーム | AWS、Azure、GCPなど多くのプラットフォームに対応。 | AWS専用のサービス
他のAWSサービスと連携がスムーズ。 |
セキュリティ | それぞれのローカル環境で実行することが基本のためセキュリティを意識する必要がある。
しかしながら、EC2でTerraformの環境を構築する場合IAMRoleでクレデンシャル情報の安全な取り扱いが可能。 |
AWSで閉じられるのでセキュリティで考えることが少ない。 |
開発 | 一部のリソースの変更が簡単にできるため、少しずつ始められるため、アジャイル型開発が可能。
ただ、アプリ開発やリソースの内部の作り込みには不向き。 |
一度stack化すると削除⇒作成という流れを踏まなければいけないため、最初の設計が大事。 |
3.Terraformの環境構築
・AWS CLIが使用可能であること。
・インターネットにアクセスできること。
→今回の記事では省きますが、事前にVPC・サブネットの設定の確認をお願いします。
<流れ>※EC2で環境構築をする場合。
・IAMRoleを作成。
・AWS環境にAmazonLinux2のEC2を作成。
・Terraform をインストール。 以上!!簡単ですね。
下記から具体的な手順にを記載しますが、そんなの必要ないという方は「4.EC2の作成/変更/削除」の手前まで読み飛ばしてください。
まず、「IAMRole」の作成です。
1.AWSでIAMのページにアクセスして、ロールのタブを開く。
2.「ロールの作成」をクリック。
3.ユースケースは「EC2」を選択後、「次のステップ:アクセス権限」をクリック。
4.「AmazonEC2FullAccess」を選択して、「次のステップ:タグ」をクリック。
今回はEC2の作成、変更、削除の作業だけなので「AmazonEC2FullAccess」を利用します。
アクセス権限についてはTerraformでどのAWSサービスを利用するか確認の上、適切なものを選択ください。
5.タグは特に記入せず、「次のステップ:確認」をクリック。
6.ロール名を記入して、「次のステップ:タグ」をクリック。
なお今回のロール名は「ROL-Terraform」にしてあります。
以上で、ロールの作成は完了です。
次は、EC2を作成します。
1.EC2のサービス画面に移動後、「インスタンスを起動」-「インスタンスを起動」をクリック。
2.AMIを選択。
今回ははじめからAWS CLIの入っているAmazonLinux2を選択しました。
2.インスタンスタイプを選択して、「次のステップ:インスタンスの詳細の設定」をクリック。
今回は特に要件はないので「t2.micro」を選択しました。
3.適当なVPC・サブネット・パブリックIPを選択してをクリック。先ほど作った「IAMロール」を指定したら、「次のステップ:ストレージの追加」
今回は特に要件はないので他の部分はデフォルトのままにしました。
4.デフォルトで問題ないので、そのまま「次のステップ:タグの追加」をクリック。
5.デフォルトで問題ないので、そのまま「次のステップ:タグの追加」をクリック。
Nameタグくらい入れておいてもいいかもしれません。
6.適当な「セキュリティグループ」を選択し、「確認と作成」をクリック。
下のような図だと世界のどこからでも通信できてしまいますので、必ずIPを絞り込むようにお願いします。
7.「起動」をクリック後、キーペアを選択。最後に「インスタンスの作成」をクリック。
以上で、EC2の作成は完了です。
この後は、OSにログインした状態での作業となります。
最後は、Terraformのインストールします。
1.Terraformをダウンロード
なお、バージョンについて今後更新もあるかと思いますので、サイトの方をご確認ください。
‣wget -O terraform_0.13.3_linux_amd64.zip https://releases.hashicorp.com/terraform/0.13.3/terraform_0.13.3_linux_amd64.zip
2.ダウンロードしたファイルの解凍
‣unzip terraform_0.13.3_linux_amd64.zip
3.ファイルのパスを通す。
‣sudo mv terraform /usr/bin
下記実行画面です。
以上でTerraformの環境作成は完了です!
後日、EC2作成方法や書くつもりですので、お時間がありましたらそちらの記事も見ていただけますと幸いです。