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.