LinuxClub サークルの運営基盤(LC-Cloud)を Terraform で管理するリポジトリです。
| サービス | 管理内容 |
|---|---|
| Authentik | メンバーアカウント・グループ・入会フロー・SSO プロバイダ |
| GitHub | Organization・Teams・Branch Protection・CODEOWNERS |
| Harbor | プロジェクト・RBAC・脆弱性スキャンポリシー |
| LC-Cloud(OpenStack) | Organization・クォータ(CPU/Memory/ディスク) |
| LC-Cloud(k8s) | Namespace・ResourceQuota・NetworkPolicy |
アプリケーションのデプロイや LC-Cloud インフラ構築自体はこのリポジトリの対象外です。
microservices-terraform/
├── terraform/
│ ├── platform/ # 🔴 管理者のみ(IdP・メンバー・クォータ・GitHub Org)
│ ├── catalog/ # 🟡 権限者が編集、誰でも PR 可(チーム・プロジェクト・請求アカウント)
│ ├── workspaces/ # 🟢 チーム・個人の自由空間(CODEOWNERS に従う)
│ └── modules/ # 🔴 管理者が管理する共通モジュール
├── documents/terraform/ # 設計ドキュメント(下記参照)
└── .github/ # Actions ワークフロー・CODEOWNERS
変更はすべて Pull Request 経由で行い、CODEOWNERS による承認ゲートを通過してから apply します。
| # | ドキュメント | 内容 |
|---|---|---|
| 01 | 概要 | 設計原則・ツール選定・管理対象一覧 |
| 02 | リポジトリ構造 | 3 層アクセスモデル・CODEOWNERS・State 管理 |
| 03 | メンバー管理 | 入会フロー・個人情報取り扱い・GitHub 連携 |
| 04 | IdP 設定 | Authentik Terraform 設定・enrollment flow・SCIM |
| 05 | プロジェクトライフサイクル | チーム・プロジェクト作成手順 |
| 06 | CI/CD | GitHub Actions plan/apply・GitHub Secrets 認証 |
| 07 | クォータ | LC-Cloud クォータティア定義 |
| 08 | 請求アカウント | 個人・チーム請求アカウント・予算管理 |
| 09 | コスト定義 | クレジット単価・CloudKitty 設定 |
| 10 | ロール・権限 | ロール定義・権限マトリクス・GitHub Teams |
| 11 | ワークスペース設定 | project-config.yaml・Tier 3 の使い方 |
| 12 | OpenStack リソース | Keystone・Nova・Neutron・Cinder 設定 |
| 13 | 運用レイヤー | 運用責任分離・エスカレーションフロー |
| 14 | Middleware API | infra-api / billing-api / k8s-api の設計・Authentik Outpost 認証・GUI からの利用方法 |
| 15 | ローカル開発 | ローカル環境構築・act による CI ローカル実行 |
| 16 | 実装フェーズ | フェーズ別構築順序・依存関係 |
| 17 | 本番構築ランブック | 本番環境ゼロからの構築手順 |
| 18 | 権限管理(RBAC) | Authentik グループ・Keystone ロール・Harbor・K8s RBAC への写像 |
目的に合わせて手順書を参照してください。
| 目的 | 手順書 |
|---|---|
| 本番環境をゼロから構築する | 17-production-runbook.md |
| ローカル開発環境を立ち上げる | 15-local-development.md |
terraform/platform/members/active/<コホート>/members_secrets.yaml.encに email・student_id・role を追記して SOPS で暗号化- PR を作成 → circle-admin または tech-lead が承認 → apply
- メンバーに招待リンクが発行される(7 日間有効)
- メンバーが招待リンクから username・display_name・パスワードを設定
- Bot が
auto-gen-members.yamlを自動更新 → 次回 apply でアカウント確定
詳細は 03-member-management.md を参照してください。
terraform/catalog/teams/_template/をコピーしてterraform/catalog/teams/<チーム名>/を作成- PR を作成 → circle-admin または lc-cloud-platform が承認 → apply
詳細は 05-project-lifecycle.md を参照してください。
GitHub Actions ワークフローを手元で実行するには act を使います。
# セットアップ(初回のみ)
cp local/.secrets.example local/.secrets # 値を入力する
cp local/.act.env.example local/.act.env
# plan ワークフローを実行
act pull_request \
-W .github/workflows/plan.yml \
--matrix stack:terraform/catalog/teams/_template
# modules-check を実行
act pull_request -W .github/workflows/modules-check.yml詳細は 15-local-development.md を参照してください。
| 用途 | ツール |
|---|---|
| IaC | Terraform |
| シークレット管理 | SOPS(age 暗号化) |
| State バックエンド | Ceph RGW(S3 互換) |
| IdP | Authentik(goauthentik/terraform-provider-authentik) |
| コンテナレジストリ | Harbor |
| CI/CD | GitHub Actions |
| CI ローカル実行 | act |
操作権限はロールによって管理されています。
| ロール | 概要 |
|---|---|
circle-admin |
役員。全操作の最終承認者 |
tech-lead |
技術最高責任者。platform 全体を管理 |
lc-cloud-infra |
LC-Cloud インフラ担当。クォータ・IdP を管理 |
lc-cloud-platform |
LC-Cloud プラットフォーム担当。GitHub Org・モジュールを管理 |
team-lead |
チームリーダー。自チームの catalog エントリを管理 |
member |
一般メンバー。workspaces 内で CODEOWNERS に従い操作可能 |
詳細は 10-roles-and-permissions.md を参照してください。