Чи може джерело файлів ляльок отримати веб-сервіс?


10

Чи існує (простий) спосіб, щоб маріонетка використовувала файл, доступний в Інтернеті, для властивості Source у файлі?

наприклад:

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

Якщо ви цінуєте цілісність своїх серверів, принаймні використовуйте https. І використовуйте більш надійний домен, оскільки ви не знаєте, хто може контролювати цей ... гммм ... Звідси стає мукіше.
mc0e

Відповіді:


4

Я пишу оновлену відповідь, щоб повідомити майбутніх читачів, що тепер ресурс Файл справді реалізує джерело HTTP.

З документів :

джерело

Вихідний файл, який буде скопійовано на місце в локальній системі. Цей атрибут взаємовиключний із вмістом та ціллю. Дозволені значення:

  • маріонеткові: URI, які вказують на файли в модулях або точки монтажу сервера файлових файлів.
  • Повністю кваліфіковані шляхи до локально доступних файлів (включаючи файли на NFS-спільних ресурсах або на накопичених Windows дисках).
  • file: URI, які поводяться так само, як локальні шляхи до файлу.
  • http: URI, які вказують на файли, що обслуговуються загальними веб-серверами

Отже, ви можете використовувати конструкцію так, як ви її написали:

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


4

Його запитують як функцію протягом багатьох років ... Але вам для цього потрібна спеціальна функція ... або для використання curlабо wget. Дивіться Лялечна кузня .

Що в text.txt?


txt.txt - лише приклад. Я фактично хочу використовувати його, щоб витягнути клієнтів Freeradius з адміністративної системи.
gunwin

4

Зараз неможливо вийти з поля:

джерело:

...

Доступні схеми URI - це лялькові та файлові. Лялькові URI отримають файли з вбудованого файлового сервера Puppet

Я в кінцевому рахунку використовував, defineщо знайшов в Інтернеті:

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'
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.