我正在使用 Chef 和这本 s3cmd 食谱。
正如本教程所说,我使用knife
它来下载和压缩它。我实际上s3cmd
按照教程说明进行了工作,但是我无法理解安装的确切位置s3cmd
?
任何人都可以向我解释厨师在使用 s3cmd 食谱时在做什么吗?
我正在使用 Chef 和这本 s3cmd 食谱。
正如本教程所说,我使用knife
它来下载和压缩它。我实际上s3cmd
按照教程说明进行了工作,但是我无法理解安装的确切位置s3cmd
?
任何人都可以向我解释厨师在使用 s3cmd 食谱时在做什么吗?
当您在chef-solo
本地(或chef-client
在服务器设置中)运行时,您是在告诉 Chef 编译在您的食谱食谱中定义的一组资源,然后将其应用于您正在运行命令的节点。
资源定义了您要设置的任务和设置。
该run_list
节点的集合定义了将编译的食谱食谱。
在您的情况下,您的run_list
意愿可能是recipe[s3cmd]
.
这会指示厨师查看s3cmd
食谱,并且由于您没有提供特定的食谱,它会加载s3cmd/recipes/default.rb
.
如果你给出了一个特定的食谱,recipe[s3_cmd::other]
那么 Chef 会加载文件s3_cmd/recipes/other.rb
。
Chef 会将配方中定义的所有资源编译到一个列表中,并在列表中运行,根据需要对您的系统应用更改。
s3cmd::default
做什么首先它安装一些package
s (通过你的发行包管理器)
python, python-setuptools, python-distutils-extra, python-dateutil, s3cmd
注意:这与自述文件中关于如何s3cmd
安装的内容完全不同!经常检查!
弄清楚配置应该去哪里。
if node['s3cmd']['config_dir']
home_folder = node['s3cmd']['config_dir']
else
home_folder = node['etc']['passwd'][node['s3cmd']['user']]['dir']
end
template "#{home_folder}/.s3cfg" do...
Cookbooks 还可以定义自己的资源和提供者来创建更多可重用的食谱。资源名称和属性将在cookbook/resources/blah.rb
. 每个资源的代码action
将在cookbook/providers/blah.rb
代码可以打包cookbook/libraries/blah.rb
并包含在其他 Ruby 文件中。
chef-solo
使用该选项运行--log-level DEBUG
并单步执行输出。尝试确定运行列表编译阶段,然后确定所有应用的位置。