Não parece haver uma maneira completa de impedir que Package <| |>
realizem recursos. Esta poderia ser uma solução parcial:
@package { 'nginx':
ensure => present,
tag => optional,
require => Exec['apt-get update'],
}
Exec['apt-get update'] -> Package <| tag != optional |>
Você teria que definir os requisitos para cada pacote virtual, então.
O problema subjacente pode ser resolvido, no entanto, usando Run Stages:
class update-apt {
exec { 'apt-get update': path => '/usr/bin' }
}
stage { 'first': before => Stage['main'] }
class {'update-apt':
stage => 'first',
}
Todas as classes e recursos são executados no Palco principal por padrão, portanto Exec['apt-get update']
é sempre executado antes de quaisquer recursos do Pacote.