You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定cURL请求转换为Chef Recipe中的http_request资源?

转换cURL到Chef http_request资源方案

当然可以帮你把这个cURL请求转换成更简洁的Chef http_request资源!咱们直接看实现代码,再拆解细节:

完整Recipe代码

# 引入multipart上传所需的依赖库
require 'net/http/post/multipart'

http_request 'restore_sonarqube_quality_profile' do
  url "#{node['sonarqube']['rest_uri']}/qualityprofiles/restore"
  action :post
  basic_auth 'admin', 'admin'
  
  body do
    # 构建multipart表单,对应curl的-F参数
    Net::HTTP::MultipartPost.new(
      URI.parse(url),
      'backup' => UploadIO.new('/tmp/backup2.xml', 'application/xml', 'backup2.xml')
    ).body
  end
end

代码细节说明

  • 请求方法与认证:action :post对应cURL的-X POST,basic_auth 'admin', 'admin'直接实现-u admin:admin的基础认证,比手动构造header更简洁。
  • 文件上传处理:通过UploadIO包装Vagrant虚拟机里的/tmp/backup2.xml文件,指定MIME类型为application/xml,完美对应cURL中-F backup=@'/tmp/backup2.xml'的表单上传逻辑。
  • URL参数:这里假设你把SonarQube的REST URI存在Chef节点属性node['sonarqube']['rest_uri']中,你可以根据自己的变量替换规则调整这部分。

额外注意事项

  • 确保Chef运行用户(通常是root)对/tmp/backup2.xml有读取权限。
  • 如果需要调试对应cURL的-v verbose输出,可以用chef-client -l debug运行,Chef会打印请求的详细日志。

内容的提问来源于stack exchange,提问作者Gaurav Ojha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:56:14