Chefで構築していた仮想開発環境をfedora 20からCentOS6.5に乗り換えた
少し前からChefを使って仮想開発環境を作れるgenerator(コードネーム:Almagest)を作っていた。
当初はOSにfedora 20を使っていたが、同僚からvagrantのboxを検索できるサイトを教えていただいた。
fedoraの新しいバージョンについてもイメージが乗っていたものの、VagrantのGuest Additionsのバージョンアップが上手く動かない問題があった。VagrantのboxのGuest Additionsのアップデート方法
このため、fedora 20 -> fedora 21 -> CentOS6.5とイメージを変更した。
fedora 20 -> fedora 21に乗り換えた際のハマりどころ
新しいboxに以下のコマンドが存在しなかった。
tmux, readline-devel, tar
tmux
に関してはcookbookを追加して解決。
boxのurlを変更した後に bundle exec knife solo bootstrap almagest
を実行すると、anyenv経由でrubyのインストールに何度か失敗した。
rubyのインストールの際に tar
や、readline-devel
が必要らしく、その途中でコケていた模様。
対応法としては、anyenvのcookbookに tar
, readline-devel
に依存する旨を明記する。
あるcookbookが別のcookbookに依存する場合は、以下の3点を行えば良いらしい。
- (1) : Berksfileに依存するcookbookを記載 or 必要なcookbookを
site-cookbooks
以下に配置- 今回は前者だったが、supermarketに乗ってないcookbookに依存する場合はおそらく配置すれば大丈夫
+cookbook 'tar', '~> 0.7.0' +cookbook 'readline', '~> 0.0.5'
- (2) :
metadata.rb
に依存関係を明記
+depends 'tar' +depends 'readline'
- (3) :
recipes/default.rb
に依存関係を明記
+include_recipe 'tar::default' +include_recipe 'readline::default'
自分の作ったリポジトリ見ていると、 Berksfile
に定義されているのに site-cookbooks
にそのファイル突っ込んでいたりと、差分的に要らないものがいくつかありそうなので後で整理したい。
fedora 21 -> CentOS 6.5に乗り換えた際のハマりどころ
- knife solo bootstrapでchefを適用した後vagrant reloadするとIPのアサインに失敗する
- 自前のdotfilesのcookbookが原因だった模様。.bashrcをまるっと置き換えてしまうと良くないようなので、ここは改善する予定。