Ansible vs Puppet

Ansible و Puppet هي أنظمة إدارة التكوين (SCM) اللازمة لبناء البنى التحتية المتكررة.

Ansible سهل الاستخدام ، ولديه بنية بدون وكيل (لا يتطلب تثبيت وكيل / عميل على النظام المستهدف) و DSL شبيه بـ YAML ، مكتوب في Python ويمكن توسيعه بسهولة بواسطة الوحدات النمطية. يدير عادة تكوينات Linux.

يحتوي Puppet على بنية خادم عميل (يستقصي الخادم بشكل دوري لإجراء تغييرات على التكوين الذي أجراه مسؤول الشبكة) ، وهو مكتوب بلغة Ruby ولديه DSL يشبه Ruby. يسمح لك هذا التطبيق بإدارة تكوين البرامج المثبتة على أجهزة كمبيوتر متعددة بشكل مركزي.

يقارن المقال مزايا وعيوب هذه SCMs.



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

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

Ansible مقابل Puppet: مراجعة موجزة


الدمى هي واحدة من أشهر العلامات التجارية في سوق CM. وهي موجودة منذ عام 2005 ، والتي تعد أدوات CM بمثابة مساواة للوجود منذ نشأة البشرية. تدير العديد من الأسماء الكبيرة مثل Google و Reddit و Dell و PayPal و Oracle و Los Alamos Labs وجامعة ستانفورد مراكز البيانات الخاصة بهم مع Puppet. إن وجود مثل هؤلاء العملاء على متن الطائرة يمنح المنتج دائمًا مستوى معينًا من الثقة. تفتخر Puppet أيضًا بواجهة أكثر نضجًا وتعمل على جميع أنظمة التشغيل الرئيسية - Linux و Windows و Unix وحتى Mac OS X. بعد النموذج الذي تم إنشاؤه بواسطة إصدارات مختلفة من Linux ، تم تطوير هذا التطبيق مفتوح المصدر في Ruby. ومع ذلك ، هناك شركة دعم ورعاية PuppetLabs قوية وراسخة ،تقديم الدعم المهني وإصدار الشركات التجارية للبرنامج.

يوفر Puppet أيضًا إجراء تثبيت بسيط والعديد من الأدوات لمهام مثل النشر السريع لخوادم العملاء. بالإضافة إلى واجهة المستخدم الرسومية ، هناك CLI المستندة إلى روبي. في الواقع ، بالنسبة لمعظم المهام المتقدمة ، من المرجح أن تعتمد على CLI ، وواجهة المستخدم الرسومية هي الواجهة للعرض والإدارة والمراقبة. هذا يعني أنه بالإضافة إلى العمل كمسؤول نظام ، ستحتاج إلى تعلم Ruby.



قد تعتقد: "يبدو كل شيء رائعًا! هل هناك أي سلبيات ، أو هل يستحق الذهاب وشراء Puppet الآن؟ ".. الجدل حول استخدام SCM هذا في منتديات CM المتخصصة هو أن Puppet ، مثل العديد من عمالقة البرمجيات الأخرى ، كان ضحية لنجاحها وحجمها. "Nimble" و "agile" ليست كلمتان يمكن استخدامهما لوصف عمل Puppet. يبلغ المستخدمون عن الأخطاء التي تستغرق وقتًا طويلاً لإصلاح الطلبات الجديدة وتجاهلها. هناك أيضًا بعض الاستياء من حقيقة أن PuppetLabs تدفع عملاءها باستمرار لقبول النسخة التجارية. أخيرًا ، على الرغم من أن Puppet يدعم كل من Ruby النقي و DSL الذي تم تكوينه على CLI ، فإن دعم Ruby وحده قد تم إيقافه. هذه أخبار سيئة لأولئك الذين درسوا روبي فقط ، وليس DSL.

تجاوز العرائس Ansible ، حيث استحوذت على أكبر حصة في السوق في صناعة إدارة التهيئة - 26.5٪. ويتبعه Microsoft System Center CM (21.8٪) و Puppet (12٪).



وهو أيضًا منتج مفتوح المصدر تم إصداره في عام 2012 ومنذ ذلك الحين تم دعمه بواسطة AnsibleWorks. تم تطويره في Python بدلاً من Ruby ، ​​مما يجعله أقرب روحياً إلى Salt (أداة CM جديدة أخرى) من Puppet. ميزة أخرى لـ Python هي أنه مدمج في معظم تطبيقات Unix و Linux ، لذلك يتم تثبيت SCM المكتوب بهذه اللغة ويعمل بشكل أسرع.

إن حيلة Ansible التسويقية الفريدة تكمن في انتشارها السهل والسريع. في الواقع ، لا يستخدم هذا النظام حتى وكلاء منتشرين للتواصل مع العميل الرئيسي ؛ بدلاً من ذلك ، يتم تنفيذ جميع الوظائف من خلال SSH. بالنسبة لتلك التكوينات التي لا تدعم الجذر SSH ، يمكن لـ Ansible تشغيل "sudo" كجذر. يمكن تشغيل Ansible من CLI بدون استخدام ملفات التكوين للمهام البسيطة ، مثل التحقق من تشغيل الخدمة أو بدء التحديثات وإعادة التشغيل. للمهام الأكثر تعقيدًا ، تتم معالجة التكوين Ansible باستخدام بناء جملة YAML في ملفات التكوين التي تسمى "كتب التشغيل". يمكن كتابة أوامر Ansible في أي لغة برمجة تقريبًا وتوزيعها كوحدات JSON عالمية ، والتي من الواضح أنها ميزة على اختيار لغة معينة واحدة.

أصبح Ansible أكثر شيوعًا من خلال نهج جديد لمهام التكوين التقليدية ، وتستخدمه العديد من الشركات لنشر مراكز البيانات الكبيرة.

يعمل مجتمع Ansible من المتحمسين بجد للبناء على نجاحه من خلال زيادة عدد الأجهزة المدعومة ، ودمج دعم Windows الأفضل ، وتحسين النظام البيئي ، وما إلى ذلك.

Ansible مقابل Puppet: اختلاف التثبيت


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



لتكوين Ansible ، تحتاج أولاً إلى تعيين عقدة واحدة كعقدة تحكم. في الواقع ، يمكن أن تكون أي عقد لديك عقدة إدارة. يمكنك تثبيت Ansible على هذه العقدة باستخدام أحدث حزمة Ansible من مستودعات حزم التوزيع الخاصة بك ، دون الحاجة إلى تكوين برنامج العميل على العقد الأخرى. ما عليك سوى إنشاء زوج مفاتيح SSH على عقدة الإدارة ، ثم نسخها إلى العقد الأخرى. بعد ذلك ، قم بإنشاء ملف جرد للعقد Ansible - عادة على أنظمة تشغيل Linux مثل Red Hat Linux و Ubuntu و Debian يحدث هذا في / etc / ansible / hosts. أنت الآن جاهز لاستخدام Ansible لتشغيل PlayBook على كل من المضيف وبقية البنية التحتية للشبكة.سيستخدم Ansible اتصالات SSH مع عقدة التحكم لتشغيل إدارة التهيئة المستندة إلى PlayBook.

يبدو إعداد Puppet أكثر تعقيدًا بعض الشيء ، ولكن هناك الكثير من الوثائق على الإنترنت التي ستساعد في حالة صعبة. أولاً ، ستحتاج إلى تكوين العقد الرئيسية والوكيل بحيث يكون لها نفس الوقت والمنطقة الزمنية. ثم تحتاج إلى الذهاب إلى الخادم الرئيسي بامتيازات الجذر وتثبيت برنامج خادم Puppet. بعد ذلك ، تحتاج إلى تكوين ملف معالج Puppet / etc / hosts لتوصيل جميع العملاء المُدارين ، وبدء خدمة PuppetServer ووضعها في وضع "تمكين" لتلقي اتصالات العملاء على المنفذ 8140. نظرًا لأن Puppet يعتمد على برنامج العميل ، ستحتاج إلى تثبيت وكلاء برامج Puppet على كل منهم.

بالإضافة إلى ذلك ، ستحتاج إلى إضافة عنوان IP للخادم الرئيسي في / etc / hosts حتى يتمكن العميل من الاتصال به. للقيام بذلك ، يجب عليك بدء وتمكين خدمة وكيل Puppet على كل عميل ، ثم إنشاء شهادات SSL ، حيث يستخدم نظام CM هذا HTTPS لاتصال العميل الرئيسي.

في كلتا الحالتين ، سيكون من الضروري تعزيز أمان الخادم لاستبعاد إمكانية الاتصالات غير المصرح بها.

Ansible مقابل Puppet: قابلية التوسع وآلية نقل التكوين


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



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

تسمى الوظيفة الأولى التي يمكن لـ Ansible استخدامها ControlPersist ، وهي تعتمد على المقابس المستمرة والمستمرة لتقليل الوقت المستغرق في تبادل المصافحة اللازمة لاتصالات متعددة. يدعم Ansible أيضًا الأنابيب ، وهو تكوين يقلل من عدد الاتصالات المطلوبة من ثلاثة إلى واحد. أخيرًا ، يمكن تكوين Ansible للتعامل مع المزيد من عقد الجرد في نفس الوقت عن طريق إعداد متغير الشوك في تكوين هذا النظام. بشكل افتراضي ، هذه القيمة هي 5 ، ولكن يمكنك تعيين قيمة أعلى لتسريع المعالجة.



آلية نقل الدمى هي HTTPS ، والتي تتم إدارتها باستخدام شهادات SSL. يعالج خادم Puppet واحد طلبات التكوين لقائمة كاملة من عملاء Puppet. يرسل كل عميل حقائق Puppet إلى الخادم الرئيسي مع طلب إلى دليل Puppet ، وبعد ذلك يرسل الخادم الرئيسي هذا الدليل استجابة. يقوم العميل بعد ذلك بمعالجة الدليل ، والتحقق من كل مورد برنامج مع حالة التكوين المطلوبة المحددة في الدليل. إذا لم يكن المورد في الحالة المطلوبة ، فسيقوم عميل Puppet بتحديث المورد على هذا الكمبيوتر ، وبعد الانتهاء من التحديث ، سيرسل تقريرًا عن تغيير التكوين المكتمل إلى خادم Puppet.



على وجه الخصوص ، يخصص نموذج معالجة Puppet خيط JRuby من تجمع مؤشر الترابط لمعالجة كل اتصال عميل وارد. مع زيادة عدد العقد ، يمكن تحسين مقياس الدمى عن طريق زيادة عدد خيوط JRuby المتاحة في التجمع. يمكن القيام بذلك عن طريق تعيين معلمة تكوين Puppet "max-active-كهربائية" أعلى من القيمة الافتراضية ، وهي 1. وكقاعدة عامة ، يفترض أن هذه القيمة تساوي عدد نوى المعالج لجهاز الكمبيوتر الخاص بك ، ولكن ضع في اعتبارك أن هذا سيتطلب المزيد تستخدم ذاكرة وحدة المعالجة المركزية RAM RAM. كقاعدة عامة ، ستحتاج أيضًا إلى تعيين "حجم كومة كحد أقصى" أعلى لـ JVM لخادم الدمى الخاص بك لضمانأنه يمكن تخصيص سلاسل رسائل JRuby الإضافية الخاصة بك دون وجود خطأ في ذاكرة Java. يجب توخي الحذر عند إجراء هذا الإعداد ، حيث قد يؤدي ذلك إلى فقدان الأداء.

مثال على رمز Ansible CM


بالنسبة لأعمال التهيئة اليومية ، تعد كتابة Ansible Code أمرًا مدهشًا بسيطًا بسبب مزيج من عاملين: استخدام تنسيق YAML لأجهزة PlayBooks والأسلوب التعريفي لإدارة التكوين الذي يقطع "الزوايا الحادة". يعد ذلك مهمًا لتحسين أداء أوامر DevOps بسرعة والتأكد من أن التعليمات البرمجية الخاصة بك يمكن إدارتها حتى بالنسبة لمهام التكوين المعقدة.

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

فيما يلي مثال لرمز Ansible PlayBook يقوم بتثبيت خادم الويب Tomcat على مواقعك. هذا المثال مأخوذ من مستودع أمثلة Ansible الرسمي ، الذي يجب أن تبحث عنه لتتعرف بشكل أفضل على أسلوب Ansible الاصطلاحي:

---
- name: Install Java 1.7
yum: name=java-1.7.0-openjdk state=present

- name: add group "tomcat"
group: name=tomcat

- name: add user "tomcat"
user: name=tomcat group=tomcat home=/usr/share/tomcat createhome=no
become: True
become_method: sudo

- name: Download Tomcat
get_url: url=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61.tar.gz dest=/opt/apache-tomcat-7.0.61.tar.gz

- name: Extract archive
command: chdir=/usr/share /bin/tar xvf /opt/apache-tomcat-7.0.61.tar.gz -C /opt/ creates=/opt/apache-tomcat-7.0.61

- name: Symlink install directory
file: src=/opt/apache-tomcat-7.0.61 path=/usr/share/tomcat state=link

- name: Change ownership of Tomcat installation
file: path=/usr/share/tomcat/ owner=tomcat group=tomcat state=directory recurse=yes

- name: Configure Tomcat server
template: src=server.xml dest=/usr/share/tomcat/conf/
notify: restart tomcat

- name: Configure Tomcat users
template: src=tomcat-users.xml dest=/usr/share/tomcat/conf/
notify: restart tomcat

- name: Install Tomcat init script
copy: src=tomcat-initscript.sh dest=/etc/init.d/tomcat mode=0755

- name: Start Tomcat
service: name=tomcat state=started enabled=yes

- name: deploy iptables rules
template: src=iptables-save dest=/etc/sysconfig/iptables
when: "ansible_os_family == 'RedHat' and ansible_distribution_major_version == '6'"
notify: restart iptables

- name: insert firewalld rule for tomcat http port
firewalld: port=/tcp permanent=true state=enabled immediate=yes
when: "ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7'"

- name: insert firewalld rule for tomcat https port
firewalld: port=/tcp permanent=true state=enabled immediate=yes
when: "ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7'"

- name: wait for tomcat to start
wait_for: port=

تقوم هذه المهمة المحددة Ansible بتنزيل وتثبيت Apache Tomcat مع Java JDK 1.7 التابع ، ثم تكوين Tomcat وبدءه وتثبيته. كما ترى من هذا المثال ، يمكن أن تحتوي الملفات التي تعمل بنظام Ansible على قوالب Jinja ، مما يبسط حساب القيم ويجعل التكوين الخاص بك أكثر مرونة. كود YAML سهل القراءة والكتابة لكل من مسؤولي النظام والمطورين. هذا يؤدي إلى حقيقة أن Ansible أصبح نظام إدارة تكوين ميسور التكلفة لكل من المستخدمين المتقدمين والمبتدئين.

مثال على رمز دمية CM


تعتمد لغة الدمى الموجهة للموضوع على Ruby ، ​​لكن تركيبها أقرب بكثير إلى اللغات الحتمية على غرار C مثل Perl و Java و C ++. هذا النهج هو وسيط بين المطورين الملمين بروبي وأولئك الذين قد لا يكونون على دراية بهذه اللغة. نتيجة لذلك ، قد لا تحتاج إلى معرفة Ruby على الإطلاق لتعلم واستخدام Puppet DSL بشكل منتج.
هذا مثال لبيان Puppet من مستودع PuppetLabs MySQL Puppet Module الذي يقوم بتثبيت وتكوين حزمة عميل MySQL:

# @summary
#     Installs and configures the MySQL client.
#
# @example Install the MySQL client
#     class {'::mysql::client':
#         package_name => 'mysql-client',
#         package_ensure => 'present',
#         bindings_enable => true,
#     }
#
# @param bindings_enable
#     Whether to automatically install all bindings. Valid values are `true`, `false`. Default to `false`.
# @param install_options
#     Array of install options for managed package resources. You must pass the appropriate options for the package manager.
# @param package_ensure
#     Whether the MySQL package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'.
# @param package_manage
#     Whether to manage the MySQL client package. Defaults to `true`.
# @param package_name
#     The name of the MySQL client package to install.
#
class mysql::client (
    $bindings_enable = $mysql::params::bindings_enable,
    $install_options = undef,
    $package_ensure = $mysql::params::client_package_ensure,
    $package_manage = $mysql::params::client_package_manage,
    $package_name = $mysql::params::client_package_name,
)  inherits mysql::params {
    
    include '::mysql::client::install'

    if $bindings_enable {
        class { 'mysql::bindings':
            java_enable => true,
            perl_enable => true,
            php_enable => true,
            python_enable => true,
            ruby_enable => true,
        }
    }

# Anchor pattern workaround to avoid resources of mysql::client::install to
# "float off" outside mysql::client
anchor { 'mysql::client::start': }
-> Class['mysql::client::install']
-> anchor { 'mysql::client::end': }
}

تتمثل إحدى الميزات المهمة لـ Puppet في أنه ، على عكس لغات البرمجة الحتمية المذكورة أعلاه ، فإن Puppet DSL عبارة عن إعلان ، يشبه إلى حد ما XML ، بالإضافة إلى رمز YAML من مثال التعليمات البرمجية Ansible أعلاه. يتم تتبع النهج التعريفي لكل من Puppet و Ansible حقًا في كل من أمثلة الشفرة. من حيث الترميز ، فهي متشابهة وأقرب إلى بعضها البعض من أدوات مثل الشيف. ومع ذلك ، فإن اللغة التقريرية توفر الدمى أيضًا تراكيب شبيهة بروبي مثل التعبيرات الشرطية والتكرارات ، والتي تعد أيضًا حل وسط لمستخدمي روبي وأولئك الذين لا يتحدثون اللغة.

Ansible مقابل Puppet: سهولة الاستخدام


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

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

من حيث تعلم المستخدم ، كلا النظامين سهل الاستخدام ، ولكن Ansible لديه ميزة طفيفة. من السهل تحقيق نمط YAML تعريفي ، لذا فإن كود Ansible ليس معقدًا أبدًا. وفي الوقت نفسه ، أصبح Puppet يتعرف على بعض المشاكل المرتبطة بدمج البيانات والتعليمات البرمجية في نفس ملفات المصدر. أدى ذلك إلى ظهور Puppet Hiera ، وهو حل تخزين يستخدم تنسيق YAML لتخزين أزواج القيمة الرئيسية لبيانات التكوين. يقطع Hiera شوطًا طويلاً نحو تبسيط تجربة Puppet DevOps وتحسينها. لقد أثبت تنسيق YAML أنه شائع جدًا في إدارة التهيئة ، مع استخدام Salt من SaltStack أيضًا لهذا التنسيق.
كل من SCMs لديها القدرة على التحقق من CM واختباره ، من التحقق من بناء الجملة إلى دمج البنية التحتية كرمز.

Ansible مقابل Puppet: تكاليف الترخيص والتنفيذ





كأدوات مفتوحة المصدر ، تشترك Ansible و Puppet كثيرًا في سياسات الترخيص الخاصة بها.

إصدار Ansible مفتوح المصدر مجاني تمامًا. يتم تشجيع الشركات التي تحتاج إلى المزيد من ضمانات الأمان والاستقرار والموثوقية للترقية إلى Ansible Engine ، وهو منتج من فئة المؤسسات يأتي مع Red Hat Linux. تتراوح تكاليف ترخيص محرك Ansible من 47.50 دولارًا إلى 70 دولارًا سنويًا لكل عقدة وتعتمد على التكوين المفضل لديك.

إذا كنت بحاجة إلى دعم فني مع استكشاف الأخطاء وإصلاحها بسرعة ، فيجب عليك استخدام إصدار الشركة. تتوفر أداة Ansible Tower Large Enterprise Management Tool كحزمة خدمة وتزود شركتك بمزيد من قدرات التدريب والإدارة وجدولة المهام من خلال لوحة تحكم رسومية.

مثل Ansible ، يتوفر إصدار دمية مفتوح المصدر مجانًا. لمزيد من ميزات الشركة والدعم الفني ، يمكن للمؤسسات الترقية إلى Puppet Enterprise ، التي تكلف من 112 دولارًا إلى 199 دولارًا سنويًا لكل عقدة. تقدم Puppet Enterprise مجموعة من الأدوات ، بما في ذلك إعداد التقارير ومراقبة حالة البنية التحتية للمؤسسة.

Ansible vs Puppet: المجتمع


دمية ، التي تم إصدارها في عام 2005 ، هي أداة DevOps أقدم ، لذلك كان لديها المزيد من الوقت لإنشاء مجتمعها وقاعدة المستخدمين الخاصة بها. ومع ذلك ، تمكنت Ansible ، التي تم إطلاقها في عام 2012 ، بفضل نهجها الجديد ، من اجتذاب جمهور أكبر وإنشاء مجتمع ديناميكي للغاية من هواة التطوير والمستخدمين. يشمل مستخدمو الدمى شركات مثل Uber و Salesforce و Paypal ، بينما يشمل مجتمع Ansible شركات مثل Digital Ocean و 9 GAG و TypeForm.

إذا قارنا مؤشرًا مهمًا لتطوير منتجات مفتوحة المصدر مثل عدد المساهمين المشاركين في التطوير على GitHub ، فإن Ansible مع أكثر من 4800 مساهم أعلى بكثير من Puppet مع 527 مساهمًا في تطوير المنتج. لقد كان تطوير Ansible في السنوات الأخيرة سريعًا لدرجة أنه أدى إلى إنشاء مستودع "مجري" منفصل لـ Ansible Galaxy . وهذا يعني أن المجتمع Ansible يسعى جاهداً لمشاركة الرمز الخاص به ، وبالتالي المساهمة في زيادة تطوير المنتج.

وفي الوقت نفسه ، أنشأ مجتمع Puppet ، الذي يتطور ببطء أكثر وثبات ، بنية أساسية لتسهيل العثور على حلول تلبي احتياجات SCM الخاصة بك. يوفر Puppet Forge وحدات لمهام إدارة التكوين الشائعة لمجتمع Puppet.

يحتوي كلا النظامين على أدوات من الدرجة الأولى لمراقبة دورة حياة مشروع إدارة التكوين من خلال سطر الأوامر. يتكامل كل من Puppet و Ansible بشكل جيد مع أنظمة DevOps الأخرى المستخدمة على نطاق واسع مثل Docker و Kubernetes و Jenkins و AWS و Azure منصات الحوسبة السحابية.

Ansible vs Puppet: أيهما أفضل؟


في هذا الأمر ، الخيار لك. يعني الأسلوب التعريفي لكل من Ansible و Puppet أن هذه الأدوات مشتركة أكثر بكثير من أنظمة إدارة التهيئة الأخرى. ومع ذلك ، لاتخاذ أفضل خيار ، تحتاج إلى إيلاء اهتمام خاص لكيفية دمج احتياجات فريقك مع تصميم ومزايا SCM معينة.
Ansible هو الأنسب لأولئك الذين يهتمون بالتشكيل بأسلوب YAML ومشاركة فلسفة Ansible في كونها بسيطة قدر الإمكان أثناء إدارة مجموعة كبيرة من الأجهزة بسرعة وفي نفس الوقت. بالإضافة إلى ذلك ، تركز هذه الفلسفة على استخدام وظائف SSH الحالية بدلاً من إنشاء وكلاء المستخدم.

يعتبر Puppet أكثر ملاءمة للفرق التي تفضل DSL ، والتي تقوم بتطوير موارد النظام بطريقة متسقة ومتكررة. هذا هو بالضبط ما تفعله Puppet DSL ، إلى جانب نظام بيئي كامل من الأدوات لجعل الفرق الكبيرة يمكن التنبؤ بها وسهلة.

إذا كنت تعرف بالضبط مبادئ إدارة التكوين التي تناسب احتياجاتك ، فلن يكون الاختيار بين Puppet و Ansible مشكلة بالنسبة لك.

الموجودات


لتسهيل اختيارك ، نقترح أن تتعرف على المزايا والعيوب الرئيسية لكلا النظامين.



القليل من الدعاية :)


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك VPS القائم على السحابة للمطورين من $ 4.99 ، وهو نظير فريد من نوعه لخوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة عن VPS (KVM) E5-2697 v3 (6 نوى) 10GB DDR4 480GB SSD 1Gbps من $ 19 أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا و 40 جيجابايت DDR4).

Dell R730xd أرخص مرتين في مركز بيانات Equinix Tier IV في أمستردام؟ فقط لدينا 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV من 199 دولارًا في هولندا!Dell R420 - 2x E5-2430 2.2 جيجا هرتز 6C 128 جيجا بايت DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولار! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles