كيفية جعل تنفيذ النسيج اتبع ترتيب قائمة Env.Hosts؟

StackOverflow https://stackoverflow.com/questions/1956717

  •  21-09-2019
  •  | 
  •  

سؤال

لدي ما يلي fabfile.py:

from fabric.api import env, run

host1 = '192.168.200.181'
host2 = '192.168.200.182'
host3 = '192.168.200.183'

env.hosts = [host1, host2, host3]

def df_h():
    run("df -h | grep sda3")

وأحصل على الإخراج التالي:

[192.168.200.181] run: df -h | grep sda3
[192.168.200.181] out: /dev/sda3             365G  180G  185G  50% /usr/local/nwe
[192.168.200.183] run: df -h | grep sda3
[192.168.200.183] out: /dev/sda3             365G   41G  324G  12% /usr/local/nwe
[192.168.200.182] run: df -h | grep sda3
[192.168.200.182] out: /dev/sda3             365G   87G  279G  24% /usr/local/nwe

Done.
Disconnecting from 192.168.200.182... done.
Disconnecting from 192.168.200.181... done.
Disconnecting from 192.168.200.183... done.

لاحظ أن أمر التنفيذ يختلف عن مواصفات Env.Hosts.

لماذا تعمل بهذه الطريقة؟ هل هناك طريقة لجعل ترتيب التنفيذ كما هو محدد في قائمة Env.Hosts؟

هل كانت مفيدة؟

المحلول

السبب الدقيق لعدم الحفاظ على النظام env.hosts هو أن هناك ثلاثة "مستويات" يمكن تحديدها للمضيفين-يمكن تحديدها-Hosts ، خط الأوامر ، لكل وظيفة-والتي يتم دمجها معًا. في fabric/main.py تشغيل الخط 309, ، يمكنك أن ترى أنهم يستخدمون set() اكتب لإزالة التكرارات في القوائم الثلاثة الممكنة للمضيفين. حيث set() ليس لديه طلب ، سيتم إرجاع المضيفين كقائمة في ترتيب "عشوائي".

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

ومع ذلك ، هل هناك سبب معين لأنك بحاجة إلى حدوث هذه العمليات بالترتيب؟ ربما إذا كنت تواجه نوعًا من المشكلات ، فهذا نتيجة لأمر التنفيذ ، فيمكننا مساعدتك في العمل.

نصائح أخرى

فقط للتحديث ، أحدث VICRIP 1.1+ (فكر حتى 1.0) DEDUPES في طلب الحفاظ على الطريق الآن. لذلك يجب أن يكون هذا غير قضية الآن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top