Есть ли (простой) способ заставить марионетку использовать файл, доступный в Интернете, для свойства Source файла?
например:
file { "/home/text.txt":
source => [
"http://www.example.com/text.txt",
]
}
Прямо сейчас это невозможно:
источник:
...
Доступные схемы URI - марионетка и файл. URI Puppet будут получать файлы со встроенного файлового сервера 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'
}
Это было запрашивается как функция в течение многих лет ... Но в конечном итоге вам понадобится специальная функция для этого ... или для использования curl
или wget
. Видеть Марионеточная кузница.
Что в text.txt?
Я пишу обновленный ответ, чтобы уведомить будущих читателей о том, что теперь ресурс File действительно реализует источник HTTP.
Из документы:
источник
Исходный файл, который будет скопирован на место в локальной системе. Этот атрибут является взаимоисключающим с содержимым и целью. Допустимые значения:
- puppet: URI, которые указывают на файлы в модулях или точки монтирования файлового сервера Puppet.
- Полные пути к локально доступным файлам (включая файлы в общих папках NFS или подключенных к Windows дисках).
- file: URI, которые ведут себя так же, как локальные пути к файлам.
- http: URI, которые указывают на файлы, обслуживаемые общими веб-серверами.
Таким образом, вы можете использовать конструкцию в том виде, в котором вы ее написали:
file { "/home/text.txt":
source => "http://www.example.com/text.txt",
}