とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど

開催予定の勉強会

読者登録と各種SNSのフォローもよろしくお願いいたします。

TerraformでGitHubをプロビジョニング

最近Terraformでなんでもできるぜーひゃっはーっと調子に乗っていたんですが、GitHubでリポジトリ作ったりなんかはコンソールからポチポチでした。お恥ずかしい・・・。ということでGitHubのリポジトリ作ったりする部分をコード化していきます。

GitHub Provider

これです。

registry.terraform.io

github.com

hashicorp/githubではなくてintegrations/githubになっていますが、パートナープロバイダーなので気にせず使っていきます。

パートナープロバイダーってなんだ?っていうのは以下に書かれています。

developer.hashicorp.com

要するにHashicorpはメンテしないけどHashicorpパートナープログラムに参加している身元の割れた企業がメンテしているプロバイダーといったところでしょうか。

GitHub側の設定

GitHub ProviderはGitHub CLIやOAth/PAT、もしくはGitHub Appと接続することでリソースを操作します。今回は一番簡単に使い始められるGitHub CLIをセットアップします。

  1. インストール

    インストール手順はこちらを参考にしてください。

  2. 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ボタンをポチって完了です。

  3. 確認

    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 initterraform applyを実行することでGitHubにリポジトリが作成されれば成功です。

おわりに

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