Kukla Dosya Kaynağı bir web hizmetinden olabilir mi?


10

Kukla'nın bir dosyanın Source özelliği için internette bulunan bir dosyayı kullanmasının (basit) bir yolu var mı?

Örneğin:

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

Sunucularınızın bütünlüğüne değer veriyorsanız, en azından https kullanın. Ve daha güvenilir bir alan kullanın çünkü onu kimin kontrol ettiğini bilmiyorsunuz ... hmm ... Buradan daha karanlık oluyor.
mc0e

Yanıtlar:


4

Gelecekteki okuyuculara şimdi Dosya kaynağının gerçekten HTTP kaynağını uyguladığını bildirmek için güncelleştirilmiş bir yanıt yazıyorum.

Gönderen docs :

kaynak

Yerel sistemdeki yerine kopyalanacak bir kaynak dosyası. Bu özellik içerik ve hedefle karşılıklı olarak münhasırdır. İzin verilen değerler:

  • kukla: Modüllerdeki dosyalara veya Kukla dosya sunucusu bağlama noktalarına işaret eden URI'ler.
  • Yerel olarak kullanılabilir dosyalar için tam nitelikli yollar (NFS paylaşımları veya Windows eşlenmiş sürücülerdeki dosyalar dahil).
  • dosya: Yerel dosya yollarıyla aynı şekilde davranan URI'ler.
  • http: URI'ler, yaygın web sunucuları tarafından sunulan dosyalara işaret eder

Böylece yapıyı yazdığınız gibi kullanabilirsiniz:

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

2
Kukla sürümü 4.4.0 itibariyle (bilet aracılığıyla tickets.puppetlabs.com/browse/PUP-1072 )
kjh

4

Bu oldu bir özellik olarak istenen yıllarca ... Ama bunun için özel bir işlev gerek bitirmek istiyorum ... ya kullanmak curlya wget. Bkz. Kukla Dövmesi .

Text.txt dosyasında neler var?


txt.txt sadece bir örnektir. Aslında Freeradius istemcilerini bir yönetici sisteminden çekmek için kullanmak istiyorum.
gunwin

4

Şu an kutudan çıkması mümkün değil:

kaynak:

...

Kullanılabilir URI şemaları kukla ve dosyadır. Kukla URI'leri, dosyaları Kukla'nın yerleşik dosya sunucusundan alır

Ben defineinternette buldum kullanarak sona erdi :

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'
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.