Puppetの概要
Puppet(パペット)は、OS設定やアプリケーションの構築を自動化するオープンソース・ソフトウェアです。物理、仮想、クラウドといったさまざまなインフラに対して、あるべき構成(OS/ミドルウエア/アプリケーションなど)をマニフェスト(manifest)に記述しておくと、サーバの台数によらずその構成どおりにインフラを自動的にセットアップする構成管理ソフトウェアです。
サーバ構築を人手で行えばミスをする可能性があります。また、サーバ台数が多い場合は膨大な時間を費やすことになります。Puppet は、そのような作業を自動化することにより迅速な対応が可能になります。
Puppet は、2005年に Luke Kanies氏によりリリースされ、同じく 2005 年に設立された Puppet Labs 社により現在も継続して開発が行われています。Luke Kanies氏がシステム管理者として働いていた時に自分の作業を自動化することを目的に Puppet の開発を始めました。また、Luke Kanies氏は、幼少期をヒッピーコミューンで過ごしたという変わった経歴を持っています。
Puppet はリリース以降急速に普及し、現在は40000以上の企業で利用されています。また、同じく広く使われている構成管理オープンソース・ソフトウェア Chef にも影響を与えました。
Puppet は、無償のオープンソース版の他に、有償のエンタープライズ版があります。
Puppetは、クライアント・サーバ型、スタンドアロン型の二つの利用形態があり、クライアント・サーバ型の場合は Puppet Agent(クライアント) と Puppet Server(サーバ)の2種類のソフトウェアが必要です。
Puppetと同類のソフトウェア
商用ソフトウェア製品では、HP Insight Orchestration、Microsoft System Center Orchestrator 2012、OSSではChef、Ansible、Crowbarが同様の機能を提供しています。
Puppetの主な特徴
スタンドアロン型のPuppet は Ruby により記述されたアプリケーションですが、agent-server型は、Puppet ServerがClojureとJRuby、Puppet AgentがRubyで書かれています。Puppet Agentをインストールすると、スタンドアロン型のPuppetが同時にインストールされるようになっています。以前は、Puppet Serverは、Puppet Masterと言う名称で、Apache+Passengerの構成でクライアント、サーバ共にRuby MRIで記述されたアプリケーションでした。インフラ構築を行うためのスクリプトはマニフェスト(manifest)と呼ばれ、Ruby-likeなDSL(Domain Specific Language: ドメイン固有言語)で記述します。
マニフェストには対象サーバの「あるべき構成」を記述します。スタンドアロンで使用する場合は、Puppet が動作するサーバ自身に「あるべき構成」を適用しますが、クライアント・サーバ型の場合は、Puppet Serverがマニフェストを一元管理し、各ノード(サーバ)の Puppet Agent にマニフェストを配布し、各ノードはそれを適用します。
Puppet では構成管理を行う対象をリソースと呼びます。リソースには file(ファイル、ディレクイトリ、シンボリックリンク)、package(ソフトウェアパッケージ)、service(実行されるサービス)、user(システムユーザ)、group(グループ)など、さまざまなタイプが存在しています。また Puppet Forge には、5500以上もの追加リソースモジュールが公開されています。
Puppet(Puppet Agent)の動作環境
OS | テスト済みバージョン | 動作未確認 |
---|---|---|
Debian | 9, 10, 11 | |
Fedora | 32, 34(64bitパッケージのみ) | |
macOS | 10.15 Catalina, 11 Big Sur(64bitパッケージのみ) | |
Microsoft Windows | 10 Enterprise | 8, 10 |
Microsoft Windows Server | 2012R2, 2016, 2019 | 2012 |
Red Hat Enterprise Linux ※1 | 6, 7, 8, 8 Power | |
SUSE Linux Enterprise Server | 12, 15 | |
AlmaLinux | 8(x86_64) | |
Rocky Linux | 8(x86_64) | |
Ubuntu | 16.04, 18.04, 18.04 AARCH, 20.04, 20.04 AARCH |
※1) Amazon Linux v1(RHEL 6 パッケージを使用)、Amazon Linux v2(RHEL 7 パッケージを使用)も含まれます。
Puppet Serverの動作環境※2
OS | テスト済みバージョン |
---|---|
Red Hat Enterprise Linux | 7, 8 |
Debian | Debian 9 (Stretch) Debian 10 (Buster) |
Ubuntu | 16.04 (Xenial, amd64のみ) 18.04 (Bionic) 20.04 (Focal) |
SLES | 12 SP1(x86_64) |
※2)パッケージが提供されていないx86_64 Linux サーバの場合は、インストール済のJava 8 または 11 を使用してソースから実行する必要があります。
主な機能
機能 | オープンソース版 | エンタープライズ版 | |
---|---|---|---|
レポーティング | インフラの詳細をグラフィカルコンソールで可視化します。 | 〇 | |
自動コンフィグレーション | インフラのあるべき状態を定義し適用します。 | 〇※1 | 〇 |
オーケストレーション | インフラ全体の構成の管理を自動化します。 | 〇※1 | 〇 |
自動プロビジョニング | 構成管理を自動化します。 | 〇※1 | 〇 |
コード管理 | Gitなどと連携し、コード管理を行います。 | 〇※1 | 〇 |
ノード管理 | ノードの分類、ライフサイクルを管理します。 | 〇 | |
Roleベースアクセスコントロール | チームに権限を設定することで安全に作業を進められます。 | 〇 | |
サポート | サポートの有無 | コミュニティサポートのみ | 〇 |
※1一部のEnterprise向け機能は使用できません。
Puppetのライセンス
Puppet は、Apache2.0ライセンスです。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
Puppetの参考情報
Puppetのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。