トップ 最新 追記

人徳ゼロ日記


2015-12-16

_ 第1回日本Puppetユーザ会で発表した

第1回Puppetユーザ会 で発表をしてきました。開催から1か月半くらい経過してしまいましたが、書いておきます。

ユーザ会はまだ第1回なので、Puppetでどんなメリットがあるのか、大雑把なところを説明しました。 Puppet Manifestの書き方のテクニック、悩んだところなど、言いたいことは多いのですが、 今後のユーザ会で出していければよいな、と思っています。

特に、汎用性の高いモジュールと、わかりやすさ(シンプルさ)の両立は まだ答えがあるわけではなく試行錯誤の途中なので、 議論が進められるとうれしいです。


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

2015-12-18

_ スマホから強烈に見づらかったので、ブログのテーマをスマホ対応になっているtDiaryのデフォルトに変更した

普段、自分のサイトは投稿の時しか見る機会がないので、スマホから見ることはほとんどありませんでした。

昨日のPuppet Advent Calendar向け記事をスマホから見たら、箇条書きは異常に横幅細くなるは、画像ははみ出るは、ひどかったです。さすがにまずいと思って、tDiaryデフォルトのCSSに変更して、暫定対処。

もともと使っていたCSSの修正もしないとな。