LoginSignup
2
0

More than 3 years have passed since last update.

Terraform Cloudのベータで "Remote Operation" が使えるようになったので試してみました

Posted at

はじめに

Terraform Cloudにベータではありますが、 Remote Operation という機能が追加になったようなので今朝方申し込んでみたところ、もう使えるようになった旨の連絡がHashiCorpから来たので使ってみました。

何が出来るかというと、

  • Terraformのコンフィグ( .tfとか )を管理しているVCS(GitHub)に変更をPUSHすると
  • 勝手にplanが走り、Terraform Cloud上で結果が見れる
  • で、applyもその場から出来る

というような感じ。

結論、結構便利です。

ただ課題もありますが、ドキュメント読めばなにか対応方法が書いてあるのかもしれない。

ドキュメント的にはこれに従ってやっていきます。

Step 1: On GitHub, Create a New OAuth Application

まずGitHubの Register a new OAuth application に接続します。

直接上記リンクに行けばいいのですが、一応どういうページかというと、以下の流れでたどり着けます。

右上の自分のアイコンから Settings を選ぶ

スクリーンショット 2019-08-08 9.09.10.png

サイドメニューから Developer settingsを選ぶ

スクリーンショット 2019-08-08 9.11.40.png

サイドメニューから OAuth Apps を選ぶ

スクリーンショット 2019-08-08 9.12.06.png

Register a new application を選ぶ

スクリーンショット 2019-08-08 9.12.43.png

そうすると以下の画面になります。

スクリーンショット 2019-08-08 9.14.21.png

で、それぞれの欄に以下の値を入力していきます。

自分の場合、Terraform Cloudのorganization nameは kei1 なんで、こんな感じでいいのかなと。
**Application Description** は任意に

Application callback URL は現時点では不明なので Terraformドキュメント に書かれている https://example.com/replace-this-later をそのまま入れてあります。

Field name Value
Application Name Terraform Cloud (kei1)
Homepage URL https://app.terraform.io
Application Description Test App for remote operation
Authorization callback URL https://example.com/replace-this-later

入力できたら画面下部の Register application ボタンをクリックします。

すると以下のような画面になります。

スクリーンショット 2019-08-08 9.18.50.png

黒く塗っている Client IDClient Secret は後で使います。
ここでドキュメントにはご丁寧にも アプリケーションのロゴ設定しておいてね と書かれているので設定しておきましょう。

  • こちら からアイコンをダウンロード
  • それを Upload new logo ボタン等を使ってアップロード
  • Badge background color#5C4EE5 に設定

するとこんな感じになります。

スクリーンショット 2019-08-08 9.22.33.png

で、このページは開いたままにしておき次のステップに進むようにと書かれています。
次に行きましょう。

Step 2: On Terraform Cloud, Add a VCS Provider

Terraform Cloud側での作業になりますね。

まずはログインして、上部の Settings を開き、左メニューから VCS Providers を選択。

スクリーンショット 2019-08-08 9.26.27.png

次に、 Add VCS Provider ボタンをクリックするとこうなります。

スクリーンショット 2019-08-08 9.27.43.png

ここに、GitHub側で表示されていた Client IDClient Secret を入力します。
Name フィールドは空欄にしておきました。

入力が終わったら、 Create VSC provider をクリックします。

すると以下のような画面になります。

スクリーンショット 2019-08-08 9.45.38.png

この Callback URL を次のステップで使うので画面はそのままで。

Step 3: On GitHub, Update the Callback URL

GitHub側で開いていたページに戻ります。

スクリーンショット 2019-08-08 9.48.41.png

で、 Authorization callback URL を、先程Terraform Cloud側で表示されていた Callback URL で上書し、 Update application ボタンをクリックします。

次のステップに進みます。

Step 4: On Terraform Cloud, Request Access

Terraform Cloud側に戻り、 Connect organization (名前) ボタンをクリックします。

スクリーンショット 2019-08-08 9.52.00.png

するとおなじみの以下のような画面になります。

スクリーンショット 2019-08-08 10.06.34.png

Authorize (UserName) をクリックします。

成功すると以下のようなバルーンが表示されます。

スクリーンショット 2019-08-08 10.07.28.png

で、これで一通り終了なんですが、その後にTerraformドキュメントではこう書かれています。

At this point, GitHub access for Terraform Cloud is fully configured, and you can create Terraform workspaces based on your organization's shared GitHub repositories.

ということは、workspaceを新たに作る必要がありそうですね。

Workspaceの新規作成

ということで、Terraform Cloudのトップ画面に戻って・・・

スクリーンショット 2019-08-08 10.09.41.png

New workspace ボタンをクリックします。

まずこのような画面になります。

スクリーンショット 2019-08-08 10.11.12.png

画面下部の GitHub ボタンをクリック。

するとリポジトリを選択する画面になります。
Terraformのコンフィグを管理しているリポジトリを選択しましょう。

自分の場合は一度新規に作成し直しました。

最後に Create workspace ボタンをクリックします。

ちなみに、空のリポジトリだとだめなようです。

成功すると、少しの間以下のような画面でWaitが走ります。

スクリーンショット 2019-08-08 10.17.12.png

で、しばらくすると以下のような画面に。

スクリーンショット 2019-08-08 10.18.24.png

とりあえずこれでworkspaceとしては完成しているようですね。
あとは変数設定したいような場合は、 Configure variables すればいいのでしょうし、そうじゃないなら Queue plan とかすればいいのでしょう、多分。

Queue planしてみる

ということで諸々設定して、 Queue plan してみました。
が、あるあるでしたね。

スクリーンショット 2019-08-08 10.21.32.png

リモートのlinuxなんですね、これ。
プラグインパスをMacのそれにしてしまっていたので動かないと。

そこを直してGitHubにプッシュ。

すると今度は勝手にplanが走りました!! :tada:

手動での Queue plan もできるのですが、PUSHが入ると勝手にPlanするようですね〜。
これはなかなか良い。 :smile:

スクリーンショット 2019-08-08 10.25.04.png

今度は成功。

で、画面下部に Apply pending と出てます。

スクリーンショット 2019-08-08 10.26.27.png

Confirm & Apply をクリックしてみましょう。

Apply行為に対して何かしらのコメントを残していけるようですね。

スクリーンショット 2019-08-08 10.28.14.png

で、 Confirm Plan をクリック。

するとこうなります。

スクリーンショット 2019-08-08 10.29.50.png

で、無事完了するとこうなる。

スクリーンショット 2019-08-08 10.30.23.png

おーーーー。 :tada: :tada: :tada:

これはいいですね。まだBetaではありますが、リリースされたら相当共同作業が楽になりそうです。

とはいえ、これmasterにPUSHした後動いてるのですよね

ただ、remote operationを発動するためには、masterにPUSHしないとだめなのかな。

ブランチでPUSHして、先に確認したいですよね本来は。
でOKならPRをマージするみたいなことをやりたいはず。

ということで、試しにブランチを切って、そちらでは main.tf の中身を空にしてみました。
(要は手動で全リソースを消す(≒DESTROYみたいなもん)変更を突っ込む)

でも自動でPlanは発動しませんし、そもそもブランチ指定でPlanするような方法はないようです。

で、workspaceのcreateまで戻ってみると、実は作成時に Advanced options の中にこういう項目がありました。

スクリーンショット 2019-08-08 10.36.41.png

要は デフォルトブランチで動いちゃうんで、指定があるなら書いてね ってことですよね。

ここは微妙に課題な気がしますね。
Atlantis のようなフローをするのはちょっと無理なのかな。

ちなみに利用するTerraformのバージョンとかも選択できたりしましたので、色々試す価値はありそうです。

というわけで以上 Terraform Cloud Remote Operation を試してみました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0