رفتن به محتوا
بازگشت به وبلاگ
خودکارسازی

SaltStack برای خودکارسازی و پیکربندی زیرساخت

استقرار SaltStack برای خودکارسازی زیرساخت مبتنی بر رویداد: State، Pillar، Grain، Reactor و Runner های Orchestration.

مهر ۱۴۰۴
۱۵ دقیقه مطالعه

مقدمه

SaltStack ابزار قدرتمند اتوماسیون زیرساخت و مدیریت پیکربندی است که در مدیریت هزاران سرور به‌صورت همزمان برتری دارد. برخلاف مدل push انسیبل، Salt از معماری master-minion با یک message bus رمزنگاری‌شده ZeroMQ استفاده می‌کند که اجرای real-time از راه دور را ممکن می‌سازد.

نصب و راه‌اندازی

BASH
# نصب Salt Master
curl -fsSL https://bootstrap.saltproject.io | sudo sh -s -- -M stable

# نصب Salt Minion روی سرورهای مدیریت‌شده
curl -fsSL https://bootstrap.saltproject.io | sudo sh -s -- stable

# پیکربندی minion
# /etc/salt/minion:
# master: 192.168.1.10

# پذیرش کلیدهای minion
salt-key -A

اجرای دستورات از راه دور

BASH
# تست اتصال
salt '*' test.ping

# هدف‌گیری بر اساس grain
salt -G 'os:Ubuntu' cmd.run 'uname -a'

# نصب پکیج روی همه web server ها
salt -G 'role:webserver' pkg.install nginx

# بررسی فضای دیسک
salt '*' disk.usage

نوشتن Salt States

YAML
# /srv/salt/nginx/init.sls
nginx_package:
  pkg.installed:
    - name: nginx

nginx_service:
  service.running:
    - name: nginx
    - enable: True
    - watch:
        - file: nginx_config

nginx_config:
  file.managed:
    - name: /etc/nginx/nginx.conf
    - source: salt://nginx/files/nginx.conf
    - template: jinja

Pillar: داده‌های پیکربندی امن

YAML
# /srv/pillar/database.sls
postgres:
  password: "super-secret-password"
  max_connections: 200

# بررسی داده‌های pillar
salt 'db-01' pillar.get postgres

Top File: هدف‌گیری State ها

YAML
# /srv/salt/top.sls
base:
  '*':
    - common.users
    - common.security

  'role:webserver':
    - match: grain
    - nginx

  'role:database':
    - match: grain
    - postgres

قدرت واقعی SaltStack زمانی ظهور می‌کند که اجرای از راه دور را با مدیریت state و سیستم reactor ترکیب کنید — پلتفرمی که می‌تواند با واکنش به رویدادها و اعمال خودکار وضعیت مطلوب، زیرساخت شما را self-heal کند.