概要
Terraformというオーケストレーションツールを使います。本当ならAWSで試したいのですが無料枠をすでに使いきっていたので今回はHerokuで。
環境
- OSX 10.10.2
- Terraform 0.3.7
インストール
バイナリパッケージを直接ダウンロードしてPATHを通します。
https://www.terraform.io/downloads.html
から自分のシステムに合ったバイナリを以下のようにダウンロードしてください。
$ wget https://dl.bintray.com/mitchellh/terraform/terraform_0.3.7_darwin_amd64.zip
解凍して移動します。~/terraform
か/usr/local/terraform
あたりがいいと思います。今回は後者で。
$ unzip terraform_0.3.7_darwin_amd64.zip -d terraform $ sudo mv terraform /usr/local/
PATHを設定します。.bash_profile
に以下を追記してください。
export PATH=$PATH:/usr/local/terraform/
反映します。
$ source .bash_profile
ちゃんと通っているか確認します。
$ terraform version Terraform v0.3.7
設定ファイル作成
heroku.tf
という以下のファイルを作成します。email
、app_key
は自分のHerokuアカウントのものを使用してください。
# Configure the Heroku provider provider "heroku" { email = "XXXXX@example.com" api_key = "XXXXXXXX-XXXX-XXXXXXXXXXXXXXXXXXXXXX" } # Configure a Heroku app resource "heroku_app" "default" { name = "terraform-test01" region = "us" stack= "cedar" config_vars { API_ENV = "development" } } # Configure a Heroku domain resource "heroku_domain" "default" { app = "terraform-test01" hostname = "www.example.com" }
設定ファイルの内容は以下の3つです。上2つは必須です。
名前 | 説明 |
---|---|
アクセス情報 | TerraformからHerokuにアクセスするための情報 |
アプリ情報 | 作成するアプリ情報。アプリケーションの名前、リージョン、利用するStack、環境変数など設定 |
ドメイン情報 | アプリに割り当てるドメイン情報。自分のドメインを取得していない人は省略で。 |
計画・実行
terraform plan
でdry-runすることができます。
$ terraform plan Refreshing Terraform state prior to plan... The Terraform execution plan has been generated and is shown below. Resources are shown in alphabetical order for quick scanning. Green resources will be created (or destroyed and then created if an existing resource exists), yellow resources are being changed in-place, and red resources will be destroyed. Note: You didn't specify an "-out" parameter to save this plan, so when "apply" is called, Terraform can't guarantee this is what will execute. + heroku_app.default all_config_vars.#: "" => "<computed>" config_vars.#: "" => "1" config_vars.0.#: "" => "1" config_vars.0.API_ENV: "" => "development" git_url: "" => "<computed>" heroku_hostname: "" => "<computed>" name: "" => "terraform-test01" region: "" => "us" stack: "" => "cedar" web_url: "" => "<computed>" + heroku_domain.default app: "" => "terraform-test01" cname: "" => "<computed>" hostname: "" => "www.example.com"
問題なさそうなので実行します。
$ terraform apply
以下のように新しいアプリが作成されました。
※ドメインは特に指定せずに実行しました。
実際に作ったアプリにアクセスしてみます。
http://terraform-test01.herokuapp.com/
まだ中身がないのでHerokuのTopですね。お疲れ様でした。