LoginSignup
19
8

More than 1 year has passed since last update.

なに、TerraformでSpotifyプレイリスト作成したらTシャツもらえるって!?

Posted at

TerraformでSpotifyプレイリストを作成して、TwitterでつぶやけばHashicorp Tシャツがもらえるだって??

そもそもTerraformにSpotify用のProviderがあったことがビックリですね。

参考にしたページ

Windows想定の記事でしたので、こちらをM1 Mac用にカスタマイズして実施していきます。

環境準備

  • Macbook Air(M1)でターミナルを起動

  • Gitをインストール

$ brew install git

$ git version
git version 2.37.0
  • Terraformをインストール
$ brew install terraform

$ terraform version
Terraform v1.2.4
on darwin_arm64
  • Docker Desktopのインストール

  • VS Codeのインストール

  • Spotifyアカウント作成

ハンズオン手順

Spotify開発者アプリを作成

  • Spotify Developers Dashboardにログインし、利用許諾に同意する

  • Create an app をクリック

    • App name:tfspot など適当な名前を入れる
    • App description: tfspot など適当な説明を入れる
  • Edit settings をクリック

    • Redirect URLs: http://localhost:27228/spotify_callback を入力しAddをクリック
    • Saveをクリック

認証プロキシ用コンテナを起動

  • Macのターミナルを起動し、環境変数をセット
$ set SPOTIFY_CLIENT_REDIRECT_URI=http://localhost:27228/spotify_callback
  • ホーム配下にワークフォルダー tfspot を作成
$ cd ~
$ mkdir tfspot
  • テキストファイル .env を作成し、tfspot配下に配置
.env
SPOTIFY_CLIENT_ID=Spotify Developer Dashboardの「ClientID」
SPOTIFY_CLIENT_SECRET=Spotify Developer Dashboardの「Client Secret」
  • 認証プロキシ用コンテナを起動
$ docker run --rm -it -p 27228:27228 --env-file .env ghcr.io/conradludgate/spotify-auth-proxy
  • コンテナ起動後、ターミナルの最終行に出力される Auth URL をコピーしブラウザーで開く
    スクリーンショット 2022-07-02 19.20.39.png

  • 「同意する」をクリックし、Authorization successful と表示されればOK。

Terraformを準備

  • コンテナ実行中のターミナルはそのままにし、新規ターミナルのウィンドウを開く

  • 以下コマンドを実行し、Spotify用Terraformのチュートリアルファイルをクローンする

$ git clone https://github.com/hashicorp/learn-terraform-spotify.git
$ cd learn-terraform-spotify
  • VS Codeで上記フォルダー learn-terraform-spotify をブラウズする
    スクリーンショット 2022-07-02 19.30.25.png

  • main.tf ファイルを編集する

    • data ブロック
      • artistalbumname の値を変更して、プレイリストに追加する曲の検索条件を絞り込んでみる
    • resource ブロック
      • name を好きなプレイリスト名に変更してみる
      • tracks は検索結果の曲数より行数が少なくなるよう、適宜コメントアウト
main.tf
terraform {
  required_providers {
    spotify = {
      version = "~> 0.2.6"
      source  = "conradludgate/spotify"
    }
  }
}

provider "spotify" {
  api_key = var.spotify_api_key
}

data "spotify_search_track" "by_artist" {
  artist = "Nana Mizuki"
  album = "POP MASTER"
  name  = "UNBREAKABLE"
}

resource "spotify_playlist" "playlist" {
  name        = "お奈々"
  description = "This playlist was created by Terraform"
  public      = true

  tracks = [
    data.spotify_search_track.by_artist.tracks[0].id,
#    data.spotify_search_track.by_artist.tracks[1].id,
#    data.spotify_search_track.by_artist.tracks[2].id,
  ]
}
  • terraform.tfvars.example ファイルを修正する
    • ファイル名を terraform.tfvars に変更
    • ファイル内の ... の部分を、Dockerコンテナ起動後のターミナルに出力されている APIKeys の値で置き換える

Terraformの実行

  • 以下コマンドでワークスペースの初期化を実施
$ terraform init
(中略)
Terraform has been successfully initialized!
  • 以下コマンドでTerraformによるリソース作成を実施
$ terraform apply

Terraformユーザーにはおなじみの「Plan」結果が表示される。+の記号でどのようなリソースが作成されるのかを教えてくれています。

Terraform used the selected providers to generate the following execution plan. Resource actions
are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # spotify_playlist.playlist will be created
  + resource "spotify_playlist" "playlist" {
      + description = "This playlist was created by Terraform"
      + id          = (known after apply)
      + name        = "お奈々"
      + public      = true
      + snapshot_id = (known after apply)
      + tracks      = [
          + "3IY2GIqcVAYhaM2zn5r3vh",
        ]
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + playlist_url = (known after apply)

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: 
  • 問題なさそうなら yes と入力し実行。以下が表示されれば成功。
(前略)
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

playlist_url = "https://open.spotify.com/playlist/16bua5a1CXLQpI8vg5asJo"
  • 出力された playlist_url をブラウザーで開くと、プレイリストが作成されている!
    スクリーンショット 2022-07-02 19.59.46.png

無事にプレイリスト作成できたら

Twitterでハッシュタグ付けてつぶやきましょう。Hashicorp Tシャツがもらえるかも!?

Terraform楽しい…けど普通にプレイリスト作った方が早いなと思いましたw
大量操作や自動化など、何らかのアイディアをもって活用すればきっと有効な使い道があるはず!!

後日談(オチ)

実はこの記事、諸事情あり2ヶ月ほど寝かせていたのですが、まだTシャツが送られてこないのでキャンペーン終了している疑惑がありそうです。苦笑
なんじゃそりゃ!

(最近見かけた、Tシャツ届きましたツイートは何だったんだろう…)

19
8
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
19
8