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",
  ]
}

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",
}

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?


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'
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.