💭
個人GitHub IaC化RTA
やること
- 個人のリポジトリを全てTerraformで管理する
- 組織も同様の手順で可能
やらないこと
- その他リソースのIaC化。慣れれば同様の手順が使えます
- github_repository_collaborator(s)やgithub_repository_rulesetなども管理できますが、今回はやりません
provider.tfの作成
terraform {
required_providers {
github = {
source = "integrations/github"
version = "~> 6.0"
}
}
}
provider "github" {}
gh auth login # GitHub CLIでの認証
terraform init
Terraform import blockを作成するスクリプト
import.sh
# Fetch the list of repository names from GitHub
repos=$(gh repo list --json name -L 200 --source -q ".[].name")
# Loop through each repository name
for repo in $repos; do
# Append the import block to the repo.tf file
echo "import {
id = \"$repo\"
to = github_repository.${repo//[-.]/_}
}
" >> repo-import.tf
done
これを実行すると、repo-import.tf
にimport blockが生成されます。
# repo-import.tfの例
import {
id = "repo1"
to = github_repository.repo1
}
import {
id = "repo2"
to = github_repository.repo2
}
リソースの生成
terraform plan -generate-config-out=repo.tf
terraform apply -auto-approve
これでrepo.tf
にリソースが生成されます。
それでは良きGitHubライフを!
Discussion