为什么我的厨师食谱检查git repo到由Chef provisioner构建的目录不工作?

时间:2014-12-22 22:51:27

标签: ruby vagrant chef

首先,我是厨师和流浪汉的新手。

我已经有一个基于vdd的开源项目的流浪盒。我正在尝试添加一个厨师食谱,将git repo检出到由chef provisioner准备的目录中。

所以我在cookbooks/custom/my_example/default.rb添加了一个新配方,并在"recipe[my_example]"的{​​{1}}中添加了一个条目run_list。该配方应该将git存储库签出到chef/roles/vdd.json中声明的目录document_root,并使用config.json配方文件进行准备。我在vdd_sites.rb中的自定义厨师配方执行以下操作:

cookbooks/custom/my_example/default.rb

相关的配置json代码是:

git "/var/www/drupal7" do
  repository "https://github.com/drupal/drupal.git"
  revision "master"
  checkout_branch 'master'
  action :sync
  user 'vagrant'
  group 'vagrant'
end

vdd_sites.rb中的代码是:

     "vdd": {
      "sites": {
      "drupal8": {
        "account_name": "root",
        "account_pass": "root",
        "account_mail": "box@example.com",
        "site_name": "Drupal 8",
        "site_mail": "box@example.com",
        "vhost": {
          "document_root": "drupal8",
          "url": "drupal8.dev",
          "alias": ["www.drupal8.dev"]
        }
      },
      "drupal7": {
        "account_name": "root",
        "account_pass": "root",
        "account_mail": "box@example.com",
        "site_name": "Drupal 7",
        "site_mail": "box@example.com",
        "vhost": {
          "document_root": "drupal7/docroot",
          "url": "drupal7.dev",
          "alias": ["www.drupal7.dev"]
        }
      }
    }
  }

但是,该目录中没有任何内容被克隆。如果我将目标目标更改为我的配方文件中的另一个目录,它可以正常工作。即 if node["vdd"]["sites"] node["vdd"]["sites"].each do |index, site| include_recipe "database::mysql" htdocs = defined?(site["vhost"]["document_root"]) ? site["vhost"]["document_root"] : index # Avoid potential duplicate slash in docroot path from config.json input. if htdocs.start_with?("/") htdocs = htdocs[1..-1] end # Create subidrectores, allow for multiple layers deep. htdocs = "var/www/" + htdocs htdocs = htdocs.split(%r{\/\s*}) folder = "/" for i in (0..htdocs.length - 1) folder = folder + htdocs[i] + "/" directory folder do owner "vagrant" group "vagrant" mode "0755" action :create end end mysql_connection_info = { :host => "localhost", :username => "root", :password => node["mysql"]["server_root_password"] } mysql_database index do connection mysql_connection_info action :create end end end

我不确定发生了什么,是否是食谱执行的顺序?

2 个答案:

答案 0 :(得分:0)

删除checkout_branch行,您不希望这样。是的,我知道这听起来像你一样,但你不是。检查chef-client的输出以确保您的配方实际运行。您似乎在说这两段代码都是vdd_sites

答案 1 :(得分:0)

我怀疑你的问题是GIT并不像在它创建克隆的目录中拥有文件(或目录)。似乎/ var / www / drupal7至少有一个subdir / docroot,也许还有更多的文件。

建议您先创建克隆,然后添加这些文件。