このファイルは、このリポジトリでClaude Code (claude.ai/code)がコードを扱う際のガイダンスを提供します。
これは arch リポジトリです - 複数のクラウドプロバイダー(AWS、Cloudflare、GCP)にわたってTerraformとTFActionを使用した宣言的なインフラストラクチャー・アズ・コードの個人インフラストラクチャー管理プロジェクトです。loliceという名前の姉妹Kubernetesリポジトリをサポートするインフラストラクチャー基盤を管理しています。
aqua install- プロジェクトに必要なすべてのツールをインストールaqua list- 利用可能なすべてのツールとバージョンを一覧表示- ツールはプロジェクトルートでグローバルに管理され、
aqua/aqua.yamlファイルを通じてディレクトリごとに管理されます
- 最初に特定のterraformディレクトリに移動 (例:
cd terraform/aws/users/またはcd terraform/cloudflare/b0xp.io/k8s/) terraform init- 作業ディレクトリでterraformを初期化terraform plan- terraform変更を計画terraform apply- terraform変更を適用terraform validate- terraform設定を検証terraform fmt- terraformファイルをフォーマット
tflint- terraformファイルをリント(terraformワーキングディレクトリから実行)conftest verify --policy policy/terraform- OPAポリシーに対して検証trivy config .- terraform設定のセキュリティスキャンactionlint- GitHub Actionsワークフローをリントghalint run- GitHub Actionsワークフローリンティングcd ansible && uv run ansible-lint- Ansibleプレイブック/ロールをリント
重要: コミット前に必ず以下のlintチェックを実行してください:
- Terraformの場合:
terraform fmt && terraform validate && tflint - Ansibleの場合:
cd ansible && uv run ansible-lint - GitHub Actionsの場合:
actionlint && ghalint run - 全体的なセキュリティチェック:
trivy config .
- ローカル環境:
cd ansible/roles/[role_name] && molecule test(x86_64環境で実行) - ARM64シミュレーション:
MOLECULE_DOCKER_PLATFORM=linux/arm64 molecule test(Orange Pi Zero 3環境をエミュレート) - CIでは自動的にARM64プラットフォームが使用されます
- TFActionはGitHub Actions経由でterraform操作を自動処理
- グローバル設定には
tfaction-root.yamlを使用 - 各terraformディレクトリには特定の設定用の独自の
tfaction.yamlがあります - 適切なIAMロール引き受けによる自動化されたplan/applyワークフローをサポート
terraform/- プロバイダーごとに整理されたメインのterraform設定aws/- AWSリソース(IAM、ECR、SSM Parameter Storeなど)cloudflare/- Cloudflareリソース(DNS、トンネル、アクセスポリシー)tailscale/- Tailscaleリソース(ACL、WIF Trust Credential、DNS、subnet routes)※導入予定- 管理対象ドメイン:
b0xp.ioとboxp.tk
policy/terraform/- ガバナンス用のOpen Policy Agent (OPA)ポリシーtemplates/- 新しいコンポーネント用のTerraformモジュールテンプレートaqua/- ツール依存関係管理設定
- Terraform - Infrastructure as Code
- TFAction - GitHub Actions経由のTerraform自動化
- Aqua - ツールバージョン管理
- Open Policy Agent - ポリシー実行
- AWS - クラウドサービス(主にIAM、ECR、SSM)
- Cloudflare - DNS、トンネル、アクセス管理
- Tailscale - VPN/ゼロトラストネットワーク、Workload Identity Federation
- Renovate - 自動依存関係更新
archプロジェクトはlolice Kubernetesリポジトリが基盤とするインフラストラクチャー基盤を提供します:
archはクラウドリソース、DNS、トンネル、アクセスポリシーを定義loliceはインフラストラクチャーを使用してKubernetesクラスター上にアプリケーションをデプロイ- AWS SSM Parameter Store (arch)で管理されるシークレットは
loliceのExternal Secretsによって消費されます archで定義されたCloudflareトンネルはloliceサービスへの安全な外部アクセスを提供- Tailscale関連設定(ACL、WIF Trust Credential、DNS、subnet routes)は
archのTerraformで一元管理し、lolice側はKubernetes上のsubnet routerデプロイのみを担当 loliceプロジェクトは git@github.com:boxp/lolice.git に存在します
- terraformファイルの変更がGitHub Actionsをトリガー
- PRで
terraform planが自動実行 - 承認とマージ後、
terraform applyが自動実行 - 状態は適切なIAMロール引き受けによりS3に保存
- 検証時にOPA conftestによってポリシーが実行
- すべてのterraformプロバイダーはCI/CDで明示的にホワイトリスト化
- OPAポリシーが命名規則とセキュリティ標準を実行
- GitHub Actions用の最小権限のAWS IAMロール
- AWS SSM Parameter Store経由のシークレット管理
- Renovateによる定期的な依存関係更新
loliceクラスターのGitHub Actions CI/CDでTailscale Workload Identity Federation(WIF)を活用し、Cloudflare Service Tokenの長寿命キーを置き換える計画。Tailscale関連の全設定はarchリポジトリのTerraform(tfaction)で管理する方針。詳細は boxp/lolice PR #490 の計画ドキュメントを参照。
- 管理対象(Terraform必須): ACLポリシー、WIF Trust Credential、DNS設定、subnet routes承認
- 配置:
terraform/tailscale/lolice/配下にターゲットを構成予定 - CI/CD:
tfaction-root.yamlのtarget_groupsにtailscaleエントリを追加、.github/workflows/wc-plan.yamlのprovider whitelistにtailscale/tailscaleを追加が必要 - 責務分離:
archがTailscale設定の宣言・適用を担当、loliceはKubernetes上のsubnet router Podデプロイとauth key管理(External Secrets経由)を担当 - ロールバック: 通常はPR revert + tfaction apply、緊急時はtargeted destroy、最終手段として管理コンソール手動操作(24時間以内にTerraform追従必須)
- 常に適切な作業ディレクトリからterraformコマンドを実行
- 各terraformディレクトリは独自の状態で独立して管理
- 正しいツールバージョンを確保するために
aqua installを使用 - ポリシー検証は自動実行されますが、conftestでローカルテスト可能
- 開始点として
templates/ディレクトリのテンプレートを使用 - 既存の命名規則とディレクトリ構造に従う
- 新しいterraformプロバイダーが承認されたホワイトリストに追加されていることを確認
- PRを作成する前に
terraform planでテスト
リポジトリにはタスク実行前にプロジェクトドキュメントファイルの読み取りを必要とするCursor IDEルールが含まれています:
@docs/project-structure.md- 詳細なディレクトリ構造@docs/project-spec.md- 完全なプロジェクト仕様とワークフロー