مرجع سريع

ورقة مساعدة لإدارة التكوين والأتمتة بواسطة Chef

مرجع سريع لـ Chef: أداة knife CLI، وضع chef-solo، موارد لغة الوصفات، تثبيت الحزم، تنزيل الملفات، وحراس الشروط.

· تاريخ النشر

Chef Chef هو إطار عمل لأتمتة البنية التحتية وإدارة التكوين (Infrastructure as Code) مكتوب بلغات Ruby وErlang.

التثبيت والتشغيل المستقل (chef-solo)

تثبيت عميل Chef على العقد المستهدفة باستخدام برنامج التثبيت الرسمي Omnitruck:

# تثبيت عميل Chef
curl -L https://omnitruck.chef.io/install.sh | sudo bash

# التحقق من التثبيت
chef-solo -v

تنفيذ تشغيل كتاب وصفات مستقل:

chef-solo -c solo.rb -j node.json

أوامر سطر الأوامر Knife

# البحث في سجل كتب الطبخ (Supermarket)
knife supermarket search mysql

# تنزيل أرشيف كتاب الطبخ
knife supermarket download nginx

# تهيئة عقدة بعيدة عبر SSH
knife bootstrap 192.168.1.50 -x root -P 'password' -N web01

الموارد الأساسية للغة الوصفات (Recipe DSL)

الحزم والخدمات (Packages & Services)

package 'nginx' do
  action :install
end

service 'nginx' do
  action [:enable, :start]
  supports status: true, restart: true, reload: true
end

تنزيل الملفات عن بعد (Remote Files)

remote_file '/usr/local/src/node.tar.gz' do
  source 'https://nodejs.org/dist/v18.0.0/node-v18.0.0.tar.gz'
  checksum 'sha256checksumhere...'
  mode '0644'
  action :create_if_missing
end

تنفيذ أوامر الصدفة (Execute Shell Commands)

execute 'compile_app' do
  command './configure && make && make install'
  cwd '/usr/local/src/app'
  environment 'PATH' => "/usr/local/bin:#{ENV['PATH']}"
  creates '/usr/local/bin/app' # حارس: يعمل فقط إذا لم يكن الملف الثنائي موجودا
end

حراس الشروط (only_if و not_if)

execute 'migrate_database' do
  command 'rails db:migrate'
  cwd '/var/www/app/current'
  only_if { File.exist?('/var/www/app/current/Rakefile') }
  not_if  'pg_isready -h localhost'
end

موضوعات ذات صلة