Tech Sketch Bucket of Technical Chips by TIS Inc.

Terraformを使う!「Herokuにアプリを作成・変更・削除」

Pocket

Terraformを使う!三回目の今回はTerraformからHerokuを操作する方法をご紹介します。

Heroku はPaaSサービスと定義されています。
アプリと呼ばれる単位でサービスを利用し、その上でRuby等を動作させるプラットフォームが提供されます。


前提

  • Herokuのアカウントを取得済み
  • herokur_toolbeltインストール済み
  • Terraform導入済み

検証環境

今回Terraformを実行したサーバOSとTerraformのバージョンを明記します。

検証時期 2014/09/11
OS Ubuntu 14.04 LTS 64bit
Terraform Ver0.2.2

Herokuアプリ新規作成

TerraformからHerokuアプリを新規作成していきます。
作業はAWSの時の同じ様に

  1. 設定ファイル作成
  2. 計画
  3. 実行

の流れで行います。

設定ファイル作成

Heroku上へアプリを一つ作成するためのTerraform設定ファイルを作成します。

Terraformを使う!第一回でAWSに作成した設定ファイルの書式と同じ様に「アカウント情報」部分と「アプリ(インスタンス)情報」部分の2つで構成します。

本記事では「heroku.tf」という設定ファイルを作成し、設定を記述しています。

設定値説明

上記で作成した設定ファイルの設定値は以下の意味を持ちます。

  項目 入れるべき値
provider 定義するサービスプロバイダ名
email Herokuに登録したメールアドレス
api_key Herokuから提供されるAPIキー情報
resource "<オブジェクトタイプ>" "<任意のリソース名>"
region Herokuで利用するリージョン
name Herokuに作成するアプリケーション名
config_vars アプリケーションの設定

計画

作成した設定ファイルからHerokuアプリの作成を計画します。

計画をすると先ほど作成したheroku.tfファイルを読み込み、作成されるHerokuアプリの情報を見ることが出来ます。
設定ファイルの内容が新規作成物だった場合オブジェクト値の左側に「+」が表示されます。
この例では
"us"リージョンに配置する、
"tis-super-app01"というHerokuアプリ名の、
"baz"というアプリケーション設定をもった、
Herokuアプリの新規作成を計画しています。

実行

計画のプロセスで確認した内容で実際に実行し、Herokuアプリを作成していきます。

8行目にApply complete!とメッセージが出力されていることからインスタンス作成が成功したことがわかります。

作成したHerokuアプリを変更する

作成したHerokuアプリに対して変更を加えて行きます。
本記事ではHerokuアプリの名前を「tis-super-app01」から「tis-super-app02」へ変更します。

設定ファイル編集

ここでは10行目のHerokuアプリ名を
「name = "tis-super-app01"」から「name = "tis-super-app02"」へ変更しました。
さっそく変更を計画してみます。

計画

設定ファイルの内容が既存作成物との変更差分だった場合オブジェクト値の左側に「~」が表示されます。
17行目のname値が"tis-super-app01"から"tis-super-app02"になっています。
変更が無い部分については"computed"が表示されています。

それでは実際に変更を実行します。

実行

4行目で"tis-super-app01"から"tis-super-app02"へ値の変更が実行されています。
7行目に表示されている「Apply complete!」のメッセージから無事にname情報が変更できたことがわかります。

作成したHerokuアプリを削除する

最後に操作していたインスタンスを削除してみます。削除の操作方法はAWSの時と変わりはありません。
「.tf」ファイルには変更を加えず「-destroy」オプションで削除を計画します。

計画

-destroyオプションを付与した場合オブジェクト値の左側に「-」が表示されます。
-out=./terraform.delplan」を指定しているのはterraform.delplanというファイルを作成し、削除計画を実行時に引数として渡すためです。
端的に言えば削除計画ファイルをここで作成しています。

これで削除の計画ができました。次は実行です。

実行

実行コマンドに先ほどの削除計画ファイルを引数として指定します。
計画が実行され、5行目の「Apply complete!」の表示とともに削除が成功しました。

終わりに

terraformを使う!第一回目ではAWSの操作、第三回目の今回はHerokuの操作をご紹介しました。
今回の記事は第一回目の記事と比べて殆ど同じ作業でHerokuアプリの操作が実現出来ました。

terraformを使わない場合には

  • AWS操作にはAWS CLIコマンド、またはブラウザ操作
  • Heroku操作にはherokuコマンド、またはブラウザ操作

の様に学習コストが高く様々なPublicCloudサービスを縦断的に使えば使うほど覚えることも多くなり、管理や操作が煩雑となります。

terraformを使うことによって入力する値は違いますが同じ書式・同じ操作でサービスを利用でき、
作成した設定ファイル(Infra as Code)を管理することによって可視性が高くなるというメリットを感じます。

次回はHerokuを操作した際に感じたハマりどころをご紹介します。

エンジニア採用中!私たちと一緒に働いてみませんか?