【问题标题】:Chmod directory from other module by puppetpuppet 来自其他模块的 chmod 目录
【发布时间】:2016-01-08 22:52:07
【问题描述】:

我正在使用我不想更改的第 3 部分 puppet 模块(Tomcat)。它会创建一个 mode=644 的目录,我希望将其更改为 664(递归)。

当我尝试这个时,puppet 很不高兴,因为这个资源已经在另一个模块中定义了。

file { '/var/lib/tomcat' :
    ensure    => directory,
    mode => 0664,
    recurse    => true,
}

有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: puppet chmod


    【解决方案1】:

    您可以使用 collector 语法覆盖已声明资源的某些属性。

    File<| title == '/var/lib/tomcat' |> {
      mode => '0664'
    }
    

    谨慎使用。不兼容的覆盖仍然会发生冲突,并且您的清单变得难以调试。

    最安全的方法是使属性成为模块参数(通过向上游发送适当的补丁)。

    【讨论】:

      【解决方案2】:

      您应该使用“exec”资源类型。

      exec {"chmod -R  664 /var/lib/tomcat":
          path => "/bin",
          command => "chmod -R 664 .",
          cwd => "/var/lib/tomcat"
      }
      

      这是我发现避免重复资源名称的唯一解决方法

      【讨论】:

      • 这是有问题的,因为两个不同的资源管理同一个实体。每个代理事务都会在冲突状态之间执行触发器,从而使您的报告变得混乱。
      • 你说得对,但我不知道有什么其他方法...当然最好覆盖tomcat模块,但他不想;)
      【解决方案3】:

      你可以在 bash 中使用

      cd /var/lib chmod -R 664 Tomcat

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 2023-03-26
        相关资源
        最近更新 更多