木偶不反映清单中所做的更改

木偶不反映清单中所做的更改

我有一个模块清单,假设它名为work.pp.我has_work在 中添加了一个自定义事实/lib/facter/work.rb。当我运行puppet agent -t并检查时facter -p has_work,事实具有适当的价值。但是,在我的work.pp文件中,我有这样的条件:

if ($has_work)            { $create_file = true }

然后基于$create_file我有这样的事情:

if ($create_file) {
    file {
      "create file":
        path    => "/path/to/file.ini",
        alias   => "/path/to/file.ini",
        ensure  => file,
        owner   => devops,
        mode    => "0644",
    }

然而,尽管这$has_work是真的,但客户端上没有创建任何文件。

我试图弄清楚为什么会这样。任何帮助表示赞赏。谢谢!

答案1

不确定你的语法是否正确,或者粘贴错误,我建议使用PDK进行开发。因此,请在模块中尝试以下操作,让我们称之为example

$ tree example
├── manifests
│   └── init.pp
└── examples
    └── init.pp
$ cat manifests/init.pp
class example {
  if ($create_file) {
    file { "/path/to/file.ini":
      alias   => "/path/to/file.ini",
      ensure  => file,
      owner   => "devops",
      mode    => "0644",
    }
  }
}
$ cat examples/init.pp

include example

使用以下命令测试您的代码:

puppet apply examples/init.pp --noop

另外,如果您从 Puppet Console UI(在 Puppet Enterprise 中)进行测试,请检查您的图表以查看您的资源是否正在受到管理。

要知道,从编码风格的角度来看,if clause不鼓励使用,因为不同的执行所管理的资源数量会有所不同。我想知道这是否if是为了:

  • 我不想管理.inivs
  • 我不想更改/创建该.ini文件,因为它已经创建并且可能已被手动修改。

如果是第二个,您可能需要使用file_line(请参阅文档

答案2

我解决了这个问题,问题是节点分类器正在转储空白目录。我删除了转储它的代码,现在它可以工作了。

相关内容