¿Puede Puppet File Source provenir de un servicio web?

10

¿Hay una manera (simple) de hacer que Puppet use un archivo disponible en Internet para la propiedad Source de un archivo?

p.ej:

file { "/home/text.txt":
  source => [
    "http://www.example.com/text.txt",
  ]
}
gunwin
fuente
Si valora la integridad de sus servidores, al menos use https. Y usa un dominio más confiable porque no sabes quién podría estar controlando ese ... ummm ... Se pone más oscuro desde aquí.
mc0e

Respuestas:

4

Estoy escribiendo una respuesta actualizada para notificar a los futuros lectores que ahora el recurso File implementa la fuente HTTP.

De los documentos :

fuente

Un archivo fuente, que se copiará en su lugar en el sistema local. Este atributo es mutuamente exclusivo con contenido y destino. Los valores permitidos son:

  • puppet: URI, que apuntan a archivos en módulos o puntos de montaje del servidor de archivos Puppet.
  • Rutas totalmente calificadas a archivos disponibles localmente (incluidos archivos en recursos compartidos NFS o unidades mapeadas de Windows).
  • file: URI, que se comportan igual que las rutas de archivos locales.
  • http: URI, que apuntan a archivos servidos por servidores web comunes

Entonces puede usar la construcción tal como la escribió:

file { "/home/text.txt":
  source => "http://www.example.com/text.txt",
}
Dr_
fuente
2
a partir de la versión 4.4.0 de Puppet (a través de ticket tickets.puppetlabs.com/browse/PUP-1072 )
KJH
4

Se ha solicitado como característica durante años ... Pero terminaría necesitando una función personalizada para esto ... o para usar curlo wget. Ver Forja de marionetas .

¿Qué hay en text.txt?

ewwhite
fuente
txt.txt es solo un ejemplo. De hecho, quiero usarlo para extraer clientes de Freeradius de un sistema de administración.
gunwin
4

No es posible salir de la caja en este momento:

fuente:

...

Los esquemas de URI disponibles son títeres y archivos. Los URI de Puppet recuperarán archivos del servidor de archivos integrado de Puppet

Terminé usando lo defineque encontré en 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
fuente