BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

Terraform Provider for HatenaBlog Members を使ってみました。

<この記事は Hatena-Blog-Workflows-Boilerplate によって作成されました>

こんにちは! BASE 株式会社 Pay ID 兼 BASE PRODUCT TEAM BLOG 編集局メンバー の @zan_sakurai です。

今回は、BASE PRODUCT TEAM BLOG のブログメンバーを Terraform Provider for HatenaBlog Members で管理をはじめたので、その紹介をいたします。
前回は、Hatena-Blog-Workflows-Boilerplate を使ってとある SaaS のリンクを一括置換した話について書きました。
今回も企業ではてなブログで技術ブログ等を運営されている方の一助になればと幸いです。

Terraform Provider for HatenaBlog Members

Terraform Provider for HatenaBlog Members とは、株式会社はてなさん が公式で公開されている、はてなブログのブログメンバーを Terraform で管理できる Terraform Provider です。
以下のドキュメントに詳細を記載いただいており、今回はそちらを参考にし構築を行いました。

Terraform Provider for HatenaBlog Members でのブログメンバーの管理

これまで、BASE PRODUCT TEAM BLOG でのブログメンバーの管理は、BASE PRODUCT TEAM BLOG 編集局に依頼を行って、手動でブログメンバーの追加・削除を行っていました。
有り難いことに、ブログを執筆したいと言ってくれる方々も増えてきておりまして、それと同時に編集局のブログメンバーの管理の負担が徐々に大きくなってしまうことが予想できました。
そこでブログメンバーの管理を簡略化するために、Terraform Provider for HatenaBlog Members を導入に至りました。

基本的には前述のドキュメントを参考にしながら構築すれば特にハマるところはなく、スムーズに導入することができるかと思います。
弊社の場合、ブログメンバーもそこそこ多く? resource... を都度記述して追加するのも面倒に思えましたので、
以下のように、メンバーのリストを変数として管理し、そのリストを使って、メンバーを追加・削除するようにしています。

variable "members" {
  description = "List of members to manage"
  type = list(object({
    username = string
    role     = string
  }))
}
members = [
  # This is an example of the structure of the members variable.
  # You can add or remove members as needed.
  # {
  #   username = "your_hatena_id" # The Hatena ID of the blog member.
  #   role     = "editor" # Role of the blog member. Role must be one of 'admin'(管理者), 'editor'(編集者), or 'contributor'(寄稿者). Basically, Please set the 'editor'(編集者).
  # },
  {
    username = "your_hatena_id"
    role     = "editor"
  },

また、Github 上での管理を行っていますので、
申請(Pull Request) -> 承認(Approve) -> 反映(terraform plan/apply) といった流れでメンバーの追加・削除を行うことができますので、変更履歴も残り、誰がどのような変更を行ったかも把握しやすくなりました。
承認(Approve) に関しては、CODEOWNERS を設定して、マージ前に必ずレビューを強制するようにして、承認プロセスを表現しています。(CODEOWNERS のメンバーは、編集局のメンバーを設定しています。)

さいごに(と余談)

今回は弊社での Terraform Provider for HatenaBlog Members の利用例を取り上げてみました。
企業ではてなブログで技術ブログ等を運営されている方にはぜひ一度お試しいただきたいです!!!

余談ですが、今回の Terraform Provider for HatenaBlog Members のようにコードでのメンバー管理をするよく目にすることが増えてきたように思います。
このようなパターンは Teams as Code などと呼ばれるそうですね。
GitHub Provider など他にもあるので、いつか検証してみた記事を書くかもしれません。

明日は、@ikechen さんの記事です。お楽しみに!!!

また、弊社では仲間大募集中です!
open.talentio.com