我在菜谱中有一个default.rb文件,我正在尝试使用该文件引导一个ec2实例,并且正在尝试将我正在构建的本地虚拟环境中的站点程序包移至一个通过该厨师食谱的服务器。
之所以这样做,是因为我们的组织对如何将软件包放置到生产节点上非常严格,因此我必须实际移动要使用的任何库。可能会有更好的方法来完成我想做的事情,而且我很愿意征求建议,但是目前,我遇到的问题是我不知道如何在其中引用本地目录foreach循环,因此它一直尝试引用服务器上的文件夹,但是由于某种原因,我猜它尚未创建,即使我要查找的代码位于将其移动到那里的代码之后。
总的来说,我对该错误感到困惑,并且希望能为您提供任何解释,说明当第一段代码应该将该文件夹移动到该文件夹时,为什么它不像该文件夹那样工作。
此default.rb文件的代码如下:
#
# Cookbook:: <cookbook_name>
# Recipe:: default
#
include_recipe "yum-epel"
# install packages
for dir in ["connector_1", "connector_2", "connector_3", "json_logger", "connector_4", "site-packages"] do
remote_directory "/usr/lib/python2.7/site-packages/#{dir}" do
source "app_packages/#{dir}"
files_mode "0655"
mode "0755"
end
end
# install required site packages
Dir.foreach('/usr/lib/python2.7/site-packages/site-packages/') do |dir|
next if not dir.end_with?('.dist-info')
remote_directory "/usr/lib/python2.7/#{dir}" do
source "app_packages/site-packages/#{dir}"
files_mode "0655"
mode "0755"
end
end
remote_directory "/home/app-automation/bin/app_deployment" do
source "app_deployment"
files_owner "app-automation"
files_group "app-automation"
files_mode "0660"
owner "app-automation"
group "app-automation"
mode "0770"
end
答案 0 :(得分:0)
您正在将ruby代码与dsl厨师混在一起。它的行为方式与您期望的不同,因为包围\ wraps dsl厨师的红宝石代码按您的期望在compile time and not on convergence time执行。