我不是厨师大师(通常我使用 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
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文件的内容并更新新文件的权限。仅当文件夹不存在时才执行此操作。
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
这将只运行一次,否则您可以删除“creates”,这样它每次都会运行。
更改几个特定文件夹的权限
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