Может ли Puppet File Source быть из веб-сервиса?

10

Есть ли (простой) способ, позволяющий марионеткам использовать доступный в Интернете файл для свойства «Источник» файла?

например:

file { "/home/text.txt":
  source => [
    "http://www.example.com/text.txt",
  ]
}
gunwin
источник
Если вы цените целостность своих серверов, используйте хотя бы https. И используйте более надежный домен, потому что вы не знаете, кто может управлять этим ... ммм ... Это становится мрачнее отсюда.
mc0e

Ответы:

4

Я пишу обновленный ответ, чтобы уведомить будущих читателей, что теперь ресурс File действительно реализует источник HTTP.

Из документов :

источник

Исходный файл, который будет скопирован в локальную систему. Этот атрибут является взаимоисключающим с контентом и целью. Допустимые значения:

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

Таким образом, вы можете использовать конструкцию так, как написали:

file { "/home/text.txt":
  source => "http://www.example.com/text.txt",
}
dr_
источник
2
в кукольных версии 4.4.0 (через билет tickets.puppetlabs.com/browse/PUP-1072 )
KJH
4

Он запрашивался как функция в течение многих лет ... Но вам в конечном итоге понадобится пользовательская функция для этого ... или для использования curlили wget. Смотрите Кукольный Кузница .

Что в text.txt?

ewwhite
источник
txt.txt это просто пример. Я на самом деле хочу использовать его, чтобы вытащить клиентов Freeradius из системы администратора.
Gunwin
4

Сейчас это невозможно из коробки:

источник:

...

Доступные схемы 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'
}
Glueon
источник