MacBook Air に自作 EmacsLisp スクリプト fcopy.el を chef-solo を使ってインストールした。fcopy.el は git で管理してて、GitHub にホスティングしてる。つまり、今回は Mac に chef-solo で git 管理されてるツールをインストールする話。chef-solo のインストールについては過去記事を参照のこと。
recipe の作成
fcopy 用の cookbook を作る。
$ cd /etc/chef $ bundle exec knife cookbook create fcopy
fcopy 用の recipe は /var/chef-solo/cookbooks/fcopy/recipes/default.rb
を編集。install リソースを使わず、git リソースと bash リソースを使ってる。
git "/tmp/fcopy" do
repository "git://github.com/ataka/fcopy.git"
reference "master"
action :checkout
end
bash "install-fcopy" do
install_dir='/usr/local/share/emacs/site-lisp'
not_if {
File.exists?("#{install_dir}/fcopy.el")
}
code <<-EOC
install -m 664 /tmp/fcopy/fcopy.el #{install_dir}/
EOC
end
chef-solo 実行
chef-solo を実行して fcopy.el をインストールする。レシピを指定してインストールする場合:
$ cd /etc/chef $ sudo env PATH=$PATH bundle exec chef-solo -o fcopy
node.json を指定するなら、次の様に node.json を書く。
{
"screen": {
"users": [ "ataka", "ataka_work" ]
},
"run_list": [
"recipe[screen]",
"recipe[fcopy]"
]
}
chef-solo の実行では -j
オプションを使う。
$ sudo env PATH=$PATH bundle exec chef-solo -j node.json
蛇足
今回の recipe では .emacs の編集までは行なわない。使う人は、~/.emacs.d/init.el
に次の二行を追加。
(autoload 'fcopy-mode "fcopy" "copy lines or region without editing." t)
(define-key mode-specific-map "k" 'fcopy-mode) ; C-c k
あとがき
git リポジトリーからコードを clone して、bash を使ってインストールするレシピを書いた。今回の recipe には、更新 (update) が入っていない。どういう recipe を書くのが良いのかな? まだまだ勉強することが多い。分からないことも多い。
No comments:
Post a Comment