دليل المبتدئين الكامل للشيف والبنية التحتية كرمز

خلال الأسابيع القليلة الماضية ، كنت أحفر كثيرًا في الشيف. على الرغم من أن التوثيق جيد ، فقد كانت هناك العديد من الأوقات التي كنت عالقًا فيها دون أي دليل على الإطلاق. لذلك سأقدم مقدمة متعمقة للشيف. إذا لم تكن قد سمعت عن Chef على الإطلاق (مثلي قبل بضعة أشهر) فلا تقلق سأشرح كل ذلك.

ما هو الشيف ولماذا؟

Chef عبارة عن منصة أتمتة قوية تحول البنية التحتية إلى كود. يقوم Chef بأتمتة كيفية تكوين البنية التحتية ونشرها وإدارتها عبر شبكتك ، بغض النظر عن حجمها.

لكن ماذا تعني البنية التحتية كرمز؟ لنفترض أن لديك تطبيق Java يجب نشره على جهاز واحد. لا تحتاج إلى أتمتة لذلك - يمكنك القيام بذلك يدويًا.

ولكن ماذا يحدث عندما لا تستطيع آلة واحدة التعامل مع الحمل وتحتاج إلى نشر تطبيقك على 10 أو 50 أو 100 آلة أخرى؟ هذا هو المكان الذي يأتي فيه Chef. بدلاً من نشر تطبيقك يدويًا على كل جهاز ، يمكنك كتابة رمز يقوم بذلك نيابةً عنك.

المصطلح

  1. محطة العمل - جهازك المحلي ويعرف أيضًا باسم الكمبيوتر المحمول. هذا هو المكان الذي تكتب فيه الكود الخاص بك والذي يتم دفعه بعد ذلك إلى خادم الشيف الخاص بك.
  2. خادم الشيف - هذا هو المكان الذي توجد فيه كل التعليمات البرمجية الخاصة بك. يحتوي أيضًا على جميع المعلومات حول العقد.
  3. Nodes aka Chef Client - الآلات التي تحتاج إلى تشغيل التعليمات البرمجية الخاصة بك. يمكنك استخدام شيء مثل المتشرد لأغراض التعلم و aws / gcp في الإنتاج. تسحب العقد الخاصة بك أحدث رمز من خادم الشيف الخاص بك.

البدء مع الشيف

للبدء ، نحتاج أولاً إلى تثبيت ChefDK على محطة العمل الخاصة بنا. ChefDK هي مجموعة أدوات تطوير الشيف التي تحتوي على جميع الأدوات المطلوبة لبدء استخدام الشيف. يمكنك تثبيت ChefDK من هنا.

بمجرد تثبيت ChefDK ، قم بتشغيل الأمر التالي:

chef generate cookbook testingCheftree testingChef

هذا هو الهيكل الذي تم إنشاؤه بواسطة أمر chef إنشاء كتاب الطبخ . دعنا نراجع كل ملف لنرى ماذا يفعلون.

كتب الطبخ

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

لنفترض أنك تريد تشغيل تطبيق جافا على جهاز. هناك شيئان مطلوبان لذلك:

  1. يجب أن يحتوي جهازك على جافا مثبت.
  2. يجب أن يحتوي على التطبيق ليتم تشغيله.

ثم يمكنك تشغيل التطبيق.

لذلك تقوم بإنشاء كتاب طبخ يقوم ، عند تشغيله على عقدة ، بتثبيت جافا على تلك العقدة ، وجلب التطبيق الذي يتعين عليك تشغيله ، وتشغيل هذا التطبيق.

موارد الشيف

المورد عبارة عن كتلة Ruby تتكون من أربعة مكونات: نوع ، واسم ، وخاصية (أو أكثر) (مع قيم) ، وإجراء واحد (أو أكثر). بناء الجملة للمورد مثل هذا:

type 'name' do attribute 'value' action :type_of_actionend

لنفترض أنك تريد تثبيت OpenJDK 7 على عقدتك. للقيام بذلك ، يمكنك استخدام مورد الحزمة المتاح في الشيف.

package 'java-1.7.0-openjdk' do action :installend

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

package 'java-1.7.0-openjdk'

لتشغيل cronJob على عقدتك ، يمكنك استخدام مورد cron .

cron 'reporting' do action :create minute '0' hour '0' weekday '1' command "/srv/app/scripts/daily_report" # Path of script to runend

اعتمادًا على ما تريد تحقيقه ، هناك الكثير من موارد الطهاة المضمنة التي يمكنك استخدامها. يمكنك معرفة المزيد عنهم هنا.

وصفات

الوصفة عبارة عن مجموعة من الموارد التي تميل إلى تقريب عقدتك خطوة واحدة من الحالة المطلوبة. الوصفات مكتوبة بالياقوت الأحمر.

لتشغيل وصفة ، نستخدم الأمر التالي:

chef-client -z pathToRecipe

تشير -zالعلامة إلى أنه يجب تشغيل عميل الطاهي في الوضع المحلي لأننا لسنا متصلين بأي خادم طاهٍ. في حالة اتصال العقد الخاصة بك بالخادم ، لا يتعين عليك استخدام -zالعلم.

************************** default.rb ****************************
/* This is an example recipe to install install httpd (Apache HyperText Transfer Protocol (HTTP) server program), creates a file on the node at /var/www/html/index.html (default path for serving web pages on apache server) and starts the service on a centOS based machine */
package 'httpd'
file '/var/www/html/index.html' do content 'This is a placeholder for the home page.'end
service 'httpd' do action [:enable, :start]end

البيانات الوصفية و Berksfile

عند العمل على كتاب طبخ ، ليس عليك أن تبدأ من الخطوة الأولى لأن هناك فرصة جيدة أن يكون شخص ما قد أنشأ بالفعل شيئًا مشابهًا ويمكنك فقط تمديد عمله.

هذا هو المكان الذي يأتي فيه سوبر ماركت الشيف. فهو يحتوي على كتب طهي مجتمعية يمكنك استخدامها كتبعيات في كتاب الطبخ الخاص بك. يتم سرد هذه التبعيات في ملف metadata.rb أو حتى في ملف Berksfile. لكن السؤال الذي يطرح نفسه بعد ذلك: كيف يختلفان؟

************************* Berksfile ********************************source '//supermarket.chef.io' # Fetch dependencies from here
metadata

عند تحميل كتاب الطبخ الخاص بك على خادم الشيف ، يجب عليك أيضًا تحميل تبعيات كتاب الطبخ الخاص بك. هذا هو المكان الذي يساعد فيه بيركس. عليك فقط تشغيل أمرين بسيطين:

berks install berks upload

التي تقوم بتنزيل جميع تبعيات كتب الطبخ الخاصة بك وتحميلها جميعًا إلى خادم الشيف كتب الطبخ التبعية موجودة في

~/.berkshelf/cookbooks/

In case you updated your cookbook and want to re-upload them on the chef server, then you must update the version in the metadata file. Otherwise when you use the berks upload command, the new recipe won’t be uploaded unless you force an upload.

**************************** metadata.rb ***************************name 'testingChef'maintainer 'The Authors'maintainer_email '[email protected]'license 'All Rights Reserved'description 'Installs/Configures testingChef'long_description 'Installs/Configures testingChef'version '0.1.0' # Update after changes are made to the cookbookchef_version '>= 12.14' if respond_to?(:chef_version)
depends 'haproxy', '~> 6.2.6'

Chefignore

Put files/directories that should be ignored in this file when uploading

or sharing cookbooks to the community site.

Ohai

When we install CheckDK, we also get ohai with it. Every time you run chef-client on your node, chef runs ohai before that. Ohai collects a lot of system information. The types of attributes Ohai collects include, but are not limited to:

  • Operating System
  • Network
  • Memory
  • Disk
  • CPU

When running ohai you get a lot of output, so be mindful of what you want and write your commands accordingly.

Now if want, we can use all this information in our recipes. All we have to do is refer to a particular property of the node.

if node['hostname'] == "Some hostname" do // do something only if the nodes hostname matchesend

Knife

Knife is a tool which you use to communicate with the chef server. If you want to know anything about your nodes or want to update anything like their recipes, knife is the way to go. There are more than a dozen knife commands. Here are some of them

  1. knife bootstrap— This command is used to create a new node and attach that to your chef server. When bootstrapping a node, chef installs everything like ohai, chef-client on the node and it also runs chef-client automatically. For any subsequent changes made to that node, you need to run chef-client manually to update your node.
  2. knife node show $ {nodeName} - يُستخدم هذا الأمر للحصول على معلومات حول العقدة التي تتضمن الوصفات والبيئة والنظام الأساسي وما إلى ذلك.

3. قائمة كتب الطبخ بالسكين $ {nodeName} - يُستخدم هذا الأمر للحصول على جميع كتب الطبخ المرتبطة بالعقدة الخاصة بك

هذا عن ذلك! شكرا لقرائتك واتمنى ان تكون قد استمتعت بالمقال.

يمكنك متابعتي على ميديوم وجيثب :)