بروكسي SOCKS في Ansible: أي جهاز يملك localhost؟
حدِّد العملية التي تُجري طلب واجهة Ansible البرمجية قبل توجيهها إلى مستمع SSH SOCKS على loopback.
يجب أن تعمل المهمة التي تستخدم socks5h://127.0.0.1:65432 في بيئة الشبكة التي يوجد فيها ذلك المستمع. فالأنفاق العامل من وحدة التحكم لا يجعله متاحًا عند عنوان loopback الخاص بمضيف مُدار — أو داخل حاوية تنفيذ.
بالنسبة للمهمة الفاشلة، أثبِت أربع حقائق:
- المضيف أو الحاوية التي تنفّذ طلب الشبكة.
- المستخدم الفعّال ومفسّر Python لديها.
- مكتبة HTTP أو SDK الخاصة بالوحدة.
- العنوان الذي يمكن أن تصل منه تلك العملية إلى مستمع SOCKS.
هدف الجرد في المسرحية وحده لا يجيب عن السؤال الأول. فالوحدات تستخدم اتصالها المُهيأ، ويمكن للتفويض أن ينقل التنفيذ، ويمكن للاتصال المحلي أن يبقي العمل على وحدة التحكم. أما عمليات البحث على جانب وحدة التحكم فتجري خارج الوحدة البعيدة كليًا.
في مهمة صورة OpenStack، افحص متطلبات مجموعة openstack.cloud المثبَّتة وبيئة OpenStack SDK الخاصة بها. نجاح curl في مكان آخر لا يثبت قدرات SOCKS لذلك الـSDK ولا تبعياته.
إذا كانت عملية الـAPI مقصودة للعمل محليًا، فاجعل خيار التنفيذ هذا صريحًا ووفّر الإعداد هناك. وإذا كانت تعمل عن بُعد، فاختر بروكسي يمكن الوصول إليه من ذلك السياق. إن environment: الخاص بمهمة Ansible يؤثر على عملية المهمة؛ لكنه لا يعيد تهيئة كل بحث أو إضافة، ولا يزال الـSDK بحاجة إلى دعم المخطط في بيئة Python تلك.
أبقِ المسارين منفصلين: SSH أو ProxyJump ينقل Ansible إلى مضيف، بينما عميل HTTP في الوحدة ينقل من سياق تنفيذه إلى الـAPI. المسار الأول العامل لا يهيئ الثاني. كما أن كشف مستمع موجود على وحدة التحكم فقط لحل مشكلة الوصول يغيّر أيضًا من يمكنه الوصول إليه، لذا فهو خيار نشر لا تصحيح عنوان.