Fabric: لا يتم تحميل مفاتيح roledefs الإضافية التي تتجاوز "المضيفين" في env

تم إنشاؤها على ١٣ فبراير ٢٠١٥  ·  7تعليقات  ·  مصدر: fabric/fabric

هذا المقتطف من المستندات لا يجعل مثال المفاتيح "foo" متاحًا للمستخدم عبر env ، فقط مفتاح "hosts" يتم تحميله لاحقًا بواسطة Fabric (في env.hosts)

from fabric.api import env

env.roledefs = {
    'web': {
        'hosts': ['www1', 'www2', 'www3'],
        'foo': 'bar'
    },
    'dns': {
        'hosts': ['ns1', 'ns2'],
        'foo': 'baz'
    }
}

تم توثيق المزيد حول هذا السؤال المتدرج

التعليق الأكثر فائدة

bitprophet لماذا تم إغلاق هذا؟ لم يتغير سلوك مفاتيح roledef الإضافية ، فهل هذا "لن يتم إصلاحه"؟

ال 7 كومينتر

يمكنك استخدام المثال أدناه كملف تكوين ، ثم إضافة بعض الوظائف الداخلية للتعامل مع fabfiles.py

مثل: list.db
واجهة | ip | كلمة المرور | دور ....
اتمنى ان يعمل لصالحك.

هناك العديد من مفاتيح env التي يستخدمها النسيج لتحديد المضيف (المضيفين) الذي سيتم الاتصال به لكل جلسة ، على سبيل المثال ، الأدوار ، الدورات الفعالة ، المضيفون ، سلسلة المضيف. وبالطبع الديكور كذلك.

ومع ذلك ، فإن roledefs ليست سوى تعيين اسم لتجميع المضيفين ، وليس من الضروري دمجها في env.hosts.

يساعدك تحديد roledefs كإملاء على تنظيم الإعدادات المخصصة الأخرى ، بجوار المضيفين ، التي تكون محددة الدور. يمكنك الوصول إليهم عبر مسار env الكامل ، مثل env.roledefs.web.foo

ولكن ، مثلك ، وربما تتوقع ، هو أن الدور المحدد على أنه ديكت يجب أن يدمج في جذر البيئة.
هذا ما أستخدمه أيضًا من أجله شخصيًا. لم أجد طريقة جيدة لتنفيذه وسحب الطلب حتى الآن ، نظرًا لجميع الطرق الممكنة لتعيين / الحصول على الدور (الأدوار) "الحالي" فعليًا عند تنفيذ مهمة معينة ، والتعقيد عند استدعاء المهام الفرعية داخل المهام . أوضح ببساطة أنني أفعل ذلك من خلال الاشتراك في التغييرات على البيئة ودمج الدور عندما يتم تعيين المفتاح roles في env. لكن الجزء "الصعب" هو الاحتفاظ بالحالة وتنظيف أي دور يتم دمجه عند استخدام أدوار جديدة في الجلسة.

ينتج env.roledefs.web.foo الخطأ: AttributeError: 'dict' object has no attribute 'web'

أعني أنه يمكنك الوصول إليها مثل dict العادي ، env.roledefs ['web'] ['foo'] ولكن بعد ذلك لا أرى سبب وجود هذه الوظيفة على الإطلاق في Fabric ، إنها مجرد إملاء بسيط. يبدو أنه تم تنفيذ هذه الميزة لسبب أكثر فائدة؟

آسف ، أنت على حق ، يجب عليك الوصول إليه كما تقول.

لا يوجد حاليًا سبب آخر سوى السماح لك بتجميع المزيد من إعدادات الدور بجوار المضيفين.
ولكن عندما يتم إصدار المعلم الرئيسي 1.11 ووجود # 1092 ، يكون الأمر أكثر منطقية.

أيضًا # 1088 هو جزء من 1.11 وهو مشابه لما تصف / تتوقعه. لكنني لم أجد طريقة جيدة ، كما قلت ، لتنفيذ دمج roledefs حتى الآن. إثبات المفهوم فقط في شوكة باستخدام الترقيع العميق "القبيح" للقرد.

آه حسنًا ، هذا ما يجعلني أضرب رأسي بالحائط لأفكر في أنني فقدت شيئًا ما :) تبدو أرقام المشكلات المشار إليها وكأنها ستساعدني قليلاً عندما تتدحرج. شكرا جوناس!

هذا أمر محير وأعتقد أنه يجب الإشارة في الوثائق إلى أن هذه المتغيرات الإضافية لا يمكن الوصول إليها خارج القواعد.

bitprophet لماذا تم إغلاق هذا؟ لم يتغير سلوك مفاتيح roledef الإضافية ، فهل هذا "لن يتم إصلاحه"؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات