在Puppet中管理目录

时间:2017-08-04 09:17:46

标签: puppet

我有战争,在应用到客户端之前需要更改哪些内容(某些文件)。所以我所做的是将解压缩的文件复制到客户端,更改我想要的文件并在客户端再次压缩该目录。一切正常但在这些操作之后我想清理(删除未压缩文件的临时目录)。因为首先我声明这样的资源:

file { 'temp-dir'
 path => 'temp',
 ensure => directory, 
 ...
} 

Puppet不允许我在清单结束时这样做:

 File ['temp-dir'] {
     ensure => absent, 
     ...
    }

我做错了什么,或者木偶不可能做到这一点?

1 个答案:

答案 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,
}