Puppet: teste se o recurso estiver definido ou crie-o

14

Estou tentando descobrir uma maneira de testar se um recurso já está definido em outro arquivo e, se não, criá-lo? Um exemplo rápido:

  if File[$local_container] {
    alert("Testing - It existed $local_container")
  } else {
    file{ "$local_container":
      ensure => directory,
    }
  }

No entanto - File[$local_container] parece sempre avaliar como verdadeiro. Existe uma maneira de fazer isso?

    
por gnarf 09.09.2009 / 23:01

4 respostas

10

A melhor maneira de fazer isso é usar a função ensure_resource do stdlib

do puppetlabs

É necessário um tipo de recurso, título e uma lista de atributos que descrevem um recurso como parâmetros.

Digamos que você tenha um caso de teste para criar o recurso somente se ele ainda não existir -

ensure_resource('package', 'test-pkg', {'ensure' => 'present'})
    
por 19.01.2015 / 11:56
14

Você quer dizer "testar se um recurso já está definido "? Se você definir um recurso (por exemplo, file {} , etc), o Puppet criará o que você está descrevendo, se ainda não existir (supondo que você tenha passado ensure => present , é claro).

Para verificar se um recurso já está definido no catálogo ou não:

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

Observação: defined() é dependente da ordem de análise .

    
por 09.09.2009 / 23:16
1

Ou ....

unless File["${local_container}"] {
  file{ "${local_container}":
     ensure => directory,
  }
}

E fique de olho nessas citações e chaves ...

    
por 05.11.2014 / 23:19
-1

simplesmente,

file{ "$local_container":
  ensure => directory,
  replace => false,
}
    
por 03.06.2014 / 11:32

Tags