【2026年最新】Puppet Master/Agent構築の深淵:実務で「死なない」インフラを構築する極意
Puppetは古い?そんなことを言うのは、Ansibleの場当たり的な実行結果に疲弊したエンジニアだけだ。真のSREにとって、Puppetは「宣言的状態の最終防衛線」である。
今回は、2026年現在においても大規模環境で「安定と冪等性」を担保し続けるPuppet Master/Agent構成の構築手順を、現場で即戦力となるプロの知見と共に伝授する。
—
1. 前提条件:インフラの「背骨」を作る
Puppetはただの構成管理ツールではない。これは「システムの期待状態を維持するエージェント」だ。
- 時刻同期: NTP/Chronyは必須。証明書の検証プロセスで時刻がズレていると、一生署名が通らない惨劇が待っている。
- 名前解決: `/etc/hosts` または強固なDNS環境。Puppet MasterのFQDNは構築前に確定させること。
- セキュリティ: 8140ポートの解放。ただし、信頼できるセグメント以外からのアクセスは即刻遮断する厳格なFW設定を。
—
2. インストール:リポジトリ管理のベストプラクティス
OSごとにバラバラのインストール手順を書くのはナンセンスだ。Puppet Labsが提供する公式リポジトリパッケージを利用し、`control-repo`で環境を抽象化する。
Puppet Labsの公式リポジトリを導入する(CentOS/RHEL系)
rpm -Uvh https://yum.puppet.com/puppet-release-el-9.noarch.rpm
Masterインストール
dnf install puppetserver -y
Agentインストール
dnf install puppet-agent -y
【プロの知見】神プラグインと開発スピードの向上
- Puppet Language Support (VS Code): これがないと開発は始まらない。構文エラーをリアルタイムで検知する。
- Puppet Lint: CIパイプラインに組み込み、「コードの臭い」を自動検知する。これを通さないコードは、私のチームではマージしない。
—
3. SSL証明書:Puppetの「心臓部」を管理する
Puppetの最大の特徴は、独自のCA(認証局)を持つことだ。
Masterでの署名承認プロセス
Agentから送られてくるCSR(証明書署名要求)を自動承認させる設定は、小規模環境では便利だが、大規模環境では「セキュリティホール」になる。
/etc/puppetlabs/puppet/puppet.conf (master側)
[master]
自動承認は原則オフ。ただしCI/CD環境なら限定的に許可する
autosign = false
実務では、`puppetserver ca sign –all` を安易に打つのではなく、特定のノードのみを署名する運用を徹底せよ。
—
4. 実用的:ベストプラクティス構成例
Puppetを扱う上で最も重要なのは、「PuppetコードをGit管理し、r10k/Code Managerでデプロイする」という設計思想だ。
Hieraによる設定の分離(YAML)
コードと設定データを分離せよ。ノードごとの特性は`hiera`で管理するのが2026年の鉄則だ。
/etc/puppetlabs/code/environments/production/data/nodes/web01.yaml
—
profile::webserver::package_name: ‘nginx’
profile::webserver::vhost_port: 80
センシティブな情報はHiera-eyamlで暗号化する(絶対のルール)
profile::webserver::api_key: ENC[PKCS7,MIIBiQYJKoZIh…]
—
5. チーム開発を加速させる「極限の知見」
1. コードの共有化ルール
- Roles and Profilesパターン: これ以外の構成は認めない。Roleで「誰か」を定義し、Profileで「何を」するかを定義する。これを守らないと、半年後に誰も触れないスパゲッティコードが完成する。
- 環境ブランチ: `production`, `staging`, `development` をGitのブランチと1対1で紐付ける。
2. 現場で役立つキーボードショートカット (VS Code)
- `Ctrl + P`: Puppetファイルの高速検索。
- `Alt + Shift + F`: 整形(Puppet-lintと連携して実行)。
- `Ctrl + Shift + T`: テストコードの実行。
3. デバッグの秘伝
Agentの実行が詰まったら、サーバー側でログをリアルタイム監視せよ。
実行中に何が起きているか、即座に特定する
tail -f /var/log/puppetlabs/puppetserver/puppetserver.log
—
最後に:SREとしての心構え
Puppetは強力だが、使いこなすには「自分が何を望んでいるのか(Desired State)」を明確に記述する論理性が必要だ。コードを書き捨てにするな。冪等性を追求し、何度実行しても同じ結果が得られる「壊れないインフラ」を、君の手で作り上げてほしい。
質問があればいつでも歓迎する。だが、まずは自分の環境で `puppet agent -t` を成功させることから始めよう。そこから全てが始まる。