Puppet File Source può provenire da un servizio Web?


10

Esiste un modo (semplice) per fare in modo che le marionette utilizzino un file disponibile su Internet per la proprietà Source di un file?

per esempio:

file { "/home/text.txt":
  source => [
    "http://www.example.com/text.txt",
  ]
}

Se apprezzi l'integrità dei tuoi server, usa almeno https. E usa un dominio più affidabile perché non sai chi potrebbe controllare quello ... ummm ... Da qui diventa più oscuro.
MC0e,

Risposte:


4

Sto scrivendo una risposta aggiornata per informare i futuri lettori che ora la risorsa File implementa effettivamente l'origine HTTP.

Dai documenti :

fonte

Un file di origine, che verrà copiato in posizione sul sistema locale. Questo attributo si esclude a vicenda con contenuto e target. I valori consentiti sono:

  • burattino: URI, che puntano a file nei moduli o punti di montaggio del file server Puppet.
  • Percorsi completamente qualificati per i file disponibili localmente (inclusi i file su condivisioni NFS o unità mappate Windows).
  • file: URI, che si comportano allo stesso modo dei percorsi di file locali.
  • http: URI, che puntano a file serviti da server Web comuni

Quindi puoi usare il costrutto mentre lo scrivevi:

file { "/home/text.txt":
  source => "http://www.example.com/text.txt",
}

2
a partire dalla versione 4.4.0 di Puppet (tramite ticket ticket.puppetlabs.com/browse/PUP-1072 )
KJH

4

È stato richiesto come funzionalità per anni ... Ma alla fine avresti bisogno di una funzione personalizzata per questo ... o per usare curlo wget. Vedi Puppet Forge .

Cosa c'è in text.txt?


txt.txt è solo un esempio. In realtà voglio usarlo per estrarre i client Freeradius da un sistema di amministrazione.
Gunwin,

4

In questo momento non è possibile:

fonte:

...

Gli schemi URI disponibili sono pupazzo e file. Gli URI Puppet recupereranno i file dal file server integrato di Puppet

Ho finito per usare defineho trovato su 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'
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.