Назад | Перейти на главную страницу

Может ли источник файла марионетки быть из веб-службы?

Есть ли (простой) способ заставить марионетку использовать файл, доступный в Интернете, для свойства 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",
}