よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

puppet-moduleでモジュールのレシピの共有/再利用が可能に!

これまでシステム運用自動化の手助けをしてくれるツールであるpuppetのベストプラクティスは、puppetlabのサイトに掲載されていました。
しかし、最近のサイトリプレースと合わせて?、puppet-moduleというgemがリリースされ、そちらでpuppetのモジュールを登録/管理できるようになりました。

仕組み的なところの話、結局はmoduleのソースコードを各人のgitで管理しておき、そのソースを落としてくるというものみたいです。

この仕組みが用意されたことで、

  • moduleを簡単に探すことができる
  • moduleレシピの更新を第三者に任せることができる ※レシピが信頼できるものかどうかは別問題

といったメリットがあります。

それでは早速、使い方を説明します。

まずはpuppet-moduleをインストールします。

$ sudo gem install puppet-module

6/8時点ではversion 0.3.0がインストールされました

以下のコマンドでREADMEを確認できます。

$ puppet-module usage

helpも用意されています。

$ puppet-module help
Tasks:
puppet-module build [PATH_TO_MODULE] # Build a module for release
puppet-module changelog # Display the changelog for this tool
puppet-module changes [PATH_TO_MODULE] # Show modified files in an installed module
puppet-module clean # Clears module cache for all repositories
puppet-module generate USERNAME-MODNAME # Generate boilerplate for a new module
puppet-module help [TASK] # Describe available tasks or one specific task
puppet-module install MODULE_NAME_OR_FILE [OPTIONS] # Install a module (eg, 'user-modname') from a repository or file
puppet-module repository # Show currently configured repository
puppet-module search TERM # Search the module repository for a module matching TERM
puppet-module usage # Display detailed usage documentation for this tool
puppet-module version # Show the version information for this tool

Options:
-c, [--config=CONFIG] # Configuration file
# Default: /home/interu/.puppet/puppet.conf

現状、公開されているモジュール一覧を取得するコマンドが無いのが難点です。
これはpuppet-moduleの version upで改善されることでしょう。
適当に "a" という文字列で検索してみます。

$ puppet-module search a
=====================================
Searching http://forge.puppetlabs.com

                                                                        • -

19 found.

                • -

anselm/concatfile (2)
camptocamp/apt (0.0.1)
camptocamp/tomcat (0.0.1)
camptocamp/varnish (0.0.1)
DavidSchmitt/apache (1.0.0)
DavidSchmitt/apt (1.0.0)
DavidSchmitt/backuppc (1.0.0)
DavidSchmitt/dnsmasq (1.0.0)
DavidSchmitt/nagios (1.0.0)
igal/apache (0.0.1)
jamtur01/apachemodules (0.0.1)
jamtur01/httpauth (0.0.1)
kbarber/archive (1.0.0)
kbarber/bugzilla (1.0.0)
kbarber/iptables (1.0.0)
nico/heartbeat (0.0.1)
puppetlabs/apache (0.0.2)
puppetlabs/passenger (0.0.1)
ripienaar/concat (20100507)

このようにして、どのようなmoduleがあるかを確認し、使ってみたいモジュールがあったら、${PUPPET_ROOT}以下のetc/puppet/modules/ に移動して、

$ puppet-module install puppetlabs/apache

とすればインストール完了で、これだけでmoduleを利用できます。

moduleは個人で公開することも可能ですので、次回は公開方法を紹介しようかと思います。