Slide 1

Slide 1 text

© 2025 Classmethod, Inc. 2025年11⽉13⽇ ⾚池 悠 Proxmox × HCP Terraformで始める お家プライベートクラウド

Slide 2

Slide 2 text

© 2025 Classmethod, Inc. ⾃⼰紹介 2 ● 名前 ○ 赤池 悠 ( AKAIKE HARUKA ) ● 会社 ○ クラスメソッド株式会社 ■ ソリューションアーキテクト ● 好きなTerraform組み込み関数 ○ strrev ■ 与えた文字列を逆順にして返す (🤔?) ● GitHubアカウント ○ Lamaglama39 ● Xアカウント ○ @lamaglama39

Slide 3

Slide 3 text

© 2025 Classmethod, Inc. 私のTerraform歴 3 2025/02:クラスメソッドに参加 ● AWSコンサルティング業務担当 ○ 裁量が大きく、 IaCツールの選定は調整可能 ○ 私は基本的にはTerraform推し ○ 昨今の AI × Terraform の相性がよく、 効率的なインフラ設計/構築を実現 2021/02:IT業界に参加 ● 2022/03 ○ 仕事でクラウドを初めて触る ○ インフラ手動管理の現場 ○ モヤモヤした気持ちから、Terraform と運命的な出合い ● 2024/03 ○ 仕事でTerraformを使い始める ○ Terraformの素晴らしさを体感

Slide 4

Slide 4 text

© 2025 Classmethod, Inc. 私のTerraform歴 4 Terraformいつもありがとう! 😊BIG感謝😊

Slide 5

Slide 5 text

© 2025 Classmethod, Inc. 本セッションについて 5 ● 対象者 ○ Terraformを使ったことがある⼈ ○ おうちプライベートクラウドに興味がある⼈ ○ ⾃宅インフラをコードで管理したい⼈ ● ゴール ○ Proxmox + HCP Terraform の構成がふんわり理解できる ○ 明⽇から⾃分のおうちで試せるようになる

Slide 6

Slide 6 text

© 2025 Classmethod, Inc. 補⾜事項 6 ● おうち ≒ オンプレ ○ おうちと明記しているのは私の好みです、 おうちに限らずオンプレ環境全般に適⽤できます ● Proxmox ≒ その他仮想基盤 ○ Proxmoxに限らず、その他仮想基盤にも適⽤できます ○ Terraformプロバイダーがあれば同様に実現できます ■ VMware vSphere、OpenStack、Hyper-V、Nutanix、etc…etc…

Slide 7

Slide 7 text

© 2025 Classmethod, Inc. アジェンダ 7 ● 1.Proxmoxを⻑期間⼿動運⽤すると出てくる問題 ● 2.Terraformで構成管理する ● 3.HCP Terraformでリモート実⾏環境を整備する ● 4.VCS連携によるCI/CDを取り⼊れる ● 5.最後に伝えたいこと

Slide 8

Slide 8 text

© 2025 Classmethod, Inc. Proxmoxって何だろう。 8 おうちサーバーの定番仮想化基盤 (個⼈的意⾒) ● DebianベースにしたハイパーバイザーのOSS ● コンピュートリソースとして、VM とコンテナ(LXC)を作成できる ● ブラウザから操作できる Web UI ● 無料で使える(有償サポートもあり) ● 巷ではESXiの移⾏先として話題に上がる印象 ● クラスタリング対応で複数ノードを⼀元管理 https://www.proxmox.com

Slide 9

Slide 9 text

© 2025 Classmethod, Inc. Proxmoxって何だろう。 9

Slide 10

Slide 10 text

© 2025 Classmethod, Inc. Proxmoxって何だろう。 10 VMのシェル クラスター全体 各ノード ログ VMに対する操作 VMの各設定

Slide 11

Slide 11 text

© 2025 Classmethod, Inc. 11 1.Proxmoxを⻑期間⼿動運⽤すると出てくる問題

Slide 12

Slide 12 text

© 2025 Classmethod, Inc. ⼿動で⻑期間運⽤してくると出てくる様々な問題… 12 ● 構成管理の問題 ○ 「あのVMどうやって作ったっけ…?」 ■ 過去の⾃分が何をしたか思い出せない ○ ⼿順書を書くつもりが数ヶ⽉放置 ■ 気づけば実際の構成と乖離している ○ 同じ環境を作り直せない ■ 環境の再現性がない

Slide 13

Slide 13 text

© 2025 Classmethod, Inc. ⼿動で⻑期間運⽤してくると出てくる様々な問題… 13 ● 変更管理の問題 ○ 誰が‧いつ‧何を変更したか分からない ■ 過去の変更意図、変更履歴が不明… ○ テスト環境がない(本番が検証環境) ■ 「ちょっと試すだけ…」が⼤惨事に ■ もっと⼿軽に環境を構築できれば…

Slide 14

Slide 14 text

© 2025 Classmethod, Inc. ⼿動で⻑期間運⽤してくると出てくる様々な問題… 14 ● 運⽤の問題 ○ ロールバック⽅法が不明 ■ 問題が発⽣した際の復旧作業に時間がかかる ○ ⼿作業によるミス ■ コピペミスで環境が破壊される ○ 気づいたら謎サーバー/環境が増殖 ■ 検証⽤VMが放置され、リソース逼迫される

Slide 15

Slide 15 text

© 2025 Classmethod, Inc. 私の実際の環境 15 要否不明のサーバー 要否不明のサーバー 要否不明のサーバー 要否不明のサーバー 要否不明のサーバー 要否不明のサーバー

Slide 16

Slide 16 text

© 2025 Classmethod, Inc. 解決⽅法 16 HCP Terraform + VCS連携(GitHub) で解決できる!

Slide 17

Slide 17 text

© 2025 Classmethod, Inc. 17 2.Terraformで構成管理する

Slide 18

Slide 18 text

© 2025 Classmethod, Inc. プロバイダー何使うか問題。 18 Proxmox公式のTerraformプロバイダーは現時点で存在しない  ➡ そのためコミュニティのプロバイダーを利⽤する、    好きなコミュニティプロバイダーを利⽤すればOK ● Telmate/proxmox ○ VM、LXC、プール、cloud-init ディスクなどを管理可能 ● bpg/proxmox ○ VM/LXC だけでなく、 ネットワーク、ファイアウォールなども管理可能 ○ 個⼈的にはこちらがおすすめ

Slide 19

Slide 19 text

© 2025 Classmethod, Inc. ざっくりとした書き⽅ 19 ● プロバイダーの書き⽅

Slide 20

Slide 20 text

© 2025 Classmethod, Inc. ざっくりとした書き⽅ 20 Proxmoxのエンドポイント指定 Proxmox操作権限⽤のトークン指定 ● プロバイダーの書き⽅

Slide 21

Slide 21 text

© 2025 Classmethod, Inc. ざっくりとした書き⽅ 21 ● リソースの書き⽅(LXCコンテナの例)

Slide 22

Slide 22 text

© 2025 Classmethod, Inc. ざっくりとした書き⽅ 22 デプロイ先のノード指定 ● リソースの書き⽅(LXCコンテナの例)

Slide 23

Slide 23 text

© 2025 Classmethod, Inc. ローカルでTerraform管理していると出てくる問題… 23 ● ⾃宅外から実⾏できない ○ 旅先でVMを増やしたくなった時に困る ● 正確な変更履歴が残らない ○ 意図的に残さない限りは、PlanやApplyの結果が残らない

Slide 24

Slide 24 text

© 2025 Classmethod, Inc. 解決⽅法 24 HCP Terraformを導⼊しよう。

Slide 25

Slide 25 text

© 2025 Classmethod, Inc. 25 3.HCP Terraformでリモート実⾏環境を整備する

Slide 26

Slide 26 text

© 2025 Classmethod, Inc. HCP Terraformを使うまでの問題 26 ● HCP TerraformからProxmoxを直接参照できない ○ プロバイダーでProxmoxのローカルIPを指定するため

Slide 27

Slide 27 text

© 2025 Classmethod, Inc. HCP Terraformを使うまでの問題 27 ローカルIPを指定している

Slide 28

Slide 28 text

© 2025 Classmethod, Inc. HCP Terraform Agents を使おう 28 ● Terraform の実⾏をおうち環境で⾏える ○ HCP Terraform Agentをインストールしたサーバーで、 Terraformを実⾏する ● おうち側のインバウンドの⽳あけが不要 ○ Agent ➡ HCP Terraformへポーリングするため、 おうち ➡ HCP Terraformへアウトバウンドの通信ができればOK

Slide 29

Slide 29 text

© 2025 Classmethod, Inc. HCP Terraform Agents を使った構成 29

Slide 30

Slide 30 text

© 2025 Classmethod, Inc. HCP Terraform Agents を使った構成 30 HCP TerraformへApply Agent がポーリング Applyを実⾏

Slide 31

Slide 31 text

© 2025 Classmethod, Inc. HCP Terraform Agents のセットアップ 31 HCP Terraform側のOrganization設定 Organization > Settings > Agents にて agent pool を作成

Slide 32

Slide 32 text

© 2025 Classmethod, Inc. HCP Terraform Agents のセットアップ 32 おうちサーバー側の設定 ● ①Agentのインストール ○ agent pool作成時に取得したトークンを設定 ○ Install and run HCP Terraform agents | Terraform | HashiCorp Developer ● ②Agentのサービス化 ○ Systemdなどに登録してサービス化する ○ How to run tfc-agent binary as a Service with systemd

Slide 33

Slide 33 text

© 2025 Classmethod, Inc. HCP Terraform Agents のセットアップ 33 HCP Terraform側のWorkspaces設定 workspaces > Settings > General にて Execution Mode を設定

Slide 34

Slide 34 text

© 2025 Classmethod, Inc. HCP Terraform Agents のセットアップ 34 プロバイダーの設定 Agentを設定した、 Organization & Workspaces を指定

Slide 35

Slide 35 text

© 2025 Classmethod, Inc. HCP Terraformで管理していると出てくる問題… 35 ● 毎回HCP Terraformへデプロイする必要がある ○ 実⾏時のHCPへのログインがめんどくさい ● 実⾏時のソースコードとリポジトリが直接的にリンクしていない ○ Terraformの更新とリポジトリへのPushが別々 ○ リポジトリへのPushし忘れによるデグレ

Slide 36

Slide 36 text

© 2025 Classmethod, Inc. 解決⽅法 36 VCS連携を導⼊しよう。

Slide 37

Slide 37 text

© 2025 Classmethod, Inc. 37 4.VCS連携でCI/CDを取り⼊れる

Slide 38

Slide 38 text

© 2025 Classmethod, Inc. VCS連携を使おう 38 ● GitHub Actionsの設定が不要 ○ HCP TerraformのWorkSpaces側の設定で完結する ● Git push で⾃動実⾏される ○ Terraform更新とリポジトリ更新をリンクさせられる ● プルリクエストで変更をレビューできる ○ HCP TerraformでのPlan実⾏前に、 プルリクエストの段階でレビューできる

Slide 39

Slide 39 text

© 2025 Classmethod, Inc. VCS連携を使った構成 39

Slide 40

Slide 40 text

© 2025 Classmethod, Inc. VCS連携を使った構成 40 リポジトリへPush VCS連携で HCP Terraformへ⾃動反映 Agent がポーリング Applyを実⾏

Slide 41

Slide 41 text

© 2025 Classmethod, Inc. VCS連携のセットアップ 41 GitHub側 適当なリポジトリを作成して、 コードをPushしておく

Slide 42

Slide 42 text

© 2025 Classmethod, Inc. VCS連携のセットアップ 42 HCP Terraform側 Workspace作成時に 「Version Control Workflow」を指定し、リポジトリを紐付け

Slide 43

Slide 43 text

© 2025 Classmethod, Inc. VCS連携のセットアップ 43 VCS連携の設定について① Terraform実⾏ディレクトリの指定 ⾃動適⽤の設定

Slide 44

Slide 44 text

© 2025 Classmethod, Inc. VCS連携のセットアップ 44 VCS連携の設定について② ブランチベースのトリガー ● 特定のブランチにpush ● 特定のファイルの更新

Slide 45

Slide 45 text

© 2025 Classmethod, Inc. VCS連携のセットアップ 45 VCS連携の設定について③ タグベースのトリガー ● 指定した形式のタグが、 リポジトリにPush

Slide 46

Slide 46 text

© 2025 Classmethod, Inc. VCS連携のセットアップ 46 VCSに連動してPlanが⾛る例

Slide 47

Slide 47 text

© 2025 Classmethod, Inc. 47 5.最後に伝えたいこと

Slide 48

Slide 48 text

© 2025 Classmethod, Inc. 構成管理は早めに取り⼊れたほうがいい 48 ● 後回しにすると... ○ VM が増えるほど、⼿作業の管理が困難に ○ 「どうやって作ったっけ?」が思い出せなくなる ● 早めに始めるメリット ○ VM が少ないうちなら、コード化も楽 ○ 構成がシンプルなうちに IaC の習慣を作れる ○ 失敗してもやり直しやすい 「後でやろう」は、たいてい「やらない」になる😭

Slide 49

Slide 49 text

© 2025 Classmethod, Inc. ⼩さく始めて、徐々に拡張していこう 49 ● まずは1つのVMから ○ Step 1: テスト⽤ VM を1台 Terraform 化 ○ Step 2: 成功したら別の VM も追加 ○ Step 3: 変数化‧モジュール化で再利⽤ ● ⼀ヶ⽉かけた段階的な移⾏例 ○ 1週⽬: 1台の VM を Terraform で管理 ○ 2週⽬: HCP Terraform で State 管理 ○ 3週⽬: VCS 連携で⾃動化 ○ 4週⽬: その他のリソースもTerraformで管理 最初から完璧を⽬指さず、継続的に改善しよう💡

Slide 50

Slide 50 text

© 2025 Classmethod, Inc. 今⽇から始められる、お家プライベートクラウド 50 ● 必要なもの ○ Proxmoxなど何らかの仮想化基盤 ○ GitHub アカウント(無料) ○ HCP Terraform アカウント(無料枠あり) ○ やる気…! 帰宅したら、まず1台作ってみよう!🔥

Slide 51

Slide 51 text

© 2025 Classmethod, Inc.