puppet: fato em manifesto com ponto

1

Estou usando o fantoche 4.10.9 com o facter 3.6.8. Eu tenho uma pergunta (s) sobre o uso de fatos em um manifesto que vou pedir de uma forma simples e uma forma mais complexa. Primeiro, a pergunta simples.

Em um agente, posso ver os seguintes endereços:

facter --show-legacy | grep ipaddress
ipaddress => 192.168.25.75
ipaddress_enp0s3 => 10.0.2.15
ipaddress_enp0s8.25 => 192.168.25.75
ipaddress_lo => 127.0.0.1

Eu quero usar 'ipaddress_enp0s8.25' (uma interface vlan) em um manifesto. Sim, eu percebo que eu poderia usar 'ipaddress', mas por razões que explicarei mais tarde, eu gostaria de usar a interface vlan especificamente.

Quando tento usar essa referência de interface em um manifesto, recebo um erro de sintaxe:

   listenip => $ipaddress_enp0s8.25

Estas referências DO WORK, mas, novamente, eu quero usar a interface vlan especificamente:

   listenip => $ipaddress

   listenip => $networking['ip']

Então, como posso usar 'ipaddress_enp0s8.25'?

Aqui está o ângulo mais complexo e algum plano de fundo. Isso faz parte de um projeto maior que envolve a reciclagem (gire, termine) do mesmo ambiente com frequência. Tem havido uma atenção cuidadosa à forma como os nós se comportam como fazem o provisionamento inicial. Um dos primeiros problemas que notei foi:

'Evaluation Error: Operator '[]' is not applicable to an Undef Value.' 

Porque naquela época eu estava tentando usar:

$networking['interfaces']['enp0s8.25']['ip']

E isso não existe na execução inicial. Eu não consegui passar 'Carregando fatos'

Então eu decidi por '$ networking [' ip ']', que funciona bem. No entanto, na primeira execução, isso retorna 10.0.2.15. Em execuções subseqüentes, ele retorna o endereço desejado 192.168.25.75. O resultado é, geralmente, um nó operacional, mas um lapso de 30 minutos para determinados serviços.

O que eu posso usar aqui para que o endereço vlan desejado se torne o valor? Eu gostaria de testar 'ipaddress_enp0s8.25', mas não posso pelas razões mencionadas acima.

Um par de vários. itens a serem observados:

  • Estou criando essa interface vlan usando o módulo de rede de lâminas de barbear.
  • Consegui usar o 'ipaddress_enp0s8_25' sem problemas no boneco 3.8
por me2017 05.01.2018 / 22:18

1 resposta

1

O acesso aos fatos foi alterado na versão 4. Tente acessar o fato via $ facts hash, $ facts ['ipaddress_enp0s8.25'], em vez de usar uma variável de escopo superior.

Você ainda pode usar as variáveis de escopo superior para acessar os fatos, mas elas foram descontinuadas e você deve passar a usar o hash $ facts o mais rápido possível.

Nesse caso, parece que esse fato mudou de nome e esse é o problema que você está enfrentando. Na versão anterior, o nome do facetador era escapado com sublinhados, enquanto a versão mais recente tem períodos, que não podem ser escapados (até onde eu sei) ao acessar o fato usando uma variável top-scope, daí a necessidade de usar os fatos $ hash.

$ ipaddress_enp0s8.25 será interpolado incorretamente, pois o período precisaria ser ignorado.

$ facts ['ipaddress_enp0s8.25'] não será interpolado porque estamos acessando o elemento do hash com aspas simples.

Leia mais sobre como os fatos são usados no Puppet 4 aqui:

link

    
por 07.01.2018 / 23:07

Tags