OCI × Terraform 学習ノート¶
Always Free の範囲だけで、VCN(仮想クラウド・ネットワーク)から 3 層構成、Kubernetes(OKE)まで段階的に構築した実践記録です。
- 各フェーズで Terraform による構築・検証・削除を行い、費用は全期間 0 円
- 「どう作るか」だけでなく、「なぜその設計にしたか」と実際にハマったポイントを記録
- コードはリポジトリにあり、ページ内のコード全体はリポジトリから直接埋め込んでいます(コメントは日本語に翻訳済み)
環境¶
| 項目 | 内容 |
|---|---|
| アカウント | PAYG(従量課金)アカウント、Always Free リソースのみ使用 |
| リージョン(Region) | 大阪 ap-osaka-1(ホームリージョン) |
| コンパートメント(Compartment) | すべてのリソースを tf-lab に配置 |
| ローカル PC | Windows 11 + PowerShell 5.1 + Terraform 1.16 + VS Code |
| その他 | Cloud Shell(kubectl / Ansible / SSH はここで実行。理由は各フェーズを参照) |
学習ロードマップ¶
| Phase | テーマ | 学んだこと |
|---|---|---|
| 0 | 環境準備 | API キー、コンパートメント、予算(Budget)アラート |
| 1 | ネットワーク | VCN / インターネット・ゲートウェイ(Internet Gateway)/ ルート表(Route Table)/ セキュリティ・リスト(Security List)/ サブネット(Subnet)、state の役割、ドリフト(drift)の検出と修正 |
| 2 | Compute + Ansible | A1 VM、cloud-init と Ansible の役割分担、Cloud Shell のプライベート・ネットワーク(Private Network) |
| 3 | Module / Remote State / import | module + for_each、オブジェクト・ストレージ(Object Storage)での state 管理、手動作成リソースの取り込み |
| 4 | 3 層構成 | LB → プライベート VM ×2 → Autonomous DB、NAT ゲートウェイ(NAT Gateway)/ サービス・ゲートウェイ(Service Gateway)/ 要塞(Bastion) |
| 5a | 静的チェック | tflint / checkov、「チェック通過 ≠ 安全」 |
| 5b | リソース・マネージャ(Resource Manager) | OCI マネージドの Terraform、ドリフト検出 |
| 6 | OKE(Kubernetes) | Basic クラスタ、プライベート API エンドポイント、Service LB、自己修復 / drain の実験 |
| 7 | サイトの公開 + CI/CD | オブジェクト・ストレージの静的サイト、OCI DevOps(push → チェック → ビルド → 公開)、リソース・プリンシパル |
| 8 | サイトの自動停止 | モニタリングのアラーム / 予算 → 通知 / イベント → ファンクション。悪意のあるアクセスによる課金を防ぐ |
| 9 | セキュリティ・運用 | ボールト(マスター暗号化キー / シークレット / CMK)、インスタンス・プリンシパル、アクセス・ログ / フロー・ログ / 監査、コネクタ・ハブ、サービス・ゲートウェイだけのプライベート VM |
読み方¶
- 特定のサービスを復習したい → 上のロードマップから該当する Phase へ
- エラーが出た → まず ハマりどころ集 を確認
- 費用が心配 → 先に Always Free ガードレール を確認
- コマンドを忘れた → よく使うコマンド
前提知識
基本的なネットワーク(CIDR、ルーティング、ファイアウォール)と Linux の知識を前提としています。AWS に詳しい方向けに、各ページに対応関係(VCN ≒ VPC など)を記載しています。