2015-05-19 69 views
1

我有一個curl命令,它是肥皂請求,並帶有基本身份驗證。爲了自動化,我需要在Chef食譜中實現這個curl。所以每次我執行主廚腳本時,我都會看到這個curl被執行。 請給我一個在廚師腳本中添加curl命令的語法。 https://docs.chef.io/resource_bash.html如何在廚師食譜中執行curl命令?

+0

什麼是你的終極目標是什麼?這與冥想思維相矛盾。你想爲某種報道/監測你的廚師跑嗎?您可以使用Ruby的http客戶端來代替執行命令。 – StephenKing

+0

正確的Stephen,考慮使用ruby調用外部REST API並將其作爲輕量級資源進行包裝。另一方面,如果您只是調用外部服務來設置一些節點數據,並且真的很好的方法是將REST服務稱爲ohai插件。許多選項更詳細可以提供更好的建議。 –

回答

4

您可以在廚師配方

bash 'install_something' do 
    user 'root' 
    cwd '/tmp' 
    code <<-EOH 
    wget http://www.example.com/tarball.tar.gz 
    tar -zxf tarball.tar.gz 
    cd tarball 
    ./configure 
    make 
    make install 
    EOH 
end 

有從這裏這個例子中使用bash命令。只要叫你curl命令。請記住,這不是真正的廚師的方式。只有在沒有其他轉義的情況下才能使用bash資源。

+1

但應避免使用'bash'資源。通常,有一種「廚師的方式」來做事情。 – StephenKing

+1

@StephenKing你是完全正確的。而且幾乎總是有一個廚師的方式。 – NaN

+1

理想情況下,你可以添加一個防範,防止它每次運行(儘管我意識到這是OP所要求的)。增加一名有用的後衛至少會讓他更接近「廚師之路」。 –

6

難道你不使用http_request資源來做這個嗎?

喜歡的東西:

http_request 'SOAP request' do 
    url "http://www.example.com/example" 
    message <xml request> 
    action :post 
end 
+0

有沒有辦法,我可以看到廚師食譜運行的是什麼curl命令? – inquisitive

0

一個簡單command應該工作,與此類似。

command "curl -m 5 -i -X POST -d \"payload={}\" http://www.some.place/here" 

查看卷頁的手冊頁以查看如何添加http標頭。

0

您也可以使用bash資源。例如

bash 'make curl request' do 
    cwd ::File.dirname(src_filepath) 
    code <<-EOH 
    curl -L https://github.com 
    EOH 
end 

cwd在目錄中的bash shell中會在運行。