当我使用`s3cmd`食谱时,厨师做什么?

时间:2014-09-10 10:12:12

标签: amazon-s3 chef s3cmd

我正在使用Chef和this s3cmd cookbook

正如this tutorial所说,我使用knife下载并停止播放。我实际上按照教程说明进行了s3cmd工作,但是我在理解s3cmd的安装确切位置时遇到了问题?

在使用s3cmd食谱时,有人能向我解释厨师在做什么吗?

1 个答案:

答案 0 :(得分:0)

当您在本地运行chef-solo(或在服务器设置中chef-client)时,您告诉Chef编译一套在您的cookbook配方中定义的resources,然后应用于{ {3}}您正在运行该命令。

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

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

s3cmd

在您的情况下,您的run_list可能会recipe[s3cmd]

这指示厨师查看s3cmd食谱,因为您没有提供特定食谱,所以它会加载node

如果您提供了特定的食谱,例如recipe[s3_cmd::other],那么Chef会加载文件s3_cmd/recipes/other.rb

Chef会将配方中定义的所有s3cmd/recipes/default.rb编译成一个列表,并通过列表运行根据需要对系统进行更改。

s3cmd::default做什么

  1. 首先安装一些resources(通过您的发行包管理器)

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

    注意:这与packages关于如何安装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. readme中的template创建.s3cfg配置文件。

    template "#{home_folder}/.s3cfg" do...
    
  4. 还有什么

    Cookbook还可以定义自己的cookbook来创建更多可重复使用的烹饪书。资源名称和属性将在cookbook/resources/blah.rb中定义。每个资源action的代码都位于cookbook/providers/blah.rb

    代码可以打包在cookbook/libraries/blah.rb中,并包含在其他Ruby文件中。

    使用chef-solo选项运行--log-level DEBUG并逐步执行输出。尝试并确定运行列表编译阶段,然后确定应用所有内容的位置。