トップ «前の日記(2015-12-16) 最新 次の日記(2015-12-18)» 編集

人徳ゼロ日記


2015-12-17

_ GeppettoというPuppetのIDEを使ってみた感想(Puppet Advent Calendar 2015)

Puppet Advent Calendar 2015の17日目の記事です。

PuppetのIDEでGeppetto というソフトがあります。前から知ってはいましたが (2年前の記事)から知ってはいましたが なかなか使う機会がありませんでした。 今回、試しに使っていましたので、感想を書きます。
GeppettoはもともとCloudsmithという会社で開発していたのですが、 2013年7月にPuppetlabsが買収して、公式のツールになりました。

(脱線)Geppettoを試すきっかけ

ちょうど私の子どもが幼稚園のお遊戯会でピノキオの劇をすることになったのですが、 子どもが口ずさんでいた歌で「…ゲペットじいさん…」という歌詞があり、 「はっっ!ゲペットさんってPuppet IDEのGepettoの語源か!!」 と気づいたのでした。(ゲペットさんは、ピノキオを作ったおじいさんのことです)

Geppettoって何て読むの?げっぺっと?何語だろうか、 という程度の認識だったのですが、 人形のパペットがらみでつながっていることにうれしくなり、 ちょうどPuppet Advent Calendarで何か書きたいな、 と思っていたところだったので記事にしました。

Geppettoを1日試してみた感想

使用したのは1日だけなので、使用感に誤りがある可能性があることはご了承ください。 公式ドキュメント(執筆時の最新バージョン4.2用) に一通りの機能が記載してあるので参照してください。

メリット

  • IDEの一般的な良さを受けられる。
    • (Geppetto固有ではないが)ファイルをたくさん開いても大丈夫。 Puppetでは、site.pp、hieraのyaml、モジュールのclass、テンプレート等、 多数のファイルを開いて作業することになるが、 IDEの良さで1画面にコンパクトに収まる。

      Geppetto画面例

    • 文法認識エディタの利点。文法ハイライトできる。文法エラーが即座にわかる。 まあ、この辺りはemacsとかvimとかのような他のエディタもPuppetモードがあるようなので (使ったことはないので使い心地はわからない)、一方的な利点ではないです。


  • Geppettoならではのメリット。
    • プロジェクト内にあるclass名、パラメタ名を認識して、存在しない識別子にはエラーが出るのですぐ気づく。 個人的に、単なる文法を認識してくれるだけかな、と想像していたのですが、 存在しない識別子にエラーが出ていて、良い意味で驚きました。

      識別子エラー

    • モジュール名、クラス名、パラメタ名を選択してF3で定義にジャンプできる。 この機能も期待していなかったのですが、良かった。 他人の作ったモジュール、クラスを追っかけるときは必須です。
      他のエディタだとタグジャンプを駆使すればそれとなくできそうですが、 だいぶ工夫が必要そうですね(やっている人はどこかにいるかも)。 ただ、モジュール名とクラス名は識別子上にカーソルを乗せているだけではだめで、 識別子全体を選択していないとジャンプできませんでしたので、ちょっと面倒です。 これは私の使い方が悪い?

    • Puppet Moduleのウィザードでは、 きれいなPuppet Moduleを作るためのプラクティスが入れ込んである。 私の周りでは、Puppet Forgeに公開できるようなポータビリティの高い モジュールの作り方は全然浸透していないので、 ウィザードで優れたひな形が出るのは良いと思いました。 と言いつつ、社内の特定プロジェクト特化のモジュールばかり作っていますが…

      Moduleウィザードの結果


    • 予約語はマウスオーバーラップで説明が表示される。 ちょい微妙かな。 まあ、基本的な予約語は覚えているのでそれほどうれしいことは少ないですが、 初めてPuppet使う人にはそれなりに意味があるかと思います。

微妙な点

  • hieraを使っていると、単なるyamlとして扱われるだけで、class名、パラメタ名を認識してくれず、F3でのジャンプができない。 これは痛いです。hieraはかなり活用しているのですが、 yamlだけ見てもどこに飛ぶのかわかりづらいので、ジャンプできてほしい。 特に、hiera_include(classes)を使っていると、ノードのyamlからクラスにたどれてほしい。 yamlは単なるデータなので、Puppetの構造情報がないですし、 hieraの階層構造も認識しないといけないので技術的に簡単ではないのはわかりますが…
    このあたり、単に正規表現で検索するほうが安直だけどそれなりなレベルで実現できるのかもしれない。

  • テンプレートファイルへのF3ジャンプができない。 これも痛いです。試験面やサーバ種別ごとにテンプレートを使い分けているときなど、 たどりたい。これも単なる文字列だったり、パラメタでテンプレート名を渡したり いろんなパターンがあるので簡単ではなさそうです。

試せていない点

  • rspec-puppet等のPuppetコードレベルの単体テストはIDE上で動かせるはず

  • Puppet Enterprise、PuppetDBとの連動(いまいち何をするものかわかっていない)

結論

  • 思ったより使える。特にクラス名、パラメタ名でF3ジャンプできるところは良いです。

  • hieraのyamlからF3ジャンプできないのは残念。

  • 初心者が混じったグループでPuppet使うなら、Geppettoで統一するの1つの手だと思いました。 特に、私の周りではJavaのプロジェクトが多く、Eclipseが統一で導入されることが多いので、 導入しやすいと思いました。

  • お気に入りのエディタで特に困っていないなら、 わざわざ乗り換えるほどでもないです。

インストール方法

インストール方法を細かく紹介してもしょうがないので、ポイントだけ。

公式ページ からたどれるdownloadページだと、 Eclipse込みのパッケージを配っています。
私は既にEclipse使っていましたので、既存のEclipseへGeppettoをインストールする方法を紹介します。 内容は公式ドキュメントAdd Geppetto to an Existing Version of Eclipse に書いてあります。

  • メニュー Help → Install New Software
  • Work Withの右のAddを押す。取得先URLを記入する。 http://geppetto-updates.puppetlabs.com/4.x
  • Geppetto for Eclipse IDEを選択
  • その他、yamlエディタは入れたほうが良い。Geppetto公式ドキュメントではyeditを紹介している。 Eclipse Marketplaceで入れる。 http://marketplace.eclipse.org/content/yedit