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

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

например:

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

3 ответа

Решение

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

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

источник

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

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

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

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?

Другие вопросы по тегам