هناك حاجة إلى أعمدة مختلفة
الأعمدة عبارة عن مخزن بيانات آمن (آمن) داخل الملح. لذلك ، أولاً وقبل كل شيء ، يتم استخدامها لتحديد الوصول إلى البيانات الهامة (الشهادات وتسجيلات الدخول وكلمات المرور).
بالإضافة إلى الركائز الافتراضية ، يحتوي Salt أيضًا على الوحدة النمطية ext_pillar ، والتي توفر واجهة للاتصال بمصادر البيانات الخارجية وتوليد الركائز من هذه المصادر في قاموس واحد مشترك.
على سبيل المثال ، يمكنك أخذ بيانات من mysql أو postgres أو redis أو mongo أو git أو حتى من إخراج البرنامج النصي / الأمر - cmd_json ، cmd_yaml .
يتم نشر قائمة كاملة بالوحدات على موقع SaltStack الرسمي .
إذا كان لديك موقف غير قياسي والوحدات النمطية المتاحة لا تناسبك ، يمكنك كتابة الوضع الخاص بك ووضعه في / usr / lib / python3 / dist -pack / salt / pillar / ، وبعد ذلك تحتاج إلى إعادة تشغيل المعالج.
مثال على هذه الوحدة:
#/etc/salt/master/conf.d/pillar.conf
ext_pillar:
- dummy: dummy
#/usr/lib/python3/dist-packages/salt/pillar/dummy.py
def ext_pillar(minion_id, pillar, *args, **kwargs):
dummy = {'dummy': 'what u want mann?'}
return dummy
من بين جميع الوحدات المتاحة ، تبين أن pillarstack هي الأكثر تشويقًا وملاءمة لفريقنا. الآن دعنا نخبرك لماذا.
مقدمة إلى PillarStack
Stack أو pillarstack هو "عمود YAML بسيط ومرن يمكنه قراءة الأعمدة من الأعمدة" ، وفقًا للوثائق الرسمية على الموقع .
يسمح لك باستخدام الأعمدة التي تمت قراءتها مسبقًا داخل الأعمدة. هذا يعني أنه يمكننا استخدام العمود من التكوين السابق. وهي مريحة للغاية! دعنا نوضح كيف يعمل:
, :
#/etc/salt/conf.d/pillarstack.conf
ext_pillar:
- stack:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
- /srv/pillar/stack3.cfg
#/srv/pillar/stack1.cfg
# stack "" ,
# 2 yml ,
core.yml
common/*.yml
osarchs/{{ __grains__['osarch'] }}.yml
oscodenames/{{ __grains__['oscodename'] }}.yml
hosts/{{ minion_id }}/roles.yml
#/srv/pillar/stack2.cfg
# stack stack1.cfg
# , , roles
# stack yml
{% for role in stack.roles %}
roles/{{ role }}/*.yml
{% endfor %}
#/srv/pillar/stack3.cfg
# stack "" stack1.cfg stack2.cfg
#
creds/{{ stack.db.host }}/*.yml
يمكن تمثيل كل تكوين كطبقة. في كل طبقة ، يمكننا استخدام البيانات من الطبقات السابقة.
تتوفر المتغيرات التالية عند تكوين الأعمدة:
- الحبوب - استهداف التكوينات بالحبوب
- opts - استهداف التكوينات حسب الخيارات في config
- الدعامة - الأعمدة التي تم تشكيلها قبل معالجة ext_pillar: المكدس الحالي
# , stack
# stack grains pillar
# stack.cfg , pillar
ext_pillar:
- stack:
grains:cpuarch:
x86_64:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
pillar:environment:
dev: /srv/pillar/dev/stack.cfg
prod: /srv/pillar/prod/stack.cfg
# stack: grains, pillar
# pillar stack1.cfg, stack2.cfg
# 'environment', stack.cfg
ext_pillar:
- stack:
grains:custom:grain:
value:
- /srv/pillar/stack1.cfg
- /srv/pillar/stack2.cfg
- stack:
pillar:environment:
dev: /srv/pillar/dev/stack.cfg
prod: /srv/pillar/prod/stack.cfg
في ملفات yml ، يمكنك استخدام:
- __opts__: خيارات التكوين
- __grains__: حبوب العميل
- الدعامة: أعمدة من ركائز ext_pillar أو ركائز افتراضية أخرى (تلك الموجودة في top.sls)
- كومة: كومة أعمدة متراكمة ، بما في ذلك التكوين الحالي.
إذا كنت ستنتقل فقط إلى pillarstack ، فإليك بضع نقاط تستحق الاهتمام بها:
1. يعمل التضمين المتكرر في الدعامة فقط. لا يتضمن المكدس أدلة ، بل يتضمن ملفات فقط.
# pillar
# top.sls
base:
'*':
- dir1.* # /dir1/dir2/dir3/*
# stack
# stack.cfg
/dir1/*
/dir1/dir2/*
/dir1/dir2/dir3/*
2. السلوك الافتراضي عند دمج القوائم:
- عمود - يتم الكتابة فوق القوائم
- المكدس - يتم استخدام استراتيجية الدمج الأخير (يتم إضافة القوائم).
تسمح استراتيجيات دمج الأعمدة بالتخصيص المرن للغاية للأعمدة.
يوجد وصف مفصل مع أمثلة في الوثائق.
لوصف كل من الاستراتيجيات بإيجاز:
- merge-last (افتراضي): دمج متكرر ، والقاموس / القائمة الأخيرة لها الأسبقية
- الدمج أولاً: الدمج العودي ، تعطى الأولوية للقاموس / القائمة الأولى
- إزالة: إزالة العناصر المحددة
- الكتابة فوق: تجاوز القاموس / القائمة.
شرح: في كل عملية دمج يتم تضمين قاموسين / قائمتين ، دعنا نسميهم الأول والأخير. يشار إلى
الاستراتيجية على أنها العنصر الأول في القاموس / القائمة التي يجب تطبيقها عليها.
الشيء الرئيسي هو عدم الانجراف في الاستخدام المفرط للاستراتيجيات ، لأن هذا سيعقد التكوين. ربما ، في هذه الحالة ، من المفيد إعادة النظر في تنظيم الركائز.
خاتمة
تسمح لك الأعمدة بتقييد الوصول إلى البيانات الحساسة. مع المزيد والمزيد من البيانات والسيناريوهات الأكثر تعقيدًا لاستخدامها ، من المهم استخدام أداة ملائمة لتنظيمها. في الوقت الحالي بالنسبة لفريقنا ، هذا هو العمود ، في المستقبل نخطط لنشر الخزنة.
يبدو لنا مفاجئًا لماذا لم يحل pillarstack محل العمود الافتراضي بعد ، لأنه أكثر ملاءمة ومرونة ، والاستراتيجيات مفيدة جدًا عندما يكون من الضروري تغيير سلوك متغير المكدس بشكل نقطي. ماذا تعتقد؟ هل تستخدم بيلارستاك في عملك؟