2015-06-11 1 views
0

У меня есть сценарий шеф-повара, который хочет прочитать значение файла.Chef script - читать содержимое файла для использования в http _request

http_request "create repo" do 

    action :post 

    url "http://chef.sparqlr.net:8080/openrdf-sesame/repositories/SYSTEM/statements?context=%3Curn:x-local:graph1%3E&baseURI=%3Curn:x-local:graph1%3E" 

    headers "Content-Type" => "application/x-trig" 

    message *<Read in content for a file>* 

end 

Я хотел бы послать сообщение, исходящее из файла, может ли кто-нибудь сообщить, какой синтаксис должен быть? Я попробовал несколько вариантов, с ruby ​​block и т. Д., Но не повезло. Большое спасибо!

+0

ли файл для сообщения уже присутствует на узле или он развернут с помощью шефа тоже? (ответ может меняться в зависимости от этой точки) – Tensibai

+0

Файл, уже присутствующий на узле, спасибо – JoyceC

+0

'http_request' - очень сложная оболочка Net :: HTTP, и я не уверен, действительно ли вы хотите его использовать. Как насчет просто использования ruby_block и стандартного ruby ​​'Net :: HTTP'? Держите его простым и не полагайтесь на слишком много магии. – Roland

ответ

1
http_request "create repo" do 
    action :post 
    url "http://chef.sparqlr.net:8080/openrdf-sesame/repositories/SYSTEM/statements?context=%3Curn:x-local:graph1%3E&baseURI=%3Curn:x-local:graph1%3E" 
    headers "Content-Type" => "application/x-trig" 

    message ::File.read("/path/to/file") 
end 

Вы можете использовать стандартные классы рубина, чтобы прочитать файл, но, как шеф-повар имеет собственный класс File вы ВГ префикса с :: использовать класс рубина, а не повар один.

В случае, если исходный файл развернут через шеф-повар, вы можете обернуть File.read в ленивом блоке, чтобы он выполнялся только при вызове провайдера.

Пример:

template "/path/to/file" do 
    source "file.erb" 
end 

http_request "create repo" do 
    action :post 
    url "http://chef.sparqlr.net:8080/openrdf-sesame/repositories/SYSTEM/statements?context=%3Curn:x-local:graph1%3E&baseURI=%3Curn:x-local:graph1%3E" 
    headers "Content-Type" => "application/x-trig" 

    message lazy { ::File.read("/path/to/file") } 
end 
Смежные вопросы