將 curl 轉換為 Ansible

curl2code 使用 uri 模組將 curl 指令轉換為 Ansible playbook 任務。轉換過程透過 WebAssembly 在您的瀏覽器中執行,確保完全隱私。若需 Python,請參考我們的 curl 轉 Python 轉換器。若需 PowerShell,請參閱 curl 轉 PowerShell。下方是實用的 Ansible 範例。

如何從瀏覽器複製 curl

  1. 1

    開啟開發者工具 (DevTools)

    按下 F12Ctrl+Shift+I 來開啟您的瀏覽器開發者工具。

  2. 2

    前往網路 (Network) 分頁

    點擊 Network 分頁,並執行觸發 HTTP 請求的操作。

  3. 3

    複製為 cURL

    右鍵點擊該請求 → CopyCopy as cURL。然後將其貼在上方。

常見問題解答

什麼是 Ansible uri 模組?

uri 模組是 Ansible 內建用於在劇本 (playbooks) 中發送 HTTP 請求的模組。它支援 GET、POST、PUT、DELETE,並具備 JSON 主體支援、驗證與狀態碼驗證功能。無需額外安裝 collection — 它是 ansible.builtin 的一部分。curl2code 使用 uri 模組生成 Ansible 任務 YAML。

uri 模組 vs get_url vs 使用 curl 的 command — 該使用哪一個?

uri 模組用於 API 呼叫 — 它會回傳解析後的 JSON 並驗證狀態。get_url 用於將檔案下載至磁碟。command: curl 是一種反模式 (anti-pattern) — 會失去冪等性 (idempotency) 與錯誤處理能力。與 HTTP API 互動時請務必優先選擇 uri。關於 Python 自動化,請參閱 curl 轉 Python

如何在 Ansible 中處理驗證?

對於 Bearer:headers: { Authorization: "Bearer {{ token }}" }。對於 Basic 驗證:使用 url_usernameurl_password 參數。使用 Ansible Vault 儲存密鑰:ansible-vault encrypt_string。uri 模組也支援 force_basic_auth: yes 進行預先驗證。

如何在 Ansible 中傳送表單資料?

對於 JSON 主體:body: {{ data | to_json }} 並設定 body_format: json。對於 form-urlencoded:body_format: form-urlencoded 並設定 body: key=value&key2=value2。Multipart 檔案上傳需要 community.general.uri 模組或自訂腳本。curl2code 會處理 -F 轉換。

如何在 Ansible HTTP 任務中處理錯誤?

使用 register: result 搭配 failed_when: result.status != 200 設定自訂失敗條件。使用 ignore_errors: yes 在失敗時繼續執行。uri 模組預設在非 2xx 時失敗 — 可使用 status_code: [200, 201, 404] 覆寫以接受多個狀態碼。

如何在 Ansible 中解析 JSON 回應?

當設定 return_content: yes 時,uri 模組會自動解析 JSON — 透過 result.json 存取。使用 Jinja2 篩選器:result.json.users | selectattr('active') | list。對於複雜轉換,請搭配篩選器使用 set_fact。註冊結果以便在後續任務中使用。

如何在 Ansible 中設定逾時與重試?

在 uri 任務上設定 timeout: 30 以秒為單位設定請求逾時。對於重試:使用 retries: 3 搭配 delay: 5until: result.status == 200。這是 Ansible 內建的重試迴圈模式 — 無需自訂腳本。適用於任何模組,不限於 uri。

如何在 Ansible uri 中使用代理伺服器 (Proxy)?

在任務上設定環境變數:environment: { http_proxy: "http://proxy:8080", https_proxy: "http://proxy:8080" }。或在 ansible.cfg 或 group_vars 中全域設定。uri 模組遵循標準代理環境變數。對於不使用代理的例外:no_proxy: "localhost,.internal"

如何在 Ansible 中發送帶有 JSON 主體的 POST 請求?

使用 curl2code 將類似 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 指令轉換為 Ansible。生成的程式碼使用 ansible.builtin.uri: url: '{'{ url }'}' method: POST body_format: json body: '{'{ data }'}'。curl2code 會自動偵測帶有 JSON 內容的 -d/--data 旗標,並在 uri 模組程式碼中設置適當的 Content-Type 標頭。

如何在 Ansible 中添加 Bearer 權杖授權?

curl -H "Authorization: Bearer YOUR_TOKEN" URL 傳遞給 curl2code,它會生成帶有授權標頭的 uri 模組程式碼:headers: Authorization: 'Bearer YOUR_TOKEN'。curl2code 會從 -H "Authorization: Bearer ..."--oauth2-bearer 旗標中偵測 Bearer 權杖。對於 Basic auth,請使用 -u user:pass

如何在 Ansible 中設置 Content-Type 標頭?

curl2code 將 curl -H "Content-Type: application/json" URL 轉換為帶有正確標頭的 uri 模組程式碼:body_format: json。對於 -d 數據,curl 預設為 application/x-www-form-urlencoded;對於 -F 表單上傳,它使用 multipart/form-data。curl2code 會將每一項映射到正確的 uri 模組 API。

實用連結

curl 指南

將 curl 轉換為其他語言