珍しくブログに連投。
このWindows + Cygwin + Proxy環境でChefを試した時に書いたレシピの中から、 いくつかピックアップして掲載。もっと良い書き方があると思うんだけどなー。
いずれの書き方も、Ubuntu 12.10への環境構築を前提にしての記述。
Proxy環境への適応
Proxy環境だと、色々事前にセットしないとネットワーク経由でのapt-getやらgitやらgemが使えない。 まずは、Proxy環境への適応。
attributes/default.rb
ProxyのURLを直接レシピに入れたくないので、以下のような内容をattributesとして設定しておく。
default["private"]["proxy"] = "http://ユーザ名:パスワード@ProxyのURL:ポート番号/"
recipes/default.rb
その上でレシピに以下を入れる。やっていることは、/etc/profileにProxyの環境変数を追加。
ちなみに、このレシピにはnot_ifを入れてあって、attributesにURLをセットしなければ、 このレシピは動作しない。
# attirbutesに設定したProxyのURLを変数にセット proxy = node['private']['proxy'] bash "proxy on profile" do not_if { proxy.empty? } code <<-EOC echo "export http_proxy=#{proxy}" >> /etc/profile echo "export https_proxy=#{proxy}" >> /etc/profile source /etc/profile EOC end
認証が必要なGitリポジトリからclone
PublicなGitからcloneする分には、単にURLを入れれば良いが、認証の必要なPrivateリポジトリの場合は、 一工夫いる。また、Gitを使う場合は、GitにもProxy設定が必要。上のattributesを応用する。
attributes/default.rb
default["private"]["gitUrl"] = "https://ユーザ名:パスワード@リポジトリURL"
recipes/default.rb
bash "git proxy" do # 以下で使ってるproxyは、Proxy環境への適応で作った変数 not_if { proxy.empty? } code <<-EOC git config --global http.proxy #{proxy} EOC end git "cloneするディレクトリをフルパス指定" do # ここでは、attributesを直接使ってる repository node[:private][:gitUrl] reference "master" action :checkout end
その他気をつけること・ハマったこと
not_ifの記述
not_ifをメソッド呼び出しだと思い込んだため、当初こんな書き方をしていた。
not_if(条件)
これ動作しない。以下のように書く。波括弧なことに注意する。
not_if { 条件 }
リンクを作るlink Resource
シンボリックリンクやハードリンクを作るlink Resourceを使おうと思って、こんな書き方をしていた。
link "/home/hoge" do to "/home/hoge/dotFiles/.zshrc" end
やろうとしていることは、lnコマンドのつもり。
ln -s /home/hoge/dotFiles/.zshrc .
だが、これが動作しない。以下のように書く。ファイル名まで書くようにする。
link "/home/hoge/.zshrc" do to "/home/hoge/dotFiles/.zshrc" end
0 コメント:
コメントを投稿