【问题标题】:How to remove the recipes from the Node for Chef如何从 Chef 节点中删除食谱
【发布时间】:2014-11-04 06:38:30
【问题描述】:

我在节点上运行了 sudo chef-client,它在节点内有文件。但现在我想从节点中删除包。如果我从chef-server 中删除run_list 中的recipie,它将不会从节点中删除。

请告诉我在节点上删除包的最佳方法是什么。

【问题讨论】:

    标签: chef-infra chef-recipe


    【解决方案1】:

    Chef 中的每个资源都有一个或多个操作。通常默认操作类似于installcreate,但它们通常也提供相反的操作。在这种情况下,您可能希望使用以下资源制作新配方(或更改现有配方):

    package 'foo' do
      action :remove
    end
    

    【讨论】:

      【解决方案2】:

      我的第一个想法是卸载配方,但这感觉有点像反模式,因为我们只想卸载一次,真的不是吗,所以每次都运行它会有点奇怪。

      这是一个可重复的服务器定义,您可能想要旋转其他副本?如果是这样,我会说手动删除可能是最干净的,并让您的角色定义或运行列表定义在机器之间保持一致。

      如果您真的想将其编码并在厨师中使用,另一个选项是在您的默认食谱中具有指示它应该“启用”还是“已安装”的属性

      if node['your_package']['enabled'].eql?("false")
         uninstall_it_if_installed()
      else
         install_it_if_missing()
      end
      

      同样,我不确定这是否真的是最干净的或 Chef 必须要做的事情,但它可能会让您到达您想去的地方。

      另一种选择是吹走该框并使用您希望保存为角色“myServerType”的运行列表定义重新启动它。我认为在纸面上这是最干净的解决方案,但当然可能有很多不适合的原因

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-08
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        • 2015-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多