使用 Bolt 检查目标机器上的文件是否存在
Check file existence on target machine using Bolt
查看 Bolt 文档,我没有找到如何使用 Puppet 计划检查远程计算机上文件是否存在。
可以使用 get_resources,但问题是它需要在远程机器上安装 Puppet 代理,这是我暂时想避免的事情。
另一种方法是使用带有 run_command 的 shell 脚本,这可能是我处理这个问题的方法。
还有其他想法吗?
这里是 Bolt 开发人员,很高兴看到您在这里提出问题!我实际上认为 run_command
对于这个用例很可能比 get_resources
更有效,所有其他条件都相同。不确定你是否使用 Windows、*nix 或两者,但假设 *nix 我想你会想要类似的东西:
plan myplan(
TargetSpec $targets
) {
# test -f will return 0 if the file exists, 1 if it does not
$result_set = run_command("test -f /path/to/file", $targets, '_catch_errors' => true)
# Maybe you want to write the file if it doesn't exist:
upload_file('./myfile', '/path/to/file', $result_set.error_set.targets)
# This will be the list of targets the file does exist on:
run_task('mytask', $result_set.ok_set.targets)
}
没有比这更好或更“原生”的方法来检查远程系统上的文件是否存在了。 file::exist
计划功能仅适用于本地机器,因为它在 Bolt 中使用与我们用于查找模块、Bolt 配置等相同的文件查找器。但该文件查找器在远程系统上不可用。
查看 Bolt 文档,我没有找到如何使用 Puppet 计划检查远程计算机上文件是否存在。
可以使用 get_resources,但问题是它需要在远程机器上安装 Puppet 代理,这是我暂时想避免的事情。
另一种方法是使用带有 run_command 的 shell 脚本,这可能是我处理这个问题的方法。
还有其他想法吗?
这里是 Bolt 开发人员,很高兴看到您在这里提出问题!我实际上认为 run_command
对于这个用例很可能比 get_resources
更有效,所有其他条件都相同。不确定你是否使用 Windows、*nix 或两者,但假设 *nix 我想你会想要类似的东西:
plan myplan(
TargetSpec $targets
) {
# test -f will return 0 if the file exists, 1 if it does not
$result_set = run_command("test -f /path/to/file", $targets, '_catch_errors' => true)
# Maybe you want to write the file if it doesn't exist:
upload_file('./myfile', '/path/to/file', $result_set.error_set.targets)
# This will be the list of targets the file does exist on:
run_task('mytask', $result_set.ok_set.targets)
}
没有比这更好或更“原生”的方法来检查远程系统上的文件是否存在了。 file::exist
计划功能仅适用于本地机器,因为它在 Bolt 中使用与我们用于查找模块、Bolt 配置等相同的文件查找器。但该文件查找器在远程系统上不可用。