最近Terraformでなんでもできるぜーひゃっはーっと調子に乗っていたんですが、GitHubでリポジトリ作ったりなんかはコンソールからポチポチでした。お恥ずかしい・・・。ということでGitHubのリポジトリ作ったりする部分をコード化していきます。
GitHub Provider
これです。
hashicorp/githubではなくてintegrations/githubになっていますが、パートナープロバイダーなので気にせず使っていきます。
パートナープロバイダーってなんだ?っていうのは以下に書かれています。
要するにHashicorpはメンテしないけどHashicorpパートナープログラムに参加している身元の割れた企業がメンテしているプロバイダーといったところでしょうか。
GitHub側の設定
GitHub ProviderはGitHub CLIやOAth/PAT、もしくはGitHub Appと接続することでリソースを操作します。今回は一番簡単に使い始められるGitHub CLIをセットアップします。
インストール
インストール手順はこちらを参考にしてください。
GitHub CLIのセットアップ
gh auth loginコマンドを実行し、GitHub CLIからGitHubを操作できるようにします。$ gh auth login ? What account do you want to log into? [Use arrows to move, type to filter] > GitHub.com GitHub Enterprise Server ? What is your preferred protocol for Git operations on this host? [Use arrows to move, type to filter] > HTTPS SSH ? Authenticate Git with your GitHub credentials? (Y/n) y ? How would you like to authenticate GitHub CLI? [Use arrows to move, type to filter] > Login with a web browser Paste an authentication token ! First copy your one-time code: AB12C-D345 Press Enter to open github.com in your browser...ここまで来たらReturnキーを押すことでブラウザが起動し、コードの入力画面に移ります。


Authorize githubボタンをポチって完了です。確認
gh repo listで自分のリポジトリ一覧が確認できたら問題なく接続できています。
Terraformコード
terraform {
required_providers {
github = {
source = "integrations/github"
version = "6.2.1"
}
}
}
provider "github" {}
resource "github_repository" "this" {
name = "example"
description = "My awesome codebase"
visibility = "private"
delete_branch_on_merge = true
auto_init = true
}
上のコードをmain.tfに保存します。terraform init、terraform applyを実行することでGitHubにリポジトリが作成されれば成功です。

おわりに
今回はリポジトリの作成を題材にしましたが、プロバイダーのドキュメントを眺めていると結構色々できそうでした。ちょっとずつGitHubの操作をIaC化していきたいと思います。
