我在 Puppet 模块中有一个步骤,它大致执行以下操作来设置一些应用程序密钥:
file { '/root/setup_app_keys.sh':
ensure => file,
owner => 'root',
group => 'root',
mode => '0700',
source => 'puppet:///modules/app_module/setup_app_keys.sh',
}
exec { 'setup_app_keys':
unless => '/etc/pki/tls/private/app-foo.key',
command => '/root/setup_app_keys.sh',
user => 'root',
group => 'root',
}
Run Code Online (Sandbox Code Playgroud)
该setup_app_keys.sh
脚本有点太长,无法制作成(可读的)单行,所以我将它保存到机器的文件系统并从那里执行它。它在其中创建文件/etc/pki...
并且运行良好。
令人讨厌的是,shell 脚本基本上是一次性使用的东西。它不应该在机器的生命周期内再次运行,但它必须留在 Puppet 存储它的文件系统上。如果它被删除,Puppet 会帮助重新创建它。
我认为必须有一种方法可以使用exec
专门重写它,这将允许我在需要时从 puppetmaster 下载脚本,执行一次,然后丢弃脚本(或不首先存储它)。但我尝试过的一切都是这样的:
command => 'puppet:///modules/app_module/setup_app_keys.sh',
Run Code Online (Sandbox Code Playgroud)
或者
command => 'curl http://__[various puppetmaster URLs]__ | sh',
Run Code Online (Sandbox Code Playgroud)
并且这两种方法似乎都不起作用。是我要求太多,还是这种方法有缺陷?
小智 2
你可以添加你的“exec”
require => File["/root/setup_app_keys.sh"],
refreshonly => true,
Run Code Online (Sandbox Code Playgroud)
所以只有当你更改脚本时它才会再次运行
或者您可以在上次运行后添加到“文件”中
ensure => purged,
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7703 次 |
最近记录: |