【入門編】Puppet Boltを使ったエージェントレス構成でのアドホックなサーバー管理術 – インフラ構成管理(IaC)活用バイブル

Puppet Boltで解き放つ「エージェントレス」な自動化の深淵

こんにちは。インフラの世界へようこそ。
多くの現場で「Puppet = 常駐エージェントを全サーバーに入れるもの」という古い固定観念が、柔軟なインフラ構築の足かせになっています。

今日は、その常識を覆します。Puppet Boltを使えば、エージェントをインストールすることなく、SSHやWinRM経由で、あなたの手元のPCから直接サーバー群をオーケストレーションできるのです。

「なぜ今さらPuppetなのか?」と思われるかもしれません。答えはシンプルです。過去10年以上、世界中の高負荷環境で磨き上げられてきた「Puppetの堅牢なリソース管理能力」を、エージェントなしで、アドホック(その場限り)な作業に即座に適用できるからです。

さあ、毎日の泥臭いサーバー管理を「インフラエンジニアの嗜み」に変えていきましょう。

—

1. なぜ「エージェントレス」が最強の武器になるのか

大規模な構成管理では常駐エージェントが有利ですが、緊急時のパッチ適用や、特定の10台だけに設定を流し込みたいとき、エージェントのインストールはオーバーヘッドでしかありません。

  • 即応性: エージェントのデプロイや証明書発行を待つ必要はない。
  • 冪等性(べきとうせい): 実行するたびに結果が変わるスクリプトとは別格。Puppetのエンジンが「あるべき状態」を保証します。
  • 資産の再利用: 既存のPuppetマニフェストを「そのまま」Boltで呼び出せます。

2. 導入:まずはBoltをあなたの手元に

Boltは、あなたの管理端末(Mac/Linux/Windows)にインストールするだけです。

macOSの場合 (Homebrew)
brew install puppetlabs/puppet/puppet-bolt

インストール確認
bolt –version

これだけで準備完了。サーバー側には何も入れません。必要なのは、SSH鍵によるアクセス権限だけです。

3. Hello World: 100台のサーバーを一瞬で叩く

まずは、全サーバーのOSバージョンを確認してみましょう。`inventory.yaml`というファイルを作り、管理対象を定義します。

inventory.yaml

どのホストを管理するかを定義
nodes:

  • name: web-server-01
  • name: web-server-02

config:
transport: ssh
ssh:
user: admin
private-key: ~/.ssh/id_rsa
host-key-check: false # 初回接続の対話回避

この状態で、以下のコマンドを打ってみてください。

bolt command run ‘cat /etc/os-release | grep PRETTY_NAME’ –inventoryfile inventory.yaml

どうですか? 並列で全台にコマンドが飛び、結果が整理されて表示されたはずです。これがBoltの「アドホック実行」の基本です。

4. 裏技:既存のマニフェストを「エージェントレス」で流し込む

ここからが本題です。Boltの真骨頂は、Puppetの「型(Manifest)」を利用することにあります。例えば、nginxを確実にインストールし、設定を適用するタスクを書いてみましょう。

manifests/web_setup.pp

冪等性を担保する定義
package { ‘nginx’:
ensure => installed,
}

file { ‘/var/www/html/index.html’:
ensure => file,
content => ‘

Hello from Puppet Bolt!

‘,
mode => ‘0644’,
}

これをBolt経由で実行します。

bolt apply manifests/web_setup.pp –inventoryfile inventory.yaml

このコマンドの何が凄いのか?
1. 冪等性: 既にnginxが入っていれば、何もしません。無駄な処理を徹底的に排除します。
2. 宣言的記述: 「どうやってインストールするか(yum install…)」ではなく、「どうあるべきか(package: installed)」を記述するため、失敗が極めて少ない。
3. 並列実行: `bolt`はデフォルトで並列に処理を行うため、100台あっても数分で全サーバーが同じ状態になります。

5. 次のステップへ:現場で生き残るために

Boltを使いこなせるようになると、これまで「シェルスクリプトの塊」で運用していた作業の9割を、安全なPuppetコードに置き換えられます。

  • Task(タスク): 頻繁に行う作業(ログローテーション、特定のサービス再起動)を、Pythonやシェルスクリプトで書いてBoltから実行する。
  • Plan(プラン): 複数のタスクを組み合わせ、複雑なデプロイフロー(ロードバランサーから切り離す→デプロイ→疎通確認→戻す)を自動化する。

インフラエンジニアの仕事は、「手作業」を減らし、「設計」に時間を割くことです。Boltはそのための最も強力なツールの一つです。

まずは `inventory.yaml` を作り、怖がらずに `bolt command run` から始めてみてください。あなたのインフラ管理が、昨日とは全く違う景色に見えるはずですよ。

もし何か詰まったら、いつでも聞いてください。設計思想からトラブルシューティングまで、深いところまでお付き合いします。

タイトルとURLをコピーしました