O recurso exec do Puppet tem um atributo environment. Coloque os valores do proxy no recurso que invoca o descarregador:

file { '/var/cache/myapp':
  ensure => directory,
}

exec { 'fetch-artifact':
  provider    => shell,
  command     => '/usr/bin/wget --tries=1 --timeout=20 -O /var/cache/myapp/artifact.part https://downloads.example.net/artifact-v1.bin && /usr/bin/mv /var/cache/myapp/artifact.part /var/cache/myapp/artifact-v1.bin',
  environment => [
    'http_proxy=http://proxy.example.net:8080',
    'https_proxy=http://proxy.example.net:8080',
  ],
  creates     => '/var/cache/myapp/artifact-v1.bin',
  require     => File['/var/cache/myapp'],
}

O exemplo pressupõe o Wget e o mv nesses caminhos. Uma transferência falhada deixa o nome de caminho temporário; o nome definitivo só é instalado depois de o Wget ter êxito. A proteção creates ignora então as execuções seguintes enquanto existir o ficheiro versionado concluído.

A matriz de ambiente fornece valores quando o Puppet executa este comando. Uma entrada HTTP da lista de proxies HTTP pode fornecer o URL do proxy para um download autorizado de um artefacto público quando o Wget não tem credenciais de proxy configuradas nem guardadas. Uma exportação realizada por outro recurso exec só é válida nesse outro processo e nos seus descendentes. Ordenar dois recursos não torna o ambiente de shell do primeiro persistente no segundo.

Mantenha o ambiente deste recurso junto do recurso. Outras operações do Puppet podem usar as suas próprias rotas configuradas sem alterar o ficheiro de arranque do Wget de toda a máquina.

Artigos relacionados