IaC・GitOps(Terraform・ArgoCD)とは?IaCとGitOpsの中身

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

IaC・GitOpsとは(全体像)

これまでサーバーの設定は、人が画面を見ながら手作業で行うことが多かった。これだと、手順のミスが起きたり、同じ環境をもう一度作るのが大変だったりする。

そこで登場したのがIaC(Infrastructure as Code)インフラ(サーバー・ネットワークなど)の構成を「コード」で書いて管理する考え方だ。コードにしておけば、

という利点がある。代表ツールがTerraform

そしてGitOpsは、そのコードをGit(変更履歴を管理するしくみ)に置き、「Gitの内容こそが正しい状態」と決めて運用する手法。変更はGitに書き込み、ツールがそれを見て自動でインフラに反映する。代表ツールがArgoCD


詳しく:IaCとGitOpsの中身

ここが心臓部。まずIaCとGitOpsを表で押さえる。

IaCとGitOps

用語何をする代表ツール
IaCインフラをコードで管理するTerraform
GitOpsGitを真実の源にして自動反映する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)

📝 オリジナル問題 1 IaC

IaC(Infrastructure as Code)に関する次の記述のうち、正しいものはどれか。

  1. IaCはサーバーなどのインフラをコードで管理する考え方で、同じ環境を再現でき変更履歴も残せる
  2. IaCは画面を見ながら手作業でサーバーを設定する方法で、コードはいっさい使わないものとされる
  3. IaCは紙の手順書を金庫に保管しておくことを指し、再現性や履歴の管理とは無関係なものとされる
  4. IaCは社員の出社時刻を記録する勤怠管理のしくみで、インフラの管理とは関係がないものとされる
テクキング
テクキング 解答・解説

解答は 1 だ、わが子よ。

IaCは、サーバーなどのインフラをコードで管理する考え方で、同じ環境を何度でも再現でき、変更履歴も残せる。手作業のミスを減らせるのぞ。

選択肢2は「手作業・コードを使わない」が誤り、選択肢3は「紙の手順書を保管」が誤り、選択肢4は「勤怠管理」が誤りである。

選択肢判定理由
1インフラをコードで管理し再現性も履歴もあり正しい
2手作業ではなくコードで管理する
3紙の手順書の保管のことではない
4勤怠管理のしくみではない

オリジナル問題2(GitOps)

📝 オリジナル問題 2 GitOps

GitOpsに関する次の記述のうち、正しいものはどれか。

  1. GitOpsは本番のサーバーを手で直接いじることを指し、Gitはいっさい使わないものとされている
  2. GitOpsはソースコードをただGitで保存することだけを指し、自動反映のしくみは含まないとされる
  3. GitOpsはGitを正しい状態の源にして、変更をツールが自動で本番に反映するしくみのことである
  4. GitOpsはGitという名前のサーバー機器のことで、状態の管理や自動反映とは無関係なものとされる
テクキング
テクキング 解答・解説

解答は 3 だ。

GitOpsは、Gitを正しい状態の源(真実の源)にして、変更をツールが自動で本番に反映するしくみである。手で本番を直接いじるのではなく、Gitに書けば自動で合わせてくれるのぞ、わが子よ。

選択肢1は「手で直接いじる・Gitを使わない」が誤り、選択肢2は「ただ保存するだけ」が誤り、選択肢4は「サーバー機器」が誤りである。

選択肢判定理由
1手で直接いじるのではなくGit経由で反映する
2保存だけでなく自動反映のしくみが本質
3Gitを真実の源にして自動反映し正しい
4サーバー機器の名前ではない

オリジナル問題3(代表ツール)

📝 オリジナル問題 3 代表ツール

IaCとGitOpsの代表ツールに関する次の記述のうち、正しいものはどれか。

  1. IaCの代表ツールはTerraformだが、IaCのツールはこのTerraform 1種類しか存在しないとされている
  2. IaCの代表ツールはTerraform、GitOpsの代表ツールはArgoCDやFluxという対応になっている
  3. Terraformは表計算ソフトの名前で、ArgoCDは音楽を再生するソフトの名前だとされているものだ
  4. IaCの代表ツールはArgoCDで、GitOpsの代表ツールはTerraformという対応になっているとされる
テクキング
テクキング 解答・解説

解答は 2 だ、わが子よ。

IaCの代表ツールはTerraform、GitOpsの代表ツールはArgoCD(やFlux)である。Kubernetesでよく使われる組み合わせぞ。

選択肢1は「Terraform 1種類しかない」が誤り(Ansibleなど複数ある)、選択肢3は「表計算・音楽再生ソフト」が誤り、選択肢4はIaCとGitOpsの対応が逆で誤りである。

選択肢判定理由
1IaCツールは複数あり1種類ではない
2IaC=Terraform・GitOps=ArgoCDで正しい
3表計算や音楽再生ソフトではない
4IaCとGitOpsの対応が逆

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る