Чи існує (простий) спосіб, щоб маріонетка використовувала файл, доступний в Інтернеті, для властивості Source у файлі?
наприклад:
file { "/home/text.txt":
source => [
"http://www.example.com/text.txt",
]
}
Чи існує (простий) спосіб, щоб маріонетка використовувала файл, доступний в Інтернеті, для властивості Source у файлі?
наприклад:
file { "/home/text.txt":
source => [
"http://www.example.com/text.txt",
]
}
Відповіді:
Я пишу оновлену відповідь, щоб повідомити майбутніх читачів, що тепер ресурс Файл справді реалізує джерело HTTP.
З документів :
джерело
Вихідний файл, який буде скопійовано на місце в локальній системі. Цей атрибут взаємовиключний із вмістом та ціллю. Дозволені значення:
- маріонеткові: URI, які вказують на файли в модулях або точки монтажу сервера файлових файлів.
- Повністю кваліфіковані шляхи до локально доступних файлів (включаючи файли на NFS-спільних ресурсах або на накопичених Windows дисках).
- file: URI, які поводяться так само, як локальні шляхи до файлу.
- http: URI, які вказують на файли, що обслуговуються загальними веб-серверами
Отже, ви можете використовувати конструкцію так, як ви її написали:
file { "/home/text.txt":
source => "http://www.example.com/text.txt",
}
Його запитують як функцію протягом багатьох років ... Але вам для цього потрібна спеціальна функція ... або для використання curl
або wget
. Дивіться Лялечна кузня .
Що в text.txt?
Зараз неможливо вийти з поля:
джерело:
...
Доступні схеми 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'
}