curl を Ansible に変換
curl2code は、uri モジュールを使用して curl コマンドを Ansible プレイブックのタスクに変換します。変換は完全なプライバシー保護のため、WebAssembly を介してブラウザ内で実行されます。Python については、curl to Python 変換ツールをご確認ください。PowerShell については、curl to PowerShell をご覧ください。以下に、実用的な Ansible の例を示します。
ブラウザから curl をコピーする方法
- 1
デベロッパーツールを開く
F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。
- 2
ネットワークタブに移動
ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。
- 3
cURL としてコピー
リクエストを右クリック → コピー → cURL としてコピー を選択します。その後、上に貼り付けてください。
よくある質問
Ansible uri モジュールとは何ですか?
uri モジュールは、プレイブック内で HTTP リクエストを行うための Ansible 組み込みモジュールです。JSON ボディのサポート、認証、ステータスコードの検証を備えた GET、POST、PUT、DELETE を処理します。追加のコレクションは不要で、ansible.builtin の一部です。curl2code は、uri モジュールを使用した Ansible タスクの YAML を生成します。
uri モジュール、get_url、curl を使った command のどれを使うべきですか?
uri モジュールは API 呼び出し用です。解析された JSON を返し、ステータスを検証します。get_url はファイルをディスクにダウンロードするためのものです。command: curl はアンチパターンであり、べき等性とエラー処理が失われます。HTTP API とのやり取りには常に uri を優先してください。Python による自動化については、curl to Python を参照してください。
Ansible で認証を処理するにはどうすればよいですか?
Bearer 認証の場合:headers: { Authorization: "Bearer {{ token }}" }。Basic 認証の場合:url_username および url_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。マルチパートのファイルアップロードには 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 レスポンスを解析するにはどうすればよいですか?
uri モジュールは return_content: yes が設定されている場合、JSON を自動的に解析します。result.json 経由でアクセスしてください。Jinja2 フィルタを使用します:result.json.users | selectattr('active') | list。複雑な変換には、フィルタを備えた set_fact を使用します。結果を登録して、後続のタスクで使用します。
Ansible でタイムアウトとリトライを設定するにはどうすればよいですか?
リクエストのタイムアウト(秒)には、uri タスクに timeout: 30 を設定します。リトライには、retries: 3、delay: 5、および until: result.status == 200 を使用します。これは Ansible 組み込みのリトライループパターンであり、カスタムスクリプトは不要です。uri だけでなく、どのモジュールでも機能します。
Ansible uri でプロキシを使用するにはどうすればよいですか?
タスクに環境を設定します: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に渡すと、認証ヘッダーheaders: Authorization: 'Bearer YOUR_TOKEN'を含むuriモジュールのコードが生成されます。curl2codeは-H "Authorization: Bearer ..."と--oauth2-bearerフラグの両方からBearerトークンを検出します。Basic authの場合は、-u user:passを使用してください。
AnsibleでContent-Typeヘッダーを設定する方法は?
curl2codeはcurl -H "Content-Type: application/json" URLを、適切なヘッダーbody_format: jsonを含むuriモジュールのコードに変換します。-dデータの場合、curlはデフォルトでapplication/x-www-form-urlencodedを使用し、-Fフォームアップロードの場合はmultipart/form-dataを使用します。curl2codeはそれぞれを正しいuriモジュール APIにマッピングします。