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