Instiq
第6章 · 自動化とプログラマビリティ·v1.0.0·更新 2026/7/18·読了目安 約15分

変更要約: 初版

6.4構成管理ツール(Ansible・Terraform・Puppet/Chef)

この節の要点

設定をコードとして管理するIaC(Infrastructure as Code)の考え方、冪等性の意味、専用エージェント不要でSSH経由・プッシュ型・YAMLで書くAnsible、宣言的にインフラを構築するTerraform、そしてエージェント常駐・プル型のPuppet/Chefの位置づけを、ツール選定の判断として学びます。

手作業のCLIをスクリプトで置き換える先に、「あるべき設定状態をコードで宣言し、ツールに実現させる」という構成管理の世界があります。設定をコード化すればバージョン管理・レビュー・再現ができ、IaC(Infrastructure as Code)と呼ばれます。この節では、CCNAで問われる代表的なツール——Ansible・Terraform・Puppet・Chef——が「エージェントの要否」「プッシュかプルか」「記述言語」でどう違うかを整理し、要件に応じたツール選定の判断を身につけます。

6.4.1IaCと冪等性

  • IaC(Infrastructure as Code)=サーバやネットワークの設定を手作業ではなくコード(テキストファイル)として記述・管理する考え方。Git等でバージョン管理でき、変更のレビューや過去状態への復元、環境の再現が容易になる。
  • 冪等性(idempotency)=同じ設定コードを何度適用しても結果が同じになる性質。既に望む状態なら変更せず、差分がある部分だけを直すため、繰り返し実行しても安全。構成管理ツールが備えるべき重要な性質。
  • 宣言的 vs 手続き的=「最終的にどうあってほしいか(状態)」を書くのが宣言的、「どの手順で行うか(順序)」を書くのが手続き的。宣言的な記述は冪等性と相性が良い。

6.4.2Ansible(エージェントレス・プッシュ・YAML)

  • Ansibleエージェントレス(管理対象に専用の常駐ソフトを入れず、SSHで接続して設定を適用する)ツール。設定はプレイブックというYAMLファイルに記述し、冪等に適用される。
  • プッシュ型=管理側(コントロールノード)から対象機器へ設定を押し出す方式。対象側に何かを常駐させる必要がなく、既にSSHが有効な機器へすぐ適用できるため導入障壁が低い。

6.4.3Terraform(宣言的IaC)とPuppet/Chef

  • Terraform=インフラ(特にクラウドのリソース)を宣言的に記述して構築・管理するIaCツール。「あるべき状態」を定義し、現状との差分を計算して必要な変更だけを適用する。エージェントレスでプロバイダ経由に近い形で対象APIを操作する。
  • PuppetChef=主にエージェントを管理対象に常駐させ、プル型(各エージェントが中央のサーバへ定期的に設定を取りに行く)で構成を保つツール。PuppetはPuppet独自のDSL、ChefはRubyベースの記述を用いる。CCNA v1.1では範囲が縮小傾向だが、エージェント常駐・プル型という特徴を対比で押さえておく。
試験ポイント

「Ansible=エージェントレス・プッシュ・YAML・SSH」「Puppet/Chef=エージェント常駐・プル型」「Terraform=宣言的IaC」の対比が最頻出です。冪等性=何度適用しても同じ結果という定義と合わせて、ツールごとの「エージェント要否/プッシュかプルか/記述言語」を表で区別できるようにしましょう。

あなたはネットワークチームで、既存の数十台のCiscoスイッチへ「SNMPコミュニティとSyslog宛先を統一設定する」自動化を最短で始めたい、という状況だとします。対象機器には新しいソフトを入れたくない(変更管理のハードルが高い)という制約があるため、まずエージェントの要否が選定の分岐点になります。Puppet/Chefは各機器にエージェントを常駐させ、エージェントが中央サーバへ設定を取りに行くプル型が基本のため、この「機器に何も入れたくない」制約とは相性が悪いです。一方Ansibleエージェントレスで、既にSSHが有効なスイッチへコントロールノードから設定をプッシュするだけで始められ、設定はYAMLのプレイブックに宣言的に書けます。しかもプレイブックは冪等なので、途中で失敗して再実行しても「既に正しい機器はそのまま・未適用の機器だけ直す」動きになり、二重適用の事故を避けられます。ここで仮に要件が「新しいクラウド上に仮想ネットワークとVMを一から構築する」であれば、機器設定というよりインフラのプロビジョニングが主眼になるため、宣言的IaCのTerraformが有力候補になります。このように「既存機器へエージェントを入れずに設定を配りたいのか(Ansible)」「クラウドのインフラを宣言的に作りたいのか(Terraform)」「エージェント常駐のプル型運用に乗せたいのか(Puppet/Chef)」という要件の性質でツールを選ぶのが、暗記ではない実務の判断です。

ツールエージェントモデル主な記述/特徴
Ansibleエージェントレス(SSH)プッシュYAMLのプレイブック・冪等
Terraformエージェントレスプッシュ宣言的IaC・状態差分を適用
Puppetエージェント常駐プルPuppet独自DSL・宣言的
Chefエージェント常駐プルRubyベースのレシピ
注意

ひっかけ: 「Ansibleは管理対象に専用エージェントを常駐させる必要がある」は誤りです——Ansibleはエージェントレスで、SSH経由のプッシュ型です。エージェントを常駐させプル型で動くのはPuppetやChefの方です。また「冪等なツールは同じコードを2回適用すると設定が二重に入る」も誤り=冪等性は何度適用しても結果が同じになる性質で、二重適用による副作用を防ぎます。

IaCと冪等性、Ansible、Terraform/Puppet/Chefの図。
要件に応じてツールを選ぶ

6.4.4この節のまとめ

  • IaCは設定をコードとして管理してバージョン管理/再現を可能にし、冪等性は何度適用しても結果が同じになる性質
  • Ansibleエージェントレス・プッシュ・YAML・SSHTerraform宣言的IaC(特にクラウド構築)
  • PuppetChefエージェント常駐・プル型が特徴。要件(エージェント要否/プッシュかプルか/対象)でツールを選ぶ

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 既存の数十台のCiscoスイッチに対し、対象機器へ新たなソフトを常駐させずにSSH経由で設定を一括プッシュし、YAMLで宣言的に記述したい。この要件に最も適した構成管理ツールはどれか。

Q2. 構成管理ツールの「冪等性(idempotency)」を運用面から説明したものとして、最も適切なものはどれか。

Q3. クラウド上に仮想ネットワークとVMを一から構築するプロビジョニングを、宣言的なIaCで行いたい。CCNAで問われる代表的ツールのうち、この用途に最も一般的に用いられるものはどれか。

理解度を確認第6章「自動化とプログラマビリティ」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。