Bisakah Sumber File Wayang berasal dari layanan web?

10

Apakah ada cara (sederhana) untuk membuat boneka menggunakan file yang tersedia di internet untuk properti Sumber dari File?

misalnya:

file { "/home/text.txt":
  source => [
    "http://www.example.com/text.txt",
  ]
}
gunwin
sumber
Jika Anda menghargai integritas server Anda, setidaknya gunakan https. Dan gunakan domain yang lebih tepercaya karena Anda tidak tahu siapa yang mengendalikan itu ... ummm ... Semakin suram dari sini.
mc0e

Jawaban:

4

Saya menulis jawaban yang diperbarui untuk memberi tahu pembaca di masa mendatang bahwa sekarang sumber daya File memang mengimplementasikan sumber HTTP.

Dari dokumen :

sumber

File sumber, yang akan disalin ke tempatnya di sistem lokal. Atribut ini saling eksklusif dengan konten dan target. Nilai yang diizinkan adalah:

  • wayang: URI, yang menunjuk ke file dalam modul atau titik mount server file wayang.
  • Jalur yang sepenuhnya memenuhi syarat untuk file yang tersedia secara lokal (termasuk file pada NFS yang dibagikan atau drive yang dipetakan Windows).
  • file: URI, yang berperilaku sama dengan jalur file lokal.
  • http: URI, yang menunjuk ke file yang dilayani oleh server web umum

Jadi, Anda dapat menggunakan konstruk seperti yang Anda tulis:

file { "/home/text.txt":
  source => "http://www.example.com/text.txt",
}
dr_
sumber
2
per Wayang versi 4.4.0 (via ticket tickets.puppetlabs.com/browse/PUP-1072 )
KJH
4

Sudah diminta sebagai fitur selama bertahun-tahun ... Tapi Anda akhirnya membutuhkan fungsi khusus untuk ini ... atau untuk menggunakan curlatau wget. Lihat Wayang Tempa .

Apa yang ada di text.txt?

putih
sumber
txt.txt hanyalah sebuah contoh. Saya sebenarnya ingin menggunakannya untuk menarik klien Freeradius dari sistem admin.
gunwin
4

Itu tidak mungkin di luar kotak sekarang:

sumber:

...

Skema URI yang tersedia adalah boneka dan file. URI boneka akan mengambil file dari server file yang ada di Puppet

Saya akhirnya menggunakan yang definesaya temukan di 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
sumber