-
タグ
タグ
- セキュリティ
- 人材開発・教育
- システム開発
- アプリ開発
- モバイルアプリ
- DX
- AI
- サイバー攻撃
- サイバー犯罪
- 標的型攻撃
- 脆弱性
- 働き方改革
- 企業市民活動
- 攻撃者グループ
- JSOC
- JSOC INSIGHT
- サイバー救急センター
- サイバー救急センターレポート
- LAC Security Insight
- セキュリティ診断レポート
- サイバー・グリッド・ジャパン
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- ラックセキュリティアカデミー
- すごうで
- ランサムウェア
- ゼロトラスト
- ASM
- EDR
- SASE
- デジタルアイデンティティ
- インシデントレスポンス
- 情シス向け
- 対談
- CIS Controls
- Tech Crawling
- クラウド
- クラウドインテグレーション
- データベース
- アジャイル開発
- DevSecOps
- OWASP
- CTF
- FalconNest
- セキュリティ診断
- IoT
- EC
- サプライチェーンリスク
- スレットインテリジェンス
- テレワーク
- リモートデスクトップ
- アーキテクト
- プラス・セキュリティ人材
- 障がい者採用
- 官民学・業界連携
- カスタマーストーリー
- 白浜シンポジウム
- CODE BLUE
- 情報モラル
- クラブ活動
- 初心者向け
- 趣味
- カルチャー
- 子育て、生活
- 広報・マーケティング
- コーポレート
- ライター紹介
- IR
HashiCorp社が提供するTerraformは、AWSやAzureなどのクラウドコンピューティングの構築と管理(プロビジョニング)を自動化するツールです。TerraformはProviderと呼ばれるプラグインにより、様々なリソースを管理することができます。そしてなんと、Terraformを使えば、音楽ストリーミングサービスのSpotifyのプレイリストを作成することだってできます!
今回は、TerraformコミュニティメンバーのConrad Ludgate氏が開発したSpotify Providerを使ってプレイリストを作成するチュートリアルをもとに、この手順についてご紹介します。あなたもこの夏、Terraformを始めてみませんか?
事前に準備が必要なもの
作業に取り掛かる前に、事前に準備が必要なものは以下の通りです。なお、この記事ではSpotifyアカウントの作り方、Dockerおよびgitのインストール方法については解説しませんので、事前にダウンロードとセットアップを実行しておいてください。また、この記事ではWindows10環境で作業する場合を想定したコマンド実行例を記載しています。
Terraformのインストールは、リンク先よりご自身の環境に適したもの(32bitもしくは64bit)をダウンロードします。ダウンロードしたzipファイルから展開してできた「terraform.exe」をPATHが通っているところに配置します。Windowsであれば「C:¥Windows」に置けば良いでしょう。Terraformはシングルバイナリで提供されるので、インストールは簡単です。
ステップ1:Spotifyデベロッパーアプリの準備
まずはSpotifyデベロッパーアプリを準備します。Spotify Developer Dashboardにご自身のSpotifyアカウントでログインします。ログインしたら「CREATE AN APP」をクリックし、「App name」にアプリケーションの名称、「App description」にアプリケーションの説明を記載します。ここは適当な名称と説明で構いません。利用規約への同意を求められますので、チェックして「CREATE」をクリックします。
次に、ブラウザの上部に表示されている「EDIT SETTING」をクリックし、「Redirect URIs」フィールドに次の値を入力し「ADD」をクリックします。次のステップでローカルPC上にTerraformとSpotifyAPIとの中継サーバを起動します。なお、ここではSpotifyAPIからのリダイレクト先として許可するURIを登録しています。
http://localhost:27228/spotify_callback
画面をスクロールして「SAVE」ボタンをクリックします。これでSpotify側の設定は完了です。
ステップ2:認証サーバをコンテナで起動する
それでは、TerraformとSpotifyAPIとの中継サーバを準備していきましょう。この中継サーバはDockerコンテナとして起動します。まずはコマンドプロンプトを開き、以下のコマンドを入力します。ここではこの後起動する中継サーバに対して、「Spotifyとの中継サーバを27228ポートで起動する」ように環境変数で設定しています。
set SPOTIFY_CLIENT_REDIRECT_URI=http://localhost:27228/spotify_callback
続いて、テキストエディタを開き、「.env」ファイルを作成します。.envファイルはこの後の作業で起動するDockerコンテナの環境変数として利用されます。.envファイルには以下のようにSpotify Developer Dashboardの「ClientID」と「Client Secret」を指定します。
SPOTIFY_CLIENT_ID =Spotify Developer Dashboardの「ClientID」 SPOTIFY_CLIENT_SECRET= Spotify Developer Dashboardの「Client Secret」
.envファイルを保存したら、コマンドラインからDockerを起動します。そして、以下のコマンドをコマンドプロンプトから実行します。--env-fileの引数に、保存した.envファイルを指定します。ここではC:¥MyPlaylist¥.envに保存しています。
docker run --rm -it -p 27228:27228 --env-file C:¥MyPlaylist¥.env ghcr.io/conradludgate/spotify-auth-proxy
正常にサーバが起動すると、次の図のように「APIKey」「Token」「Auth」が表示されるはずです。「Auth」の後に表示されているURLをコピーし、ブラウザで表示します。
すると、Spotifyの認証画面にリダイレクトされます。この画面で「AGREE」をクリックした後に表示される画面で「Authorization successful」と表示されれば認証は完了です。
Dockerコンテナは起動した状態(コマンドプロンプト画面は開いた状態)で、次のステップに進みましょう。
ステップ3:TerraformのSpotify Providerと設定の準備
さて、いよいよTerraformに関する準備にとりかかります。まずはチュートリアル用に用意されているTerraformコンフィグレーションファイルをGitHubからローカルPCにコピーします。コマンドプロンプトから次のコマンド(git clone)を実行します。learn-terraform-spotifyというフォルダが出来ますので、ディレクトリを移動しておきます。
git clone https://github.com/hashicorp/learn-terraform-spotify.git cd learn-terraform-spotify
それでは少しコンフィグレーションファイルの中を見てみましょう。まずは「main.tf」ファイルを開いてみてください。拡張子「tf」はTerraformのテンプレートファイルであることを示します。テンプレートはHCL(HashiCorp Configuration Language)というHashiCorp独自の言語で記述されています。独自の言語と言ってもそれほど難しくありませんのでご心配なく。
main.tfファイルの冒頭では、TerraformがSpotify Providerを使うことが宣言されています。また、Spotify Providerが使用するAPIキーを変数で指定することがわかります。このAPIキーは後ほど「terraform.tfvars」ファイルで指定します。
次に出てくるのは、Terraformのdataブロックです。dataブロックとは外部データを参照できる仕組みです。ここではプレイリストに追加するアーティストや楽曲の検索条件を指定しています。サンプルではアーティストとしてドリー・パートン(アメリカ合衆国のシンガーソングライター、カントリー・ミュージックの第一人者)が指定されています。このままでも構いませんが、ご自身の好きなアーティストに変更しておきましょう。(筆者はイギリスのロックバンド、New Orderに変更してみました)
Terraformでは構築するサーバなどのリソースに関する情報をresourceブロックに記述します。"tracks"の項目では、作成するプレイリストを定義しています。ここでは先のdataブロックの検索条件に合致する楽曲のうち3曲をプレイリストに追加しています。
このステップの最後の手順として、Spotify Providerが使用するAPIキーを指定しておきましょう。APIキーはterraform.tfvarsファイルで指定します。Terraformではvariableという変数を定義し、外部ファイルから読み込むことができます。変数を定義したファイルは「.tfvars」の拡張子で作成します。そして、外部ファイルをterraform.tfvarsというファイル名で作成しておけば、Terraformコマンド実行時に引数で外部ファイルを指定しなくても自動的に読み込まれます。
ダウンロードしたサンプルには「terraform.tfvars.example」というファイルが付属しますので、ファイル名を「terraform.tfvars」に変更しておきます。terraform.tfvarsをエディタで開いて、「spotify_api_key = "..."」の「...」部分を、Dockerコンテナを起動したコマンドプロンプト画面に表示されている「API Key」の値で更新しておきます。
さあ、これで準備が整いました。いよいよTerraformを起動してプレイリストを作成してみましょう。
ステップ4:Terraformでプレイリストを作成!
Terraformを起動するには、コマンドプロンプトで「main.tf」ファイルがあるディレクトリに移動します。ここまでの手順とおりに実行していれば、main.tfファイルは「c:¥MyPlaylist¥learn-terraform-spotify」ディレクトリにあるはずです。準備が出来たら、次のコマンドをコマンドプロンプトから実行してみましょう。
terraform init
「terraform init」コマンドはTerraformのワークスペースを初期化するコマンドです。ここで.tfファイルで指定されているProviderのダウンロードなどが実行されます。実行結果として「Terraform has been successfully initialized!」と表示されていればOKです。
いよいよ最後のステップです。次のコマンドを実行してみましょう。
terraform apply
「terraform apply」コマンドを実行すると、.tfファイルの設定を基に実際にリソースが作成されます。通常はこのコマンドの実行によりサーバなどが作成されますが、今回はSpotifyのプレイリストが作成されます。「Do you want to perform these actions?」と表示されたら「yes」と入力します。
これでプレイリストは完成です!Spotifyアプリでログインすると、先ほど作成したプレイリストが表示されるはずです。もしくは、上図の「id=」に表示されている値を「https://open.spotify.com/playlist/」に続けてブラウザに入力してみてください。
上手くプレイリストが作成されたら、main.tfファイルを変更してterraform applyコマンドでプレイリストを再作成してみましょう。terraform applyコマンドを実行すると、「terraform.tfstate」ファイルが作成されます。これはTerraformが管理するリソースの状態が記述されたファイルです。通常はサーバの設定に関する情報になりますが、今回の例では作成したプレイリストに関する情報ということになります。
さいごに
今回は、Terraformを活用する一例として、Spotifyのプレイリストを作成する手順をご紹介しました。「Terraformは聞いたことがあるけど、まだ実際に使ったことは無い」という方は是非、この機会に実際に手を動かして作業してみてください。きっとTerraformがより身近なものに感じられるはずです。
タグ
- セキュリティ
- 人材開発・教育
- システム開発
- アプリ開発
- モバイルアプリ
- DX
- AI
- サイバー攻撃
- サイバー犯罪
- 標的型攻撃
- 脆弱性
- 働き方改革
- 企業市民活動
- 攻撃者グループ
- JSOC
- もっと見る +
- JSOC INSIGHT
- サイバー救急センター
- サイバー救急センターレポート
- LAC Security Insight
- セキュリティ診断レポート
- サイバー・グリッド・ジャパン
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- ラックセキュリティアカデミー
- すごうで
- ランサムウェア
- ゼロトラスト
- ASM
- EDR
- SASE
- デジタルアイデンティティ
- インシデントレスポンス
- 情シス向け
- 対談
- CIS Controls
- Tech Crawling
- クラウド
- クラウドインテグレーション
- データベース
- アジャイル開発
- DevSecOps
- OWASP
- CTF
- FalconNest
- セキュリティ診断
- IoT
- EC
- サプライチェーンリスク
- スレットインテリジェンス
- テレワーク
- リモートデスクトップ
- アーキテクト
- プラス・セキュリティ人材
- 障がい者採用
- 官民学・業界連携
- カスタマーストーリー
- 白浜シンポジウム
- CODE BLUE
- 情報モラル
- クラブ活動
- 初心者向け
- 趣味
- カルチャー
- 子育て、生活
- 広報・マーケティング
- コーポレート
- ライター紹介
- IR