Puppet Labsは先週、Puppet向けのコマンドラインインターフェイスとAPIをリリースした。このFacesというツールを使えば、システム管理者はPuppet向けのサブコマンドの作成や機能拡張ができる。APIはRubyから呼び出すことができ、Puppetの内部システムから利用できるオブジェクトを含んでいる。システム管理者はコマンドラインインターフェイスかAPIのどちらかを利用してPuppetのオブジェクトにアクセスし、レポートの作成、表示やカタログの収集、保存、表示、変換ができる。
Puppetの作成者でありPuppet LabsのCEOであるLuke Kanies氏によれば、“Facesで、小さなツールを作成して組み合わせることでシンプルで拡張可能なAPIに裏打ちされた強力な機能を提供するというUnixの手法を踏襲しようと心がけました。”
Puppetと同様、Facesは設計による拡張が可能なモデル駆動の手法を使っている。したがって、システム管理者はカスタムの振る舞いとアクションを構築し、他のソフトウエアを制御できる。また、認証局へアクセスしたり、証明書要求を実施したり、証明書を破棄したりできるサブコマンドを含んでいる。また、Facesにはレポートの作成、表示機能へアクセスできたり、内部のパーサーにアクセスできるサブコマンドや、ノードを閲覧し管理するサブコマンドも含まれている。サブコマンドには下記が含まれている。
- catalog
- certificate
- certificate_request
- certificate-revocation_list
- config
- facts
- file
- help
- key
- node
- parser
- report
- resource
- resource_type
- secret_agent
- downloading or reporting
- status
Puppet LabsはAmazon EC2にサーバをセットアップするためのCloud Packと呼ばれる新しいクラウドコマンドを作成するためにこのFacesを使うと発表している。FacesにはPuppet 2.7が必要なので、Puppet Enterpriseでは利用できない。まだバージョンが2.6だからだ。Puppet Labsによれば、Puppet Enterprise 2.7は2011年の夏にリリースされる予定だ。また、現在のFacesのリリースはネットワークAPIとしては動作しないが、Puppet LabsによればネットワークAPIへの対応は現在進行中だ。このリリースはPuppet Enterprise 2.7のリリースと同時に予定されている。
Puppet、Apache 2.0ライセンスで再公開
GNU Public License(GPL)は長い間批判されてきた。非GPLライセンスのライブラリをリングするのを許可していないからだ。この制約によって、サードパーティの開発者は、別のライセンス下で公開されているコードと似たようなコードを書かないでGPLプログラムの拡張するのが難しくなっている。Puppetの初期バージョンのライセンスはGPLだったが、最新のPuppetはApache 2.0で再公開された。氏は最近のブログで下記のように説明している。
Puppet Labsの目的、そして私の企業してこのプロジェクトを開始してからの目的は、Puppetがどこでも使われるようになることです。すべてのOSがPuppetを同梱し、すべてのアプライアンスがPuppetを使い、Puppetで実行できないすべてのデバイスで利用できるよになり、さらには統合されればいいと思っています。パッケージのマニュフェストの書式をPuppetの言葉で置き換えたいのです。
氏が言うには、多くの企業がGPLを便利だと感じる一方で、追加したコードを公開しなければならないのではないかと恐れている企業もある。“結局、GPLを選ぶということは、私たちのパートナーになりたがっている多くの企業は、私たちに費用を払わなければならないか、彼らのソフトウエアをオープンにしなければならないということです。”
氏はこの状況とApacheライセンスを適用した場合を比べて、下記のように書く。
...Apacheを選択すれば、誰でも利用し、埋め込んだり、Puppetを拡張したりするのに他のソフトウエアへの影響について不安がる必要はありません。... Apacheにすれば、よりしっかりとしたパートナーシップを結び、ほとんど(あったとしても)支払いをしなくて済みます。
Puppet Labsは同社の旗艦製品であるMCollectiveは既にApache 2.0で公開されているので、このライセンス変更によって製品のライセンス形態が揃うと言う。Puppetプロジェクトに貢献したい場合は、Contributor License Agreement (CLA)に同意する必要がある。CLAは著作権を譲渡しないが貢献者にコードの権利を保持することを許可し、Puppet Labsがそのコードを利用することを許可する。Puppet Labsによれば、過去の貢献者には既にCLAを案内し、サインするよう頼んでいる。
Puppetとは対照的にFacesは派生して作られたのではない公開APIで作られている。新しく作られたFacesはどのようなライセンスにも制約を受けず、無償で利用できる。