O ethos da resposta de @Sven está absolutamente correto: você configurou as dependências de recursos no Puppet usando before
, require
, notify
, etc. A única coisa que eu mudaria é que usaria o defined()
função para testar:
file { '/tmp/foo':
ensure => 'directory',
mode => '0755',
}
if defined(File['/tmp/foo']) {
notice("/tmp/foo is defined! making /tmp/bar/baz")
file { '/tmp/bar':
ensure => 'directory',
mode => '0755',
}
file { '/tmp/bar/baz':
ensure => 'present',
mode => '0755',
require => File['/tmp/bar'],
}
}
Duas outras informações úteis:
-
Se você ativar o "Analisador futuro" no Puppet 3.2+, pode acessar atributos de recursos da seguinte forma: $a = File['/tmp/foo']['ensure']
. Isso armazenaria o valor do atributo ensure
para o recurso de arquivo /tmp/foo
na variável $a
. Se você decidir analisar isso, eu reescreveria o exemplo acima para usar if defined(File['/tmp/foo']) and File['/tmp/foo']['ensure'] == 'directory'
(UNTESTED).
-
Se você passar esses itens como parâmetros para uma classe, há uma maneira sorrateira de acessar os valores dos parâmetros de classe por meio de .