こんにちは。インフラの現場で「手作業」という名の悪魔と戦い続け、自動化の果てにたどり着いたSREの先輩です。
今日は、IaC(Infrastructure as Code)の古典でありながら、今なお大規模エンタープライズで絶大な信頼を誇る「Puppet」の世界へ案内します。
「なぜ今さらPuppet?」と思うかもしれません。しかし、多くの構成管理ツールが「一時的な設定変更」に特化する中で、Puppetは「システムの最終状態(Desired State)を定義し、それを強制し続ける」という最強の思想を持っています。一度構築すれば、サーバーが勝手に腐ることはありません。
さあ、退屈な手作業から卒業し、インフラを「コード」で支配する快感を味わいましょう。
—
1. Puppetの哲学:なぜMaster/Agent構成なのか
Puppetは、「Master(司令塔)」が設定ファイル(Manifest)を管理し、「Agent(兵士)」がそれを読み込んで自律的に自身の状態を修正します。
- 冪等性(Idempotency): 何度実行しても結果は同じ。壊れた設定は自動で修復されます。
- 宣言的記述: 「どうやってやるか」ではなく「どういう状態であるべきか」を書く。これがプロのインフラエンジニアの流儀です。
—
2. 前提条件の確認
Puppet Server(Master)とAgentは、名前解決が命です。必ず`/etc/hosts`またはDNSで相互に名前解決できるようにしてください。
- Master: `puppet-master.local`
- Agent: `puppet-agent.local`
※ OSは最新のUbuntu 24.04 LTSを想定します。
—
3. インストール手順:司令塔と兵士を召喚する
① Puppet Server(Master)の構築
まずは司令塔を立てます。Puppet社が提供する公式リポジトリを使います。
公式リポジトリの追加
wget https://apt.puppet.com/puppet8-release-jammy.deb
sudo dpkg -i puppet8-release-jammy.deb
sudo apt update
インストール
sudo apt install puppetserver -y
メモリ設定を環境に合わせて調整(デフォルトは2GB)
/etc/default/puppetserver を編集して -Xms2g -Xmx2g を調整
② Puppet Agentの構築
次に、管理される側のAgentをインストールします。
Masterと同様にリポジトリを追加
wget https://apt.puppet.com/puppet8-release-jammy.deb
sudo dpkg -i puppet8-release-jammy.deb
sudo apt update
Agentのみインストール
sudo apt install puppet-agent -y
—
4. 証明書の発行と署名:信頼の鎖を構築する
Puppetの通信はSSLで完全に保護されています。これが「安全な自動化」の鍵です。
1. Agentで接続設定:
`/etc/puppetlabs/puppet/puppet.conf` にMasterを指定します。
[main]
server = puppet-master.local
2. 証明書要求(CSR)の送信:
sudo /opt/puppetlabs/bin/puppet agent -t
初回実行時、AgentはMasterへ証明書の発行を求めます。まだMasterが承認していないため、このコマンドは一度失敗しますが、それで正解です。
3. Masterで承認:
Master側で、誰がアクセスしてきたかを確認し、署名します。
# 要求一覧を表示
sudo /opt/puppetlabs/bin/puppetserver ca list
# 署名して承認
sudo /opt/puppetlabs/bin/puppetserver ca sign –certname puppet-agent.local
—
5. HelloWorld:最初の自動化を体験する
Puppetの真骨頂、Manifestを作成しましょう。Master側で `/etc/puppetlabs/code/environments/production/manifests/site.pp` を作成します。
site.pp
すべてのノードに対して「/tmp/hello.txt」を作成する定義
node default {
file { ‘/tmp/hello.txt’:
ensure => file,
content => “Hello, Puppet! サーバーは正しく管理されています。\n”,
owner => ‘root’,
group => ‘root’,
mode => ‘0644’,
}
}
このコードを保存したら、Agent側で再度実行します。
sudo /opt/puppetlabs/bin/puppet agent -t
結果を確認:
`cat /tmp/hello.txt` を叩いてみてください。魔法のようにファイルが生成されているはずです。さらに、このファイルを削除して再度 `puppet agent -t` を実行してください。一瞬でファイルが復活します。これが冪等性の力です。
—
最後に:エンジニアとしての心構え
Puppetを導入する最大のメリットは、「サーバーにログインして作業する」というリスクをゼロに近づけられることです。
環境構築は、一度仕組みを作ってしまえば、あとはコードを育てるだけ。面倒なことはすべてPuppetに任せて、あなたはもっとクリエイティブで楽しい、新しい技術の設計に時間を使いましょう。
何か分からないことがあれば、いつでも聞いてください。インフラの深淵で待っています。