この記事は、Terraformについて学び始めた人が気軽に取り組める学習法を共有するための日記的な内容です。具体的な技術的内容やSpotify Providerの使い方については、公式ドキュメントや他のリソースをご参照ください。
はじめに
最近、Terraformの開発効率を向上させるために、GitHub Actionsを使ってCI/CDの環境を構築しています。そのため、Terraformのコードを多少触る機会はあるのですが、moduleブロックを少し触る程度で、時々Terraformの仕様の理解不足によるデバッグに時間がかかることがありました。
このような状況は非常に開発効率が悪いと感じたため、Terraformの理解を深めることを目的として、個人的にGoogle Cloudにプロジェクトを作成し、そこにTerraformでリソースを追加・変更する練習をしていました。
GCPのリソース変更はあまり気乗りしなかった
ただ、上記の学習に関して、個人的に課題を感じた点がありました。その最大の理由は、単純に「楽しくない」という点です。例えば、Compute Engineを作成しても特に何かをホスティングするわけでもなく、VPC ネットワークを作成しても自分以外がアクセスすることはないので、作成してみても「だから何?」という気持ちになってしまうのです。達成感を感じられず、結果的に学習意欲が低下してしまったように思います。
さらに、気が進まなかった理由の一つとして、料金が請求される恐れがあったことも挙げられます。Google Cloudには無料枠があり、かなりの範囲で無料利用が可能です。それでも、「料金を請求されてしまうかもしれない」と少しでも思ってしまうと、どうしてもコーディングに集中できなくなります。請求があったとしても大した金額ではないとは思いますが、それでも「Google Cloudにクレジットカードを登録していて、請求されるかもしれない状態」というのは、私にとって気乗りしない十分な理由でした。
学習材料を探した
そこで、「達成感を得られる」&「コストを気にせず利用できる」という条件を満たすProviderを探すことにしました。「達成感を得られる」という条件を考えた時、普段使っているサービスをTerraformで管理してみるのが良いのではないかと思い、さまざまな選択肢を調べました。その結果、TerraformにSpotify Providerが存在することを知りました。
Spotify Providerはコミュニティによって提供されています。さらに、Providerの使い方に関するチュートリアルも公開されています。このチュートリアルを参考にして、まずSpotifyでPlaylistを作成し、次にTerraformのコードをカスタマイズしてみることにしました。
Spotify Providerを触ってみてどうだったか
結論から言うと、とても良い学びになりました。
あと、エラーと戦いながら作成したPlaylist、めっちゃ愛着沸きます。
最初は公式チュートリアルの手順通りに進め、Playlistを作成し、そこから自分の好きな曲でPlaylistを作成しました。公式チュートリアルはそこで終わりですが、さらに学びを深めるために、main.tf
からterraform
ブロックやprovider
ブロックをprovider.tf
に移動したり、data
ブロックをdata_sources.t
fに移動するなど、ファイルを分割してディレクトリ構造を整えていきました。このプロセスを通じて、各ブロックの役割やTerraformファイル間のつながりを深く理解できたと感じました。
また、terraform apply
を実行した後にSpotifyの画面を見てPlaylistが期待している状態になっているか確認するのですが、見慣れている画面なのでぱっと見で判断でき、開発サイクルが早まった実感がありました。
これは推測に過ぎませんが、既存のリソースに対して新たにTerraformを導入する場合も、似たようなフローで進めるのではないかと思いました。具体的には、最初はmain.tf
にすべてを書き出し、その後に役割ごとにファイルを分割していく形が一般的かもしれません。もちろん、初めからTerraformを導入する場合はディレクトリ構造を決めてからリソースを作成するでしょうが、後から導入する場合はまずリソースのインポート作業や構造化が必要になると考えています。
このようにして、実際に手を動かしながらTerraformの基本を学ぶことができました。Spotify Providerを使った試みは達成感も得られ、非常に満足のいく学習体験でした。
おわりに
今回のSpotify Providerを用いた学習は、Terraformを身近なテーマで取り組む良い方法だと実感しました。作成したPlaylistは実際に聴けるので、普段Spotifyやその他の音楽ストリーミングアプリを使用している人にとって、とっつきやすい学習法だと思います。
なにより、作成したPlaylistは生活の中で使用できるのがいいですよね。
今回の学習でTerraformの基本的な操作やディレクトリ構造の整理を学ぶことができ、理解が深まりました。この学びを基に、Terraform開発のCI/CDパイプライン作成を進めるとともに、他のProviderも利用してみようと思います。
GitHub Provider気になるなぁ。
リンク集
Spotify Provider ドキュメント:Spotify Provider
spotify Provider チュートリアル:Create a Spotify playlist with Terraform
Terraform チュートリアル一覧:Tutorial Library
今回作成したプレイリスト:indigo la End | My Favorite