J'essaie de trouver un moyen de tester si une ressource est déjà définie dans un autre dossier, et si ce n'est pas la créer? Un exemple rapide:
if File[$local_container] {
alert("Testing - It existed $local_container")
} else {
file{ "$local_container":
ensure => directory,
}
}
Toutefois - File[$local_container]
semble toujours évaluer à vrai. Y a-t-il un moyen de faire cela?
La meilleure façon de procéder est en utilisant une fonction veille_reesource de pupePetLabs STDLIB
Il faut un type de ressource, un titre et une liste d'attributs décrivant une ressource en tant que paramètres.
dis que vous avez un cas de test pour créer uniquement la ressource si elle n'existe pas déjà-
ensure_resource('package', 'test-pkg', {'ensure' => 'present'})
Voulez-vous dire "test si une ressource est déjà définie "? Si vous définissez une ressource (c.-à-d., file {}
, etc.) Puppet créera ce que vous décrivez si cela n'existe pas déjà (en supposant que vous passez ensure => present
, bien sûr).
Pour vérifier si une ressource est déjà définie dans le catalogue ou non:
mark-draytons-macbook:~ mark$ cat test.pp
file { "/tmp/foo": ensure => present }
if defined(File["/tmp/foo"]) {
alert("/tmp/foo is defined")
} else {
alert("/tmp/foo is not defined")
}
if defined(File["/tmp/bar"]) {
alert("/tmp/bar is defined")
} else {
alert("/tmp/bar is not defined")
}
mark-draytons-macbook:~ mark$ puppet test.pp
alert: Scope(Class[main]): /tmp/foo is defined
alert: Scope(Class[main]): /tmp/bar is not defined
notice: //File[/tmp/foo]/ensure: created
Remarque: defined()
est dépendant de l'ordre d'analyse .
Ou....
unless File["${local_container}"] {
file{ "${local_container}":
ensure => directory,
}
}
Et gardez un œil sur ces citations et bretelles bouclées ....