IaC・GitOpsとは(全体像)
これまでサーバーの設定は、人が画面を見ながら手作業で行うことが多かった。これだと、手順のミスが起きたり、同じ環境をもう一度作るのが大変だったりする。
そこで登場したのがIaC(Infrastructure as Code)。インフラ(サーバー・ネットワークなど)の構成を「コード」で書いて管理する考え方だ。コードにしておけば、
- 再現性 … 同じコードから、何度でも同じ環境を作れる
- バージョン管理 … 変更の履歴が残る
- レビュー … 変更前にコードを確認できる
という利点がある。代表ツールがTerraform。
そしてGitOpsは、そのコードをGit(変更履歴を管理するしくみ)に置き、「Gitの内容こそが正しい状態」と決めて運用する手法。変更はGitに書き込み、ツールがそれを見て自動でインフラに反映する。代表ツールがArgoCD。
詳しく:IaCとGitOpsの中身
ここが心臓部。まずIaCとGitOpsを表で押さえる。
IaCとGitOps
| 用語 | 何をする | 代表ツール |
|---|---|---|
| IaC | インフラをコードで管理する | Terraform |
| GitOps | Gitを真実の源にして自動反映する | ArgoCD・Flux |
IaCは、サーバーの台数や設定などをコードに書いて管理すること。手作業をやめてコードにすることで、「同じ環境の再現」「履歴の管理」「事前のレビュー」ができるようになる。なお、IaCのツールはTerraformだけでなくAnsibleなど複数あり、「IaC=特定の1ツール」ではない。
GitOpsで一番大事なのが、「Gitを真実の源(正しい状態の唯一の置き場)にする」という考え方。
GitOpsのしくみ
| ポイント | 意味 |
|---|---|
| Gitが真実の源 | 「あるべき状態」はすべてGitに書く |
| Pull型で自動反映 | ツールがGitを見て、自動で本番をその状態に合わせる |
変更したいときは、Gitに変更を書き込む(Pull Requestで提案する)だけ。あとはツール(ArgoCDなど)が、Gitの内容と本番を見比べて、自動で本番をGitの状態に合わせてくれる。手で本番を直接いじらないのが特徴。
注意したいのが、「GitOps=ただGitを使うこと」ではないこと。本質は「Gitを正しい状態の源にして、自動で反映する」しくみ。単にソースコードをGitで保存しているだけではGitOpsとはいえない。
わかりやすく言い換えると
要するに、IaCは「インフラの作り方を“レシピ(コード)”にしておくこと」だとイメージするとラク。
つまり、レシピがあれば同じ料理を何度でも同じように作れるし(再現性)、レシピの変更履歴も残る。手で勘で作る(手作業)より、ミスが減って確実。
そしてGitOpsは、そのレシピの“正本”をGitに置き、「Gitのレシピ通りに自動で仕上げる」しくみ。料理人(人)が勝手に味を変えるのではなく、正本レシピ(Git)に合わせて自動調理する、というわけ。だから「Gitを使う」だけでなく「Gitを正しさの基準にする」のが肝。
試験のツボ
🔴 一番出る:IaCはインフラをコードで管理
①IaC=サーバーなどのインフラをコードで管理する考え方
②利点は再現性・バージョン管理・レビュー(手作業のミスが減る)
🔴 次に出る:GitOpsはGitを真実の源にして自動反映
①Gitを「正しい状態の源」にし、変更はGitに書く
②ツールが自動で本番をその状態に合わせる(ただGitを使うこと、ではない)
🟡 押さえると安定:代表ツール
IaC=Terraform(ほかにAnsibleなど)、GitOps=ArgoCD・Flux(Kubernetesで使われる)。
よくある間違い
①「IaCとは手作業でサーバーを設定することだ」→ ✗ IaCはインフラをコードで管理すること。手作業をやめて再現性や履歴を得るのが目的。
②「GitOpsとは、単にソースコードをGitで保存していることだ」→ ✗ 本質はGitを正しい状態の源にして、自動で本番に反映するしくみ。
③「IaCのツールはAnsibleだけだ」→ ✗ Terraformなど複数のツールがある。IaC=特定の1ツールではない。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(IaC)
IaC(Infrastructure as Code)に関する次の記述のうち、正しいものはどれか。
- IaCはサーバーなどのインフラをコードで管理する考え方で、同じ環境を再現でき変更履歴も残せる
- IaCは画面を見ながら手作業でサーバーを設定する方法で、コードはいっさい使わないものとされる
- IaCは紙の手順書を金庫に保管しておくことを指し、再現性や履歴の管理とは無関係なものとされる
- IaCは社員の出社時刻を記録する勤怠管理のしくみで、インフラの管理とは関係がないものとされる
解答は 1 だ、わが子よ。
IaCは、サーバーなどのインフラをコードで管理する考え方で、同じ環境を何度でも再現でき、変更履歴も残せる。手作業のミスを減らせるのぞ。
選択肢2は「手作業・コードを使わない」が誤り、選択肢3は「紙の手順書を保管」が誤り、選択肢4は「勤怠管理」が誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | インフラをコードで管理し再現性も履歴もあり正しい |
| 2 | ✗ | 手作業ではなくコードで管理する |
| 3 | ✗ | 紙の手順書の保管のことではない |
| 4 | ✗ | 勤怠管理のしくみではない |
オリジナル問題2(GitOps)
GitOpsに関する次の記述のうち、正しいものはどれか。
- GitOpsは本番のサーバーを手で直接いじることを指し、Gitはいっさい使わないものとされている
- GitOpsはソースコードをただGitで保存することだけを指し、自動反映のしくみは含まないとされる
- GitOpsはGitを正しい状態の源にして、変更をツールが自動で本番に反映するしくみのことである
- GitOpsはGitという名前のサーバー機器のことで、状態の管理や自動反映とは無関係なものとされる
解答は 3 だ。
GitOpsは、Gitを正しい状態の源(真実の源)にして、変更をツールが自動で本番に反映するしくみである。手で本番を直接いじるのではなく、Gitに書けば自動で合わせてくれるのぞ、わが子よ。
選択肢1は「手で直接いじる・Gitを使わない」が誤り、選択肢2は「ただ保存するだけ」が誤り、選択肢4は「サーバー機器」が誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 手で直接いじるのではなくGit経由で反映する |
| 2 | ✗ | 保存だけでなく自動反映のしくみが本質 |
| 3 | ✓ | Gitを真実の源にして自動反映し正しい |
| 4 | ✗ | サーバー機器の名前ではない |
オリジナル問題3(代表ツール)
IaCとGitOpsの代表ツールに関する次の記述のうち、正しいものはどれか。
- IaCの代表ツールはTerraformだが、IaCのツールはこのTerraform 1種類しか存在しないとされている
- IaCの代表ツールはTerraform、GitOpsの代表ツールはArgoCDやFluxという対応になっている
- Terraformは表計算ソフトの名前で、ArgoCDは音楽を再生するソフトの名前だとされているものだ
- IaCの代表ツールはArgoCDで、GitOpsの代表ツールはTerraformという対応になっているとされる
解答は 2 だ、わが子よ。
IaCの代表ツールはTerraform、GitOpsの代表ツールはArgoCD(やFlux)である。Kubernetesでよく使われる組み合わせぞ。
選択肢1は「Terraform 1種類しかない」が誤り(Ansibleなど複数ある)、選択肢3は「表計算・音楽再生ソフト」が誤り、選択肢4はIaCとGitOpsの対応が逆で誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | IaCツールは複数あり1種類ではない |
| 2 | ✓ | IaC=Terraform・GitOps=ArgoCDで正しい |
| 3 | ✗ | 表計算や音楽再生ソフトではない |
| 4 | ✗ | IaCとGitOpsの対応が逆 |
まとめ
押さえどころ
- 🔴 IaCはインフラをコードで管理 … 再現性・バージョン管理・レビューが利点。手作業のミスを減らせる。
- 🔴 GitOpsはGitを真実の源にして自動反映 … Gitに書けばツールが自動で本番に反映。ただGitを使うことではない。
- 🟡 代表ツール … IaC=Terraform(ほかにAnsibleなど)、GitOps=ArgoCD・Flux。
次に学ぶ
- Kubernetes(Pod・Deployment・Service) ── GitOps(ArgoCDなど)がよく使われる場。コンテナの管理とあわせて押さえると整理しやすい。
- Git・GitHub・CI/CD ── GitOpsの土台になるGitのしくみ。変更履歴の管理が自動反映を支える。
執筆: SikakuQuest編集部