Skip to content

Instantly share code, notes, and snippets.

@hfm
Last active March 22, 2018 13:19
Show Gist options
  • Save hfm/476a960c08e840f12e59 to your computer and use it in GitHub Desktop.
Save hfm/476a960c08e840f12e59 to your computer and use it in GitHub Desktop.
librarian-puppetの使い方

Puppet ForgeにあるPuppet modulesを管理するためのツール.

クイックスタート

準備(librarian-puppetのインストール,ひな形の生成)

gemからインストールし,initでPuppetfileのひな形を生成する

gem i librarian-puppet
librarian-puppet init

モジュールの追加・編集

Puppetfileを編集して,必要なモジュールの追加や修正を行う.

vim Puppetfile

生成されるひな形やドキュメントを読むと,書き方が分かる

モジュールのインストール

インストールパスの設定はconfigコマンドから実行可能. サードパーティ製モジュールは自前のモジュールと区別するために,今回はvendor/modulesという場所を選択.

librarian-puppet config path vendor/modules --local
librarian-puppet install

これだけでPuppetfile.lockにバージョン情報や依存関係が定義され,pathで設定したディレクトリにモジュールがインストールされる.

簡単!

更新

更新情報の取得

outdatedコマンドで行う.

アップデート

updateコマンドで行う.

雑感

出力にやや不満. installoutdated実行後,何も更新がない場合は「Already up-to-date.」「Your puppet modules are up to date!」みたいな表示を出して欲しい. 現状だと,librarian-puppet installを実行しても,なんにも出力が出ないまま完了してしまう. --verboseはあるにはあるんだけど,こっちは出力多すぎるので,単純な結果だけ出すようなやつ.

@hfm
Copy link
Author

hfm commented Sep 21, 2014

例えばwebistranoやcapistranoで運用する場合,デプロイする度にlibrarian-puppet installして,ネットからデータ引っ張ってくるのは相当時間食いそうだなあ.
キャッシュ機能持ってるみたいだけど,capでデプロイするなら,sharedディレクトリにpuppet module用キャッシュディレクトリを置いて,更新がなければそこから引っ張ってくるような方式にすればいいのかな.

@hfm
Copy link
Author

hfm commented Sep 21, 2014

.tmpファイルには,以下のような感じでインストールしたバージョンのキャッシュが入ってるっぽい

$ tree -L 2 .tmp/librarian/cache/source/puppet/forge/forgeapi_puppetlabs_com/puppetlabs-stdlib/
.tmp/librarian/cache/source/puppet/forge/forgeapi_puppetlabs_com/puppetlabs-stdlib/
├── 4.3.0
│   ├── cache
│   └── stdlib
└── 4.3.2
    ├── cache
    └── stdlib

6 directories, 0 files

@hfm
Copy link
Author

hfm commented Sep 21, 2014

キャッシュ機能持ってるみたいだけど,capでデプロイするなら,sharedディレクトリにpuppet module用キャッシュディレクトリを置いて,更新がなければそこから引っ張ってくるような方式にすればいいのかな.

sharedの仕事なんだろうか

@hfm
Copy link
Author

hfm commented Sep 21, 2014

とりあえずwebiのタスクで,

librarian-puppet config path vendor/modules --local --verbose
librarian-puppet install --verbose

みたいなのを実行すればいいのかな.

setupタスクのあとに

librarian-puppet config path vendor/modules --global --verbose

を実行するでも良さそうだ.

@lamanotrama
Copy link

librarian-puppet config path vendor/modules --local

しらんかった。vagrant-mhaの方も反映しようとおもった。

キャッシュ機能持ってるみたいだけど,capでデプロイするなら,sharedディレクトリにpuppet module用キャッシュディレクトリを置いて,更新がなければそこから引っ張ってくるような方式にすればいいのかな

vendor/ だけsahredにおいとけばいいんでないの?
とおもたけど、vagrant-mhaの方でためしたら.tmpって無いと毎回作ってソース取ってこられるんやね。めんどくさいな…

@hfm
Copy link
Author

hfm commented Sep 25, 2014

LIBRARIAN_PUPPET_TMPという環境変数を使えば,キャッシュディレクトリを移動できるらしい

@hfm
Copy link
Author

hfm commented Sep 30, 2014

あとcapで世代管理をするなら,bundler/capistranoみたくshared_pathにmodulesを入れて,current_release/vendor/modulesにsymlinkを貼ると良さそう

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment