首先,我是厨师和流浪汉的新手。
我已经有一个基于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
我不确定发生了什么,是否是食谱执行的顺序?
答案 0 :(得分:0)
删除checkout_branch
行,您不希望这样。是的,我知道这听起来像你一样,但你不是。检查chef-client的输出以确保您的配方实际运行。您似乎在说这两段代码都是vdd_sites
?
答案 1 :(得分:0)
我怀疑你的问题是GIT并不像在它创建克隆的目录中拥有文件(或目录)。似乎/ var / www / drupal7至少有一个subdir / docroot,也许还有更多的文件。
建议您先创建克隆,然后添加这些文件。