تبدیل curl به Ansible

curl2code دستورات curl را با استفاده از ماژول uri به تسک‌های Ansible playbook تبدیل می‌کند. این تبدیل برای حفظ حریم خصوصی کامل، در مرورگر شما از طریق WebAssembly انجام می‌شود. برای Python، مبدل curl به Python ما را بررسی کنید. برای PowerShell، curl به PowerShell را ببینید. در ادامه مثال‌های کاربردی Ansible آورده شده است.

نحوه کپی کردن curl از مرورگر

  1. 1

    باز کردن DevTools

    کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعه‌دهنده مرورگر باز شوند.

  2. 2

    رفتن به تب Network

    روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP می‌شود را انجام دهید.

  3. 3

    کپی به عنوان cURL

    روی درخواست راست‌کلیک کنید ← CopyCopy as cURL. سپس آن را در بالا جایگذاری کنید.

سوالات متداول

ماژول uri در Ansible چیست؟

ماژول uri ماژول داخلی Ansible برای ایجاد درخواست‌های HTTP در پلی‌بوک‌ها است. این ماژول متدهای GET، POST، PUT، DELETE را با پشتیبانی از بدنه JSON، احراز هویت و اعتبارسنجی کد وضعیت مدیریت می‌کند. نیازی به کالکشن اضافی نیست — بخشی از ansible.builtin است. curl2code کد YAML تسک Ansible را با استفاده از ماژول uri تولید می‌کند.

ماژول uri در مقابل get_url در مقابل دستور command با curl — از کدام استفاده کنیم؟

ماژول uri برای فراخوانی‌های API است — JSON پارس شده را برمی‌گرداند و وضعیت را تایید می‌کند. get_url برای دانلود فایل‌ها روی دیسک است. استفاده از command: curl یک ضد-الگو (anti-pattern) است — باعث از دست رفتن خاصیت idempotency و مدیریت خطا می‌شود. همیشه uri را برای تعاملات HTTP API ترجیح دهید. برای اتوماسیون پایتون، curl به 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. آپلود فایل‌های multipart به ماژول community.general.uri یا یک اسکریپت سفارشی نیاز دارد. curl2code تبدیل‌های -F را مدیریت می‌کند.

چگونه خطاها را در تسک‌های HTTP در Ansible مدیریت کنیم؟

از register: result همراه با failed_when: result.status != 200 برای شرایط شکست سفارشی استفاده کنید. از ignore_errors: yes برای ادامه کار در صورت شکست استفاده کنید. ماژول uri به طور پیش‌فرض در پاسخ‌های غیر 2xx شکست می‌خورد — با status_code: [200, 201, 404] آن را بازنویسی کنید تا چندین کد وضعیت را بپذیرد.

چگونه پاسخ‌های JSON را در Ansible پارس کنیم؟

ماژول uri زمانی که return_content: yes تنظیم شده باشد، به طور خودکار JSON را پارس می‌کند — از طریق result.json به آن دسترسی پیدا کنید. از فیلترهای Jinja2 استفاده کنید: result.json.users | selectattr('active') | list. برای تغییرات پیچیده، از set_fact با فیلترها استفاده کنید. نتایج را برای استفاده در تسک‌های بعدی ثبت (register) کنید.

چگونه تایم‌اوت‌ها و تلاش‌های مجدد را در Ansible تنظیم کنیم؟

مقدار timeout: 30 را در تسک uri برای تایم‌اوت درخواست به ثانیه تنظیم کنید. برای تلاش مجدد: از 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: no_proxy: "localhost,.internal".

چگونه یک درخواست POST با بدنه JSON در Ansible ارسال کنیم؟

یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به Ansible تبدیل کنید. کد تولید شده از ansible.builtin.uri: url: '{'{ url }'}' method: POST body_format: json body: '{'{ data }'}' استفاده می‌کند. curl2code به طور خودکار فلگ‌های -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد ماژول uri تنظیم می‌کند.

چگونه احراز هویت با Bearer token را در Ansible اضافه کنیم؟

دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد ماژول uri را با هدر احراز هویت تولید کند: headers: Authorization: 'Bearer YOUR_TOKEN'. curl2code توکن‌های Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص می‌دهد. برای Basic auth، از -u user:pass استفاده کنید.

چگونه هدر Content-Type را در Ansible تنظیم کنیم؟

curl2code دستور curl -H "Content-Type: application/json" URL را به کد ماژول uri با هدر مناسب تبدیل می‌کند: body_format: json. برای داده‌های -d، دستور curl به طور پیش‌فرض از application/x-www-form-urlencoded استفاده می‌کند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده می‌کند. curl2code هر کدام را به API صحیح ماژول uri نگاشت می‌کند.

لینک‌های مفید

راهنماهای curl

تبدیل curl به زبان‌های دیگر