Skip to content

Instantly share code, notes, and snippets.

@ruhenheim
Last active June 21, 2019 04:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ruhenheim/316b080f4d25ac68a1fdb176f0dcdb15 to your computer and use it in GitHub Desktop.
Save ruhenheim/316b080f4d25ac68a1fdb176f0dcdb15 to your computer and use it in GitHub Desktop.
terraform 0.12 を使って はじめる ~ AWS Infrastructure as a Code

Terraform

Getting Started - AWS [using v0.12 or above]

terraform バイナリコマンドファイルをダウンロードし、PATHに追加

$ wget https://releases.hashicorp.com/terraform/0.12.2/terraform_0.12.2_linux_amd64.zip
$ unzip terraform_0.12.2_linux_amd64.zip
$ mkdir -p ~/.local/bin
$ mv terraform ~/.local/bin/

aws cloud9環境(以下c9)は、初期状態時点より ~/.local/bin にPATHが通っていて、 ec2-userユーザ専用コマンドとしてコマンド登録してても実害なさそう。(問題あれば、PR please)

ここまで出来たら、一旦別ターミナルを起動し、terraformコマンドが問題なく実行できるかチェックします。

ec2-user:~/environment $ terraform --version
Terraform v0.12.2

このようにterraformバージョン情報が出力されればクリアです。

試しにEC2インスタンス(仮想サーバ)を立ててみる、そして消す

c9には最初からaws-cliに必要な機密情報が保存されています。

$ ~/.aws/credentials

この機密情報は、消したり他者に漏洩させることなく、そのまま活用します。

以下の ec2-sample.tf ファイルを ~/environment フォルダ直下に作ります。

$ cd ~/environment
$ nano ec2-sample.tf

ファイルには、JSON形式で以下のように記述してみます。

provider "aws" {
  profile    = "default"
  region     = "ap-northeast-1"
}

resource "aws_instance" "ubuntu_18_04_tls" {
  ami           = "ami-032cf5e284518543d"
  instance_type = "t2.micro"
}

作成できたら、tfファイルがある 現在位置にて terraformによる操作を行っていく感じになります。

$ terraform init
$ terraform apply
$ terraform show

init でproviderごとのプラグインがインストールされ、環境構築のための terraform 実行環境が整う感じです。
apply で実際AWSサービス(今回はEC2インスタンス)の「リソース」を確保(=起動)する動作が始まります。
show でその「リソース」の状態を詳細に把握できる、という具合です。

$ terraform destroy

destroy で「リソース」を削除できます。
注意する点は、 apply destroy は「リソースの起動・削除」を行うものですので、
「実行しますか?」と確認を促されますから、 yes とタイプ・実行してください。
( yes 応答しない場合、処理がキャンセルされます )
一旦操作しておきます。

https://learn.hashicorp.com/terraform/getting-started/build

このページをみつつ確認いただければ、もっと詳しく解説されてますので、是非。
というか、hashicorpの解説資料は、github含め詳細に記載されているので、そちらを見れば十分なんですがw
日本語化した、という点で一応(笑)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment