0

我正在使用 Chef 和这本 s3cmd 食谱

正如本教程所说,我使用knife它来下载和压缩它。我实际上s3cmd按照教程说明进行了工作,但是我无法理解安装的确切位置s3cmd

任何人都可以向我解释厨师在使用 s3cmd 食谱时在做什么吗?

4

1 回答 1

0

当您在chef-solo本地(或chef-client在服务器设置中)运行时,您是在告诉 Chef 编译在您的食谱食谱中定义的一组资源,然后将其应用于您正在运行命令的节点。

资源定义了您要设置的任务和设置。

run_list节点的集合定义了将编译的食谱食谱。

s3cmd

在您的情况下,您的run_list意愿可能是recipe[s3cmd].

这会指示厨师查看s3cmd食谱,并且由于您没有提供特定的食谱,它会加载s3cmd/recipes/default.rb.

如果你给出了一个特定的食谱,recipe[s3_cmd::other]那么 Chef 会加载文件s3_cmd/recipes/other.rb

Chef 会将配方中定义的所有资源编译到一个列表中,并在列表中运行,根据需要对您的系统应用更改。

s3cmd::default做什么

  1. 首先它安装一些packages (通过你的发行包管理器)

    python, python-setuptools, python-distutils-extra, python-dateutil, s3cmd
    

    注意:这与自述文件中关于如何s3cmd安装的内容完全不同!经常检查!

  2. 弄清楚配置应该去哪里。

    if node['s3cmd']['config_dir']
      home_folder = node['s3cmd']['config_dir']
    else
      home_folder = node['etc']['passwd'][node['s3cmd']['user']]['dir']
    end
    
  3. 从食谱中的a创建.s3cfg配置文件。template

    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并单步执行输出。尝试确定运行列表编译阶段,然后确定所有应用的位置。

于 2014-09-10T11:42:13.977 回答