O Puppet File Source pode ser de um serviço da web?

10

Existe uma maneira (simples) de fazer com que o fantoche use um arquivo disponível na internet para a propriedade Source de um arquivo?

por exemplo:

file { "/home/text.txt":
  source => [
    "http://www.example.com/text.txt",
  ]
}
gunwin
fonte
Se você valoriza a integridade de seus servidores, use pelo menos https. E use um domínio mais confiável, porque você não sabe quem pode estar controlando esse ... hummm ... fica mais obscuro daqui.
Mc0e 27/10/2014

Respostas:

4

Estou escrevendo uma resposta atualizada para notificar futuros leitores que agora o recurso File realmente implementa a fonte HTTP.

Dos documentos :

fonte

Um arquivo de origem, que será copiado no local no sistema local. Este atributo é mutuamente exclusivo com conteúdo e destino. Os valores permitidos são:

  • puppet: URIs, que apontam para arquivos em módulos ou pontos de montagem do servidor de arquivos Puppet.
  • Caminhos totalmente qualificados para arquivos disponíveis localmente (incluindo arquivos em compartilhamentos NFS ou unidades mapeadas do Windows).
  • file: URIs, que se comportam da mesma maneira que os caminhos de arquivos locais.
  • http: URIs, que apontam para arquivos servidos por servidores da web comuns

Então você pode usar a construção como a escreveu:

file { "/home/text.txt":
  source => "http://www.example.com/text.txt",
}
dr_
fonte
2
a partir do Puppet versão 4.4.0 (via ticket tickets.puppetlabs.com/browse/PUP-1072 )
KJH
4

Ele é solicitado como um recurso há anos ... Mas você acabaria precisando de uma função personalizada para isso ... ou para usar curlou wget. Veja Puppet Forge .

O que há no text.txt?

ewwhite
fonte
txt.txt é apenas um exemplo. Na verdade, eu quero usá-lo para extrair clientes Freeradius de um sistema administrativo.
gunwin
4

Não é possível imediatamente:

fonte:

...

Os esquemas de URI disponíveis são fantoches e arquivos. Os URIs do Puppet recuperam arquivos do servidor de arquivos interno do Puppet

Acabei usando o defineque encontrei na internet:

define remote_file($remote_location=undef, $mode='0644'){
  exec{ "retrieve_${title}":
    command => "/usr/bin/wget -q ${remote_location} -O ${title}",
    creates => $title,
  }

  file{$title:
    mode    => $mode,
    require => Exec["retrieve_${title}"],
  }
}

remote_file{'/home/text.txt':
  remote_location => 'http://www.example.com/text.txt'
}
Glueon
fonte