开始使用chef,并在部署时运行composer install

due*_*lsy 5 chef-infra laravel composer-php laravel-4

我们希望使用OpsWorks在亚马逊上部署一些基于Laravel4的PHP应用程序,这需要一些东西:

  • 从git中获取代码
  • 从getcomposer.com下载composer.phar
  • php composer.phar install
  • 更改几个特定文件夹的权限

我对厨师来说非常新鲜,所以最初寻找一个可以掌握厨师基本知识的地方,然后如何实现上述任务,我们会感激任何指针.

Dre*_*ury 2

我不是 Chef 大师(我通常使用 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
Run Code Online (Sandbox Code Playgroud)

从 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
Run Code Online (Sandbox Code Playgroud)

运行 phpcomposer.phar 安装

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
Run Code Online (Sandbox Code Playgroud)

这只会运行一次,否则您可以删除“创建”,它每次都会运行。

更改一些特定文件夹的权限

http://docs.opscode.com/resource.html

directory "/tmp/folder" do
  owner "root"
  group "root"
  mode 0755
  action :create
end
Run Code Online (Sandbox Code Playgroud)

如果该目录已经存在,则不会发生任何事情。如果目录以任何方式发生更改,资源将被标记为已更新。

最后

我发现搜索很方便,在 Chef 网站上浏览东西似乎毫无希望(太多东西需要挖掘)。http://docs.opscode.com/search.html