2015-05-19 3 views
1

У меня есть команда curl, которая является запросом на мыло и с заголовками, такими как basic auth. Мне нужно реализовать этот завиток в рецепте шеф-повара для автоматизации. Поэтому каждый раз, когда я выполняю скрипт шеф-повара, я вижу, что этот завиток тоже выполняется. Пожалуйста, посоветуйте мне синтаксис добавления команды curl в скрипт шеф-повара.Как выполнить команду curl в рецепте шеф-повара?

+0

Что ваша конечная цель? Это противоречит мышлению идемпорядка. Вы хотите, чтобы для какой-то отчетности/мониторинга вашего шеф-повара? Вместо выполнения команды вы также можете использовать http-клиент Ruby. – StephenKing

+0

Правильный Стивен, рассматривая вызов внешнего REST API с помощью ruby ​​и обертывание его как ресурса Lightweight. Если, с другой стороны, ваш просто вызов внешней службы для установки некоторых данных узла и действительно хороший подход - это вызов службы 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 

есть этот пример здесь: https://docs.chef.io/resource_bash.html. Просто позвоните в команду curl. Имейте в виду, что это не настоящий поварский путь. Ресурс bash должен использоваться только в том случае, если другого выхода нет.

+1

Но следует избегать использования ресурса 'bash'. Как правило, есть «шеф-повар», чтобы делать что-то. – StephenKing

+1

@ StephenKing Вы совершенно правы. И почти всегда есть шеф-повар. – NaN

+1

В идеале вы могли бы добавить защитника, который помешал бы ему запустить КАЖДОЕ время (хотя я понимаю, что это то, что запросил ОП). Добавление полезного охранника, по крайней мере, приблизит его к «Шеф-повару». –

6

Не могли бы вы сделать это, используя ресурс http_request?

Что-то вроде:

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

Есть ли способ, я могу видеть, какая команда завитка рецепт шеф-повара побежал? – 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 это каталог, в котором Баш оболочка будет работать в.

Смежные вопросы