ניהול תצורה מרכזי עם Chef: ביטול סחיפת תצורה

עריכות ידניות בשרתים מובילות לסחיפה בתצורה ולתקלות שגוזלות שעות של ניפוי באגים. אנו מקימים ניהול תצורה מרכזי באמצעות Chef, ומבצעים אוטומציה של תשתית כקוד. הצוות שלנו מספק פרויקט סוהר—מביקורת ועד תמיכה שוטפת—המבטיח פעילות יציבה וסקלביליות לצד העסק שלכם.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

ניהול תצורה עם Chef הוא מסגרת מבוססת Ruby לתיאור תשתית כקוד. סחיפת תצורה על 600 שרתים היא מציאות שאנו פוגשים אצל 80% מהלקוחות. כל התחברות SSH ידנית, כל שינוי שלא תועד, מוביל לתקרית שגוזלת שעות של ניפוי באגים. אנו הופכים את התצורה לאוטומטית באמצעות Chef: כתיבת cookbooks ב-Ruby, בדיקות עם Test Kitchen, וניהול גרסאות ב-Git. לאוטומציה של תצורות DevOps, Chef היא הבחירה האופטימלית. לאחר היישום, התקריות ירדו ב-80%, וזמן הפריסה של שירות חדש ירד מיומיים לשתי שעות. החיסכון בשעות הנדסה הוא משמעותי. שחזוריות: כל chef-client מחזיר את המערכת למצב הרצוי.

כיצד Chef פותר סחיפת תצורה

Chef משתמש במודל משיכה (pull): הסוכן על כל צומת שואל את Chef Infra Server כל 30 דקות ומיישם את המתכונים העדכניים. קובץ ששונה ידנית, שירות שהושבת, חבילה נוספת — chef-client מחזיר הכל למצב הרצוי. בניגוד ל-Ansible (מודל דחיפה, שבו התצורה עלולה לפגר), Chef מספק אידמפוטנטיות קפדנית בכל הצמתים. ניהול גרסאות דרך Git ובדיקת קוד מבטיחים שכל בקשת שינוי נבדקת. Chef מפחית סטיות תצורה ב-40% בהשוואה ל-Ansible, לפי מדדים פנימיים על פני 50 פרויקטים.

רכיבים: Chef Infra Server, Workstation, Nodes

Chef מורכב משלושה חלקים. Chef Workstation — מכונת הפיתוח ליצירת cookbooks. Chef Infra Server — מאגר מרכזי של מדיניות ונתוני צמתים. Chef Client — סוכן על כל צומת שמבצע את רשימת ההרצה (run-list).

פריסת Infra Server:

dpkg -i chef-server-core_*.deb
chef-server-ctl reconfigure
chef-server-ctl user-create admin Admin User [email protected] 'password' --filename admin.pem
chef-server-ctl org-create myorg 'My Org' --association_user admin --filename myorg-validator.pem

ב-Workstation, הגדר את dpkg -i chef-server-core_*.deb chef-server-ctl reconfigure chef-server-ctl user-create admin Admin User [email protected] 'password' --filename admin.pem chef-server-ctl org-create myorg 'My Org' --association_user admin --filename myorg-validator.pem :

current_dir = File.dirname(__FILE__)
chef_server_url 'https://chef.internal/organizations/myorg'
node_name 'admin'
client_key "#{current_dir}/admin.pem"
cookbook_path ["#{current_dir}/../cookbooks"]
תרשים זרימת רכיבים
  1. מפתח כותב cookbook ב-Workstation ומעלה לשרת.
  2. Chef Client בודק את השרת כל 30 דקות.
  3. בעת עדכון, הלקוח מוריד את ה-cookbooks ומיישם.
  4. התוצאה נשלחת לשרת לצורך ביקורת.

מבנה Cookbook: דוגמת Nginx

cookbook מכיל מתכונים (recipes), מאפיינים (attributes) ותבניות (templates). מתכון knife.rb להתקנת Nginx:

package 'nginx' do
  action :install
end

template '/etc/nginx/nginx.conf' do
  source 'nginx.conf.erb'
  owner 'root'
  group 'root'
  mode '0644'
  variables(
    worker_processes: node['nginx']['worker_processes'],
    server_name: node['fqdn']
  )
  notifies :reload, 'service[nginx]', :delayed
end

service 'nginx' do
  action [:enable, :start]
end

מאפיינים מוגדרים ב-current_dir = File.dirname(__FILE__) chef_server_url 'https://chef.internal/organizations/myorg' node_name 'admin' client_key "#{current_dir}/admin.pem" cookbook_path ["#{current_dir}/../cookbooks"] : recipes/default.rb.

Test Kitchen: בדיקות לפני ייצור

Test Kitchen מפעיל סביבה מבודדת (Docker, Vagrant, EC2) ומריץ את ה-cookbook עם בדיקות InSpec. דוגמה package 'nginx' do action :install end template '/etc/nginx/nginx.conf' do source 'nginx.conf.erb' owner 'root' group 'root' mode '0644' variables( worker_processes: node['nginx']['worker_processes'], server_name: node['fqdn'] ) notifies :reload, 'service[nginx]', :delayed end service 'nginx' do action [:enable, :start] end :

---
driver:
  name: docker
  use_sudo: false
provisioner:
  name: chef_infra
  product_name: chef
verifier:
  name: inspec
platforms:
  - name: ubuntu-22.04
suites:
  - name: default
    run_list:
      - recipe[nginx::default]
    verifier:
      inspec_tests:
        - test/integration/default

בדיקות InSpec בודקות שירות ופורט:

describe service('nginx') do
  it { should be_enabled }
  it { should be_running }
end

describe port(80) do
  it { should be_listening }
end

attributes/default.rb מריץ קונטיינר, מיישם, בודק ומשמיד. התהליך משולב ב-CI/CD.

מה זה InSpec ולמה הוא נחוץ?

InSpec היא מסגרת קוד פתוח לבדיקות תאימות. ב-Chef, היא משמשת כמאמת ב-Test Kitchen ויכולה גם לרוץ בנפרד לביקורת תשתית. אנו מריצים פרופילי InSpec על ייצור כדי לקבל דוחות אי-תאימות, ובכך סוגרים דרישות PCI DSS ו-SOC 2 ללא עלות נוספת.

Chef לעומת כלי CM אחרים

קריטריון Chef Ansible Puppet
מודל משיכה (סוכן) דחיפה (ללא סוכן) משיכה (סוכן)
שפה Ruby DSL YAML + Jinja2 Puppet DSL
בדיקות Test Kitchen + InSpec Molecule rspec-puppet
תאימות Chef Automate Ansible Tower Puppet Enterprise
קלות התחלה בינונית גבוהה נמוכה

Chef מנצחת במקומות שבהם נדרשת אידמפוטנטיות קפדנית ודיווח תאימות. למשימות אד-הוק, Ansible פשוטה יותר, אבל Chef מספקת ניהול גרסאות של תצורות ומונעת סחיפה על פני מאות שרתים.

תוכנית יישום Chef שלב אחר שלב

  1. ביקורת תשתית — מלאי שרתים, נקודות כאב.
  2. עיצוב ארכיטקטורה — standalone או HA, אינטגרציית LDAP.
  3. פריסת Chef Infra Server ו-Workstation.
  4. כתיבת cookbooks — מבנה לפי תפקידים, ניצול Community cookbooks.
  5. הקמת Test Kitchen ו-CI/CD — אינטגרציה עם GitLab CI או GitHub Actions.
  6. בדיקות — kitchen test בסביבה מבודדת.
  7. פריסה הדרגתית — גישת canary על קבוצות שרתים.
  8. תיעוד והדרכת צוות.

מה כוללת העבודה שלנו

  • ביקורת ועיצוב ארכיטקטורה.
  • פריסת Chef Infra Server, הגדרת Workstation.
  • כתיבת cookbooks ל-web, DB, cache, queues.
  • אינטגרציית CI/CD — GitLab CI או GitHub Actions עם kitchen test על כל PR.
  • פריסת מדיניות: canary, הדרגתית.
  • Runbooks והדרכה (2-3 מפגשים).
  • שבועיים של תמיכה לאחר היישום.

לוחות זמנים משוערים

שלב משך
ביקורת וארכיטקטורה 2–4 ימים
פריסת Chef Server + Workstation 1–2 ימים
כתיבת cookbooks ל-5–10 שירותים 1–3 שבועות
אינטגרציית CI/CD 1–2 ימים
תיעוד והדרכה 2–3 ימים

העלות מחושבת באופן אישי לאחר ביקורת — כל פרויקט הוא ייחודי. המהנדסים שלנו מוסמכים ובעלי ניסיון ב-50+ פרויקטים. קבעו פגישת ייעוץ כדי לראות כיצד Chef יכולה לפתור את האתגרים שלכם. רוצים לחסל סחיפת תצורה? צרו קשר לביקורת של התשתית שלכם ואנו נפתח תוכנית יישום Chef.