Migrando para o Puppet 4.5.2

1

Estamos migrando para versões posteriores do fantoche.

Nova versão:

# puppet --version
4.5.2

Versão existente:

#puppet-3.8.7

Nosso site.pp existente é o seguinte:

#A default site.pp to do a quick test run
import "../classes/*"
import "../nodes/*"
   file { 'testfile':
       path => '/home/test/testfile',
       ensure => present,
       mode => 0755,
       content => "A test file to check a different manifestdir" ,
      }
 Exec { path => ["/bin" , "/sbini/", "/usr/bin" , "/usr/sbin/"]  }

Agora, como estamos migrando para Puppet 4 , acho que a função abaixo de importar para incluir vários arquivos pp não funcionará aqui em Puppet 4

import "../classes/*"
import "../nodes/*" 

Se eu não estiver errado, então eu posso copiar todos os manifestos no diretório classes e nós para o diretório de manifesto abaixo

/apps/puppetlabs/code/environments/production/manifests/site.pp          

Por favor, sugira como atualizar os manifestos para as versões posteriores do Puppet ou não há problemas de compatibilidade?

    
por Zama Ques 18.07.2016 / 08:07

2 respostas

3

If I am not wrong then I can copy all manifests under classes and nodes directory to the below manifest directory

Sim, o diretório de manifesto será importado recursivamente , então esta é a melhor coisa a fazer.

Please suggest how to update the manifests to the later versions of Puppet or there is no compatibility issues ?

Há muitas mudanças sutis, portanto teste seus manifestos no Puppet 3 com o analisador futuro ( --parser future ) para ver como eles funcionam bem.

Comece com o Puppet 3.x para 4.x: obtenha o upgrade pronto , libere notas e depreciações do Puppet 3.8 .

    
por 18.07.2016 / 09:24
0

A seguir estão as mudanças que eu tive que realizar para migrar o código de Puppet para Puppet 4.

  • O uso da função de importação foi preterido.

Código do Fantoche 3:

Meu site.pp estava usando a função de importação para chamar outros manifestos, conforme mostrado abaixo

 import "../classes/*"
 import "../nodes/*"

Código do Fantoche 4:

Diretório de nós e classes copiados para o diretório manifests, conforme especificado pelo 'manifesto de impressão da configuração do fantoche'

  # puppet config print manifest
   /etc/puppetlabs/code/environments/production/manifests

  # ls /etc/puppetlabs/code/environments/production/manifests
    classes nodes 

Não há requisito para site.pp no meu caso, pois estamos tendo manifestos para vários nós. Colocar classes e nós no diretório manifests levará o puppet a ler cada nó do manifesto de nó recursivamente

  • Alteração de sintaxe ao escrever modelos de marionetes

    Código do Fantoche 3:

    <%= ipaddress %> dev.example.com

    Estava vendo o seguinte erro ao se inscrever no Puppet 4

    Call, Failed to parse template /etc/puppet/templates/Node-002/hosts.erb: Filepath: /etc/puppet/templates/Node-002/hosts.erb: Line: 1 Detail: undefined local variable or method 'ipaddress' for #<Puppet::Parser::TemplateWrapper:0x007ffa98fb55c8>

    Código do Fantoche 4:

O código foi atualizado da seguinte maneira e depois disso os manifestos foram sendo aplicados bem% <%= @ipaddress %> node-002.example.com

- Representação do valor do atributo numérico

Código do Fantoche 3:

 ' file { "/etc/sudoers":
     path => "/etc/sudoers",
     ...
     mode => 440,
    }    '

Isso estava falhando com o erro abaixo

     'Error: Failed to apply catalog: Parameter mode failed on File[/etc/sudoers]: The file mode specification must be a string, not 'Fixnum' at /etc/puppetlabs/code/environments/production/manifests/classes/user_default.pp:7'

Código do Puppet 4: A correção era colocar o valor do modo entre aspas

   'file { "/etc/sudoers":
     path => "/etc/sudoers",
     ...
     mode => "440",
    }      ' 

Estes são os principais problemas que enfrentei ao migrar para o Puppet 4. Depois disso, a migração foi suave.

    
por 29.07.2016 / 08:47