Puppet - pass variable com um comando file create

5

Eu preciso de uma maneira de passar uma determinada variável - digamos, a pesquisa - para vários arquivos diferentes dentro de uma determinada classe. Eu preciso ser capaz de indicar o conteúdo desta variável para cada arquivo individualmente.

Eu tentei o seguinte:

file { "xxx":
  thearch => "i386",
  path    => "/xxx/yyyy",
  owner   => root,
  group   => root,
  mode    => 644,
  content => template("module/test.erb"),
}

Isso não passa essa variável para que eu possa usá-la com uma tag <% = thearch% > declaração dentro do arquivo erb como eu esperava.

O que estou fazendo de errado aqui?

    
por Tim Brigham 05.06.2012 / 19:52

3 respostas

4

Você precisará agrupar o arquivo em uma definição que tenha esse parâmetro, para que fique disponível quando o modelo for chamado e, em seguida, chamar esse parâmetro. Se muitos dos parâmetros são geralmente os mesmos, defina-os como padrão enquanto você está nele apenas para manter o código limpo.

define thearch_file($thearch, $path, $owner = root, $group = root, $mode = 0644, $template = '/module/test.erb') {
  file { $name:
    path    => $path,
    owner   => $owner,
    group   => $group,
    mode    => $mode,
    content => template($template),
  }
}

thearch_file {
  "xxx":
    thearch => 'i386',
    path    => "/xxx/yyy";
  "yyy":
    thearch => 'x86_64',
    path    => "/xxx/zzz";
}
    
por 05.06.2012 / 23:40
1

Você não pode definir meta-parâmetros arbitrários para o recurso de arquivo como "thearch". Os únicos meta-parâmetros disponíveis são os aqui. Você pode usar o fato da arquitetura existente dos nós que pode lhe dar a funcionalidade que você deseja.

<%= architecture %>

ou talvez

<% if architecture == 'i386' then -%>
  do some stuff
<% end-%>
    
por 05.06.2012 / 20:44
1

Você não pode fazer isso. Argumentos para um recurso não são valores arbitrários. Você poderia fazer isso, no entanto:

thearch = "i386"
file { "xxx":
  path    => "/xxx/yyyy",
  owner   => root,
  group   => root,
  mode    => 644,
  content => template("module/test.erb"),
}
    
por 06.06.2012 / 00:20

Tags