私はシェフの第一人者ではありませんが (通常は Puppet を使用します)、次のことを試してください。
git からコードを取得する
wget コマンドを実行することもできます (以下の例を参照)。
より洗練されたものが必要な場合は、http://docs.opscode.com/resource_deploy.html を参照してください。
deploy_revision "/path/to/application" do
repo 'ssh://name-of-git-repo/repos/repo.git'
migrate false
purge_before_symlink %w{one two folder/three}
create_dirs_before_symlink []
symlinks(
"one" => "one",
"two" => "two",
"three" => "folder/three"
)
before_restart do
# some Ruby code
end
notifies :restart, "service[foo]"
notifies :restart, "service[bar]"
end
getcomposer.com から composer.phar をダウンロードします。
wgetを実行します。
ここからいくつかのコードを持ち上げました: http://cookingclouds.com/2012/06/23/chef-simple-cookbook-example/
基本的には、特定のフォルダーで wget を実行し、tar の内容を抽出し、新しいファイルのいくつかのアクセス許可を更新するだけです。これは、フォルダーがまだ存在しない場合にのみ行われます。
# Run a bash shell - download and extract composer
bash "install_composer" do
user "root"
cwd "/folder/to/extact/to"
code <<-EOH
wget http://getcomposer.com/composer.tar.gz
tar -xzf composer.tar.gz
chown -R user:group /folder/to/extact/to
EOH
not_if "test -d /folder/to/extact/to"
end
php composer.phar install を実行します
http://docs.opscode.com/resource_execute.html
execute "composer install" do
command "php composer.phar install && touch /var/log/.php_composer_installed"
creates "/var/log/.php_composer_installed"
action :run
end
これは一度だけ実行されます。それ以外の場合は、「作成」を削除すると、毎回実行されます。
いくつかの特定のフォルダーのアクセス許可を変更する
http://docs.opscode.com/resource.html
directory "/tmp/folder" do
owner "root"
group "root"
mode 0755
action :create
end
ディレクトリが既に存在する場合、何も起こりません。ディレクトリが何らかの方法で変更された場合、リソースは更新済みとしてマークされます。
ついに
検索は便利だと思います。Chef のサイトをブラウジングするのは絶望的です (掘り下げるには情報が多すぎます)。http://docs.opscode.com/search.html