【问题标题】:Is it possible to debug chef recipes from the vagrant box?是否可以从 vagrant box 调试厨师食谱?
【发布时间】:2013-06-30 09:22:08
【问题描述】:

我正在为一个流浪盒子的厨师食谱而苦苦挣扎。我正在使用 chef-solo。

我对 Ruby 不太满意(我以前从未使用过它),所以如果我每次都必须vagrant provision,那么编写我的食谱的过程会很长。

有没有办法调试特定的配方?甚至从虚拟机外壳。

我已经看到 chef-shell 存在 (http://docs.opscode.com/chef_shell.html),当我在虚拟机中时我可以启动它(它可以工作),但我不明白如何加载我的食谱并测试它们.

【问题讨论】:

    标签: ruby chef-infra provisioning vagrant chef-solo


    【解决方案1】:

    在当前 vagrant chef provisioner 中启用调试输出的正确方法是使用 chef.log_level,而不是手动使用 chef-solo 或使用 chef.arguments:

    Vagrant.configure("2") do |config|
      # ...
      config.vm.provision :chef_solo do |chef|
        chef.log_level = :debug
        # ...
      end
    end
    

    【讨论】:

      【解决方案2】:

      除了上面的输入,也很不错;-)

      在调试模式下运行chef-solo(启用调试输出)肯定会有所帮助。

      例如

      chef-solo -c solo.rb -j node.json -l debug

      【讨论】:

      • 检查文件夹/tmp/应该有vagrant编译的solo.rb json配置可以使用
      【解决方案3】:

      如果您在 Vagrant 中运行 chef-solo,则可以从 Vagrantfile 中注入额外的自定义参数(用于记录/调试),如下所示:

       Vagrant.configure("2") do |config|
          # ...
          config.vm.provision :chef_solo do |chef|
            chef.arguments = '-l debug'
            # ...
          end
       end
      

      【讨论】:

        【解决方案4】:

        您可以直接从 VM 内的 shell 中使用 chef-solo,但这需要与您已经为 vagrant 使用的文件结构不同的文件结构。

        看起来有点像here所做的事情:

        • 您需要您的食谱目录
        • 您需要一个 .json 文件,其中包含位于 Vagrantfile 中 chef.json 中的所有数据
        • 并且您需要一个包装器/启动 ruby​​ 脚本,如上面帖子中的脚本。

        一般来说,尝试搜索解释没有 Vagrant 的 chef-solo 的教程。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-29
          • 2021-11-01
          相关资源
          最近更新 更多