トップ «前の日記(2013-02-12) 最新 次の日記(2013-02-20)» 編集

人徳ゼロ日記


2013-02-13

_ puppetコマンドに、pupet forgeからモジュールをダウンロードしてインストールする機能がついていた

今まで、Puppetのモジュールは自前で作っていて、 Puppet Forge (モジュールをgitで開発、配布できるコミュニティサイト)にあるモジュールは使っていませんでした。 以前はモジュールの汎用性をあげる作り方が浸透していなかったようで、 作者の特定の環境では使えても他の環境(私の環境)では色々決め打ち過ぎて使えない傾向にありました。

使えないイメージを持ったままだったので、Puppet Forgeは気にしていなかったのですが、 Puppetlabsのブログで、 PostgreSQLモジュールの紹介記事(Module of the Week: inkling/postgresql – PostgreSQL Management) があり、興味を持ったので使って見ました。

知らないうちにpuppetコマンドが強化されていて、 「puppet module install モジュール名」 と打つと、Puppet Forgeからモジュールをダウンロードして modulesディレクトリ(Redhat/CentOSなら/etc/puppet/modules)に格納してくれます。 さらに、モジュール間の依存関係まで自動で解決して依存するモジュールもまとめてダウンロードしてくれます。 (もちろん、インターネット接続環境が必要です)

以下、PostgreSQLモジュールを取り込む例です。

$ puppet module install puppetlabs-postgresql
Preparing to install into /etc/puppet/modules ...
Downloading from https://forge.puppetlabs.com ...
Installing -- do not interrupt ...
/etc/puppet/modules
└─┬ puppetlabs-postgresql (v1.0.0)
  ├── puppetlabs-firewall (v0.0.4)
  └── puppetlabs-stdlib (v2.6.0)

このように依存関係を見て、puppetlabs-firewall,puppetlabs-stdlibも一緒に ダウンロード、展開されました。とても楽で良いですね。 インターネット接続できない閉じた環境だと自動ダウンロードはできないですが、 そもそもmoduleは複雑な依存関係ができないように作るべきなので、 rpmとは異なり手動で取り込んでもまあまあ何とかなるのでしょうね。

puppet moduleコマンドの詳細は Docs: Installing Modules に書いてあります。