LoginSignup
3
0

Pulumi を使って GitHub Teamsを管理する

Last updated at Posted at 2021-05-30

これはなに

Pulumi で GitHub の様々な設定をプロビジョニング出来そうだったため軽く検証してみました。

ちなみに、 pulumi/github は、 terraform-provider-githubを wrap したものになるため、必要な環境変数や設定などは、 Pulumi 側のドキュメントと Terraform 側のドキュメント両方を参照する必要があります。

pulumi のプロジェクトを作成する

pulumi の プロジェクト作成時に実行するコマンドは、pulumi new aws-typescript 等行っているサンプルが多いですが、 今回は、AWS, GAP, Azure 等は利用しません。
pulumi new [言語] ように実行することで、最低限の設定でプロジェクトを作成出来ます。

今回は、TypeScript を用いるため以下のように実行します。

pulumi new typescript

詳細については以下を確認してください

@pulumi/github を追加する

以下ページの README を参考にパッケージを追加します。

yarn add @pulumi/github

team を定義する

今回は、Project root に存在する index.ts に以下のように指定しました。

index.ts
import * as pulumi from "@pulumi/pulumi";
import * as github from "@pulumi/github";

const someTeam = new github.Team("some_team", {
  description: "Some cool team",
  privacy: "closed",
});

GITHUB_TOKEN を用意する

今回は、 GitHub Teams の変更を行う予定なので、 admin:org にチェックを入れ TOKEN を発行します。
発行した TOKEN は、pulumi up を実行するときに必要です無くさないようにしましょう。

image.png

pulumi up を実行し適用する

Pulumi には Pulumi Service を利用することで簡単に apply や revert 等を試せますが、今回は手元の Console 上から試します。

先ほど用意した GITHUB_TOKEN と、変更を適用する GITHUB_OWNER (Organization 名または、ユーザー名など) を指定し pulumi up を実行します。

※ 今回は検証のため、実行時に TOKEN を渡しましたが、コマンド実行時に TOKEN を渡すと history に残ってしまうので、適切な場所に TOKEN を指定することをおすすめします。

mziyut% GITHUB_TOKEN=YOUR_TOKEN_HERE GITHUB_OWNER=YOUR_ORG_NAME_HERE pulumi up
Previewing update (dev)

View Live: https://app.pulumi.com/mziyut/sample/dev/previews/sample-sample-sample-sample-sample

     Type                  Name       Plan
     pulumi:pulumi:Stack   pulum-dev
 +   └─ github:index:Team  some_team  create

Resources:
    + 1 to create
    1 unchanged

Do you want to perform this update? yes
Updating (dev)

View Live: https://app.pulumi.com/mziyut/sample/dev/updates/2

     Type                  Name       Status
     pulumi:pulumi:Stack   pulum-dev
 +   └─ github:index:Team  some_team  created

Resources:
    + 1 created
    1 unchanged

Duration: 7s

実行が終わったら 実際に GitHub 上に Team の作成が完了しているか確認しましょう。

image.png

無事作成できました :tada:

pulumi destroy を実行し削除する

最後に、検証用に作成した some_teampulumi destroy コマンドで削除します。
pulumi up と同様に GITHUB_TOKENGITHUB_OWNER を渡し実行します。

mziyut% GITHUB_TOKEN=YOUR_TOKEN_HERE GITHUB_OWNER=YOUR_ORG_NAME_HERE pulumi destroy
Previewing destroy (dev)

View Live: https://app.pulumi.com/mziyut/sample/dev/previews/sample-sample-sample-sample-sample

     Type                  Name       Plan
 -   pulumi:pulumi:Stack   pulum-dev  delete
 -   └─ github:index:Team  some_team  delete

Resources:
    - 2 to delete

Do you want to perform this destroy? yes
Destroying (dev)

View Live: https://app.pulumi.com/mziyut/sample/dev/updates/3

     Type                  Name       Status
 -   pulumi:pulumi:Stack   pulum-dev  deleted
 -   └─ github:index:Team  some_team  deleted

Resources:
    - 2 deleted

Duration: 2s

The resources in the stack have been deleted, but the history and configuration associated with the stack are still maintained.
If you want to remove the stack completely, run 'pulumi stack rm dev'.

実行が終わったら 実際に GitHub 上に Team の作成が完了しているか確認しましょう。

image.png

無事削除できました :tada:

最後に

今回は、 GitHub Teams の変更がどのように実施されるかを確認するために最小限の定義だけに留めましたが、
メンバーの招待やレポジトリの作成なども出来るようです。

3
0
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
3
0