
モジュールマニフェストがあります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
。
.ini
対管理したくない.ini
このファイルはすでに作成されており、手動で変更されている可能性があるため、このファイルを変更/作成したくありません。
2回目の場合は、以下を使用したい場合がありますfile_line
(参照文書)
答え2
問題を解決しましたが、問題はノード分類子が空のディレクトリをダンプしていることでした。ダンプしたコードを削除しましたが、これで動作します。