こんにちは、ちゃりお(@chari7311)です!
Terraformはじめました。
Terraform実行環境の構築から、AWS上にVPCを作ってみるところまでやります。
ツール紹介
Terraformとは
Hashicorp社が作成しているプロビジョニングツールです。
コードで定義することで、自動でリソースが作成されます。
AWS,Azure,GCPなど各種クラウドサービスに対応しています。
Cloud9とは
ブラウザ上で、アプリケーション開発ができるツールです。
PCに依存せず開発環境が作れるので、便利です。
AWSアカウントがあればすぐに利用できます。
持っていない場合は、AWSアカウントの作成が必要です。
なぜCloud9?
ブラウザで動作するので、家でも会社でも同じ環境を使えるのが魅力的でした。
ターミナルに直接アクセスできるので、cliでAWSリソースの操作もできて便利でした。
環境構築
Cloud9にTerraform用環境を作る
- AWSマネジメントコンソールにログインします
- サービス一覧からCloud9を選択します
- リージョンを選択する。
東京リージョンが対応していないため、シンガポールを選択します(2018/12/06現在) - 「Create environment」を選択し、新規に環境を作成します
- 「Name」は任意の名前(例: terraform_test)を設定して、「Next Step」をします
- 「Configure setting」はデフォルトのまま、「Next Step」をします
- 確認画面が表示されるので、「Create environment」を選択します
Terraformをインストールする
Cloud9のターミナルでコマンドを実行します。
ターミナルは、Windowsは「Alt + t」、Macは「Option + t」で開けます。
作業用にフォルダを作成して、作成したフォルダに移動します。
[code lang=text]
$ mkdir terraform
$ cd terraform
[/code]
ダウンロードサイトで最新のバージョンを確認し、Terraformをインストールします。
下記コマンドの「0.11.10」の部分を最新バージョンの番号に変更してください。
(2018/12/06時点では、0.11.10)
[code lang=text]
$ wget https://releases.hashicorp.com/terraform/0.11.10/terraform_0.11.10_linux_amd64.zip
[/code]
ダウンロードしたzipファイルを展開します。
[code lang=text]
$ unzip terraform_0.11.10_linux_amd64.zip
[/code]
パスを通すために、binの下に移動します。
[code lang=text]
$ sudo mv terraform /usr/bin/
[/code]
下記コマンドで、バージョンが表示されることを確認します。
[code lang=text]
$ terraform –version
[/code]
zipファイルはもう使わないので、削除しておきます。
[code lang=text]
$ rm terraform_0.11.10_linux_amd64.zip
[/code]
TerraformでAWS上にVPCを作成する
TerraformでVPCを作成します。
認証情報を「terraform.tfvars」、作成するAWSリソースを「main.tf」に書いています。
フォルダ構造
[code lang=text]
environment
┗terraform
┣.terraform #自動で作成される。プラグイン等が格納されている
┣main.tf
┣terrform.tfvars
┗terrform.tfstate #自動で作成される。リソースの状態を管理している
[/code]
VPCを作成できるユーザのアクセスキー・シークレットアクセスキーが必要になるので、事前に準備しておいくてください。
terraform.tfvarsファイルを作成する
「terraform.tfvars」として下記のファイルを作成します。
こちらのファイルには秘匿情報を書きます。
githubなどにあげないよう気を付けましょう。
「access_key」「secret_key」には、ユーザのそれぞれのキーを使ってください。
東京リージョンにVPCを作成するため、「region」は「ap-northeast-1」になっています。
terraform.tfvars
VPCの作成のため、main.tfファイルを作成する
tfvarsの方で設定した、キーを使用してAWSリソースを操作します。
VPCを定義しています。
main.tf
「provider」ブロックは、使用するプロパイダを設定します。
今回は「aws」を指定していますが、AzureやGCPも指定できます。
「resource」ブロックは、リソースを定義します。
公式ドキュメントで、パラメータを確認しながら設定していきます。
terraformコマンドを実行する
コマンドを実行して、定義したリソースを作成してみます。
コマンドは、tfファイルがあるディレクトリで実行してください。
AWS用のプラグインのダウンロード等を行います。
tfファイルを追加した際は、都度打つようにしましょう。
[code lang=text]
$ terraform init
[/code]
ドライランです。
実行する前に、作成されるリソースを確認できます。
[code lang=text]
$ terraform plan
[/code]
リソースを作成します。
[code lang=text]
$ terraform apply
[/code]
作成されたリソースを確認します。
後片付け
リソースを削除する際は、「terraform destroy」を使用します。
[code lang=text]
$ terraform destroy
[/code]
まとめ
TerraformでVPCの作成までやってみました。
初めて触ったのですが、公式ドキュメントやQiitaに情報が多かったので、なんとかなりました。
AWSのCloudformaitnonと比較すると、ドライランが分かりやすくいいです。
リソースの個数を指定することもできるので、より効率的にかけそうです。
関連記事
[Terraform]moduleを使ってVPCを作成してみる moduleを使用するメリット
「DevOpsを支える今話題のHashiCorpツール群について」参加メモ