Browse Tag: puppet

Puppet ちょっとハマった

久しぶりにサーバ・クライアントで、Puppet 0.25.5 を別々のサーバで構築して、一通り設定したところで、クライアントから、次のコマンドで動作確認を行った。


# sudo /usr/sbin/puppetd -l console --test --verbose --noop

そうすると、次のようなエラーが発生した。

Could not retrieve catalog from remote server: certificate verify failed

「このエラーは、メッセージのとおり証明書の認証に失敗したので、遠隔のサーバからカタログを受信することができないよ」という意味。

今回は、テストだったので、サーバ側に autosign.conf を作成して、次のように自動署名するようにしておいた。

*

puppetca –list –all しても、ちゃんと自動署名されている。
さらにサーバ上で、上の動作確認のコマンドを実行すると、ちゃんと動く。
昔はまった /var/lib/puppet/ssl/ が変な状態で残っていたからもしれないと思って削除してから再度 puppet サーバを起動しても同じ現象・・・。

おかしい・・・

 

おかしいよ・・・

 

おかしい・・・

 

ふと、クライアントのシステム時刻をみてみると、サーバ側のシステム時刻と比べて過去の時間でずれていた。

クライアントのシステム時刻をサーバ側のシステム時刻とあわせたら、ちゃんと動きました。

 

ということで、上のエラーからは想像もできないことが原因でちょっとハマりました・・・。

みなさんもお気をつけください・・・。

Puppet は、現時点で 2.6.8 が安定バージョンのようで、バージョン番号が飛びまくっていて、最近分かりにくくなっているなぁという印象を受けますね。

 

Puppet Dashboard を試してみた

Puppet Dashboard  がリリースされたので、さっそく試してみました。

Puppet Dashboard とは、ノード管理とレポートツールを提供してくれる Puppet のウェブアプリケーションです。ノード情報はYAML 形式でエクスポートすることができて、ダッシュボードから外部ノードツールとして使うこともできるようです。

まず、最初にPuppet Dashboard を動作させるために、次のものが必要です。

  • ruby >= 1.8.1
  • rake >= 0.8.4
  • mysql
  • puppet
  • rubygems >= 1.3.2
  • rails >= 2.3.4

さっそくインストールしてみましょう。

$ git clone git://github.com/reductivelabs/puppet-dashboard.git

$ cd puppet-dashboard

$ rake install

rake install すると、dashboard_development というデータベースが作成されてテーブルがいくつか作成されるので、localhost に mysql が起動している必要があります。

Rails アプリケーションなので、さっそく起動します。

$ ./script/server

http://localhost:3000 にアクセスすると、次のような Puppet Dashboard トップ画面が表示されます。

ノードの例として、「sample node」が定義されています。さっそく、ユーザ登録してみます。ユーザ登録は、ユーザ名とパスワードを入力するだけのシンプルな形です。

ユーザ登録できたところで、実際のノードを追加してみます。Nodes タブをクリックして、ノードを追加します。

この他にも、ノードクラス、ノードグループ、レポート、の機能があります。

まず、レポートの機能は、現在の puppet レポートの実行結果が /var/puppet/lib/reports にある場合は、次のコマンドで Puppet Dashbaord へインポートできます。

$ rake reports:import

また、puppet レポートの実行結果が、他の場所にある場合は、次のコマンドで Puppet Dashboard へインポートすることができます。REPORT_DIR という環境変数に Puppet レポートの実行結果を格納してあるディレクトリを指定するだけです。

$ rake reports:import REPORT_DIR /path/to/your/reports

Importing 1 report from /path/to/your/reports
Importing:     100% |##########################################| Time: 00:00:00
1 of 1 report imported

試しに1件レポートデータをインポートした画面は、次のようになっています。

毎回、レポートをインポートするのが面倒なので、Puppet サーバと連携する方法も用意されています。Puppet サーバと連携するには、puppetmasterd に、次のように –reports オプションを指定するだけです。

–reports <puppet_bashboardのサーバ名>

ただし、Puppet Dashboard は、localhost:3000 で動作するようにハードコーディングされています。これを変更するには、lib/puppet/puppet_dashboard.rb を変更する必要があります。

次に Puppet Dashboard には、Puppet 互換の外部ノード情報と連携することができます。Puppet 互換の外部ノード情報は、YAML 形式で出力しますが、Puppet Dashboard に付属している bin/external_node プログラムを使います。このプログラムも、localhost:3000 でハードコーディングされているので、環境に応じて変更するとよいでしょう。

今のところ、僕が Puppet を投入している本番環境ではレポート機能をオフにして、エラーログのみチェックしていますが、比較的少ない台数で運用している場合は、Puppet Dashboard 管理画面からレポートの実行結果をチェックすることができるので、便利なツールと言えそうです。

将来的には、次の機能が実装予定とのことです。

  • LDAP と ActiveDirectory 認証
  • 管理者の権限によるアクセス制御
  • データをよりよく可視化して、情報にアクセスしやすくする
  • さらに多くのノード状態情報(オフライン状態、通信エラー、など)
  • リソースの変更を報告して、トラックキングする
  • Puppet の実行スケジューリング
  • その他のコミュニティからのリクエスト機能

まだ、Puppet Dashboard は登場したばかりなので、これから期待できるツールにもなりますね。

puppet 2009年2月開発状況

puppet の作者である Luke Kanies 氏のブログに「Summary of February 2009 Puppet Developer call」がポストされていて、puppet ユーザとするととても興味深いかったので、簡単にまとめておく。

開発の方針について

  • puppet の開発は git に移行している
  • puppet の開発は開発者ごとにリポジトリをもっていて、マージしていく作業が必要とのこと
コア vs モジュール
  • puppet のコア部分は、たくさんのコアではない機能によってはじまっている(例えば、nagios の実装など)
  • nagios のような実装は、別のプラグインリポジトリを使うアイディアがあるが、中央リポジトリで一元管理できないのでよくないと思っているとのこと
ロードマップとリリース状況
  • 0.25 系を2月にリリースしたい(現在はリリースされていない)
  • 現在の安定版である 0.24.7 の重要なバグを修正した 0.24.8 をリリースする予定
Facter の設定と Shadow
  • RailsMachines が Shadow PuppetShadow Facter をリリースした
  • Shadow Puppet は Puppet 用の Ruby DSL、Shadow Facter は Puppet 用の Ruby DSL
0.24.7 は不具合があるみたいだけれど、本番環境に導入してしまった。。。