我有战争,在应用到客户端之前需要更改哪些内容(某些文件)。所以我所做的是将解压缩的文件复制到客户端,更改我想要的文件并在客户端再次压缩该目录。一切正常但在这些操作之后我想清理(删除未压缩文件的临时目录)。因为首先我声明这样的资源:
file { 'temp-dir'
path => 'temp',
ensure => directory,
...
}
Puppet不允许我在清单结束时这样做:
File ['temp-dir'] {
ensure => absent,
...
}
我做错了什么,或者木偶不可能做到这一点?
答案 0 :(得分:2)
在使用文件资源的Puppet DSL中是不可能的,但是仍然有办法做你想做的事。
如果你在清单上写字:
MyProject-tvOSTests
Puppet将这两个文件资源解释为两个不同的,不兼容的结束状态的声明,并抛出错误。
Puppet是一种声明性语言,而不是指定一系列步骤的语言。
您有几个选择。
最好的方法是查看puppet-archive模块,因为它提供了一些针对特定用例的扩展,并支持清理。
另一种选择根本就是不要清理临时文件。通常没有必要清理它们。
另一个选择是在Ruby中编写自己的custom types and providers来处理您的特定安装。
最后,您可以使用exec来管理整个过程,例如
file { '/tmp/mytemp':
ensure => directory,
}
->
exec { 'do something': }
->
file { '/tmp/mytemp':
ensure => absent,
}