SaltStack - Ví dụ làm việc

Trong ví dụ làm việc này, chúng tôi sẽ tạo một công thức Salt sẽ cấu hình máy chủ web apache cùng với phần mềm PHP. Salt là một cách tuyệt vời để thực hiện các lệnh đặc biệt, nhưng bạn sẽ không thực sự muốn liên tục cấu hình cơ sở hạ tầng của mình theo cách này. Bằng cách tạo một bộ công thức Salt, bạn có thể tái tạo bất kỳ cấu hình nào một cách đáng tin cậy.

Salt Formulas là các tệp văn bản YAML đơn giản và theo mặc định nằm trên Salt Master của bạn trong /srv/salt/*. Chúng ta hãy bắt đầu bằng cách tạo Salt Formula để cài đặt máy chủ web Apache và PHP cùng một lúc.

Tạo một tệp có tên “websetup.sls” trong /srv/salt/ thư mục và thêm mã sau.

websetup.sls

websetup:
   pkg:
      - installed
      - pkgs:
         - apache2
         - php5
         - php5-mysql

Trong ví dụ này, hãy chú ý đến đối số “- pkgs:”. Mỗi mục trong danh sách dưới đây “- pkgs:” sẽ được chuyển cùng nhau đến trình quản lý gói của OS để được cài đặt cùng nhau. Bất cứ khi nào bạn có một danh sách lớn các gói để cài đặt, đây là cách hiệu quả nhất để cài đặt chúng.

Áp dụng Công thức này cho Salt master bằng lệnh sau.

root@saltmaster:/home/vagrant# salt 'minion2' state.sls websetup

Bây giờ, bạn sẽ thấy như sau output -

minion2:
----------
   ID: websetup
   Function: pkg.installed
   Result: True
   Comment: 3 targeted packages were installed/updated.
   Started: 01:50:53.978396
   Duration: 86738.132 ms
   Changes:
      ----------
         apache2:
            ----------
            new:
               2.4.7-1ubuntu4.13
            old:
         apache2-api-20120211:
            ----------
            new:
               1
            old:
         apache2-bin:
            ----------
            new:
               2.4.7-1ubuntu4.13
            old:
         apache2-data:
            ----------
            new:
               2.4.7-1ubuntu4.13
            old:
         libapache2-mod-php5:
            ----------
            new:
               5.5.9+dfsg-1ubuntu4.21
            old:
         libapr1:
            ----------
            new:
               1.5.0-1
            old:
         libaprutil1:
            ----------
            new:
               1.5.3-1
            old:
         libaprutil1-dbd-sqlite3:
            ----------
            new:
               1.5.3-1
            old:
         libaprutil1-ldap:
            ----------
            new:
               1.5.3-1
            old:
         php5:
            ----------
            new:
               5.5.9+dfsg-1ubuntu4.21
            old:
         php5-cli:
            ----------
            new:
               5.5.9+dfsg-1ubuntu4.21
            old:
         php5-common:
            ----------
            new:
               5.5.9+dfsg-1ubuntu4.21
            old:
         php5-json:
            ----------
            new:
               1.3.2-2build1
            old:
         php5-mhash:
            ----------
            new:
               1
            old:
         php5-mysql:
            ----------
            new:
               5.5.9+dfsg-1ubuntu4.21
            old:
         php5-readline:
            ----------
            new:
               5.5.9+dfsg-1ubuntu4.21
            old:
         phpapi-20121212:
            ----------
            new:
               1
            old:
         ssl-cert:
            ----------
            new:
               1.0.33
            old:
Summary for minion2
------------
Succeeded: 1 (changed = 1)
Failed:    0
------------ 
Total states run:     1
Total run time:  86.738 s

Bây giờ, bạn đã cài đặt các gói trong minion2.

Highstate

"Highstate" là một cách để Salt xác định công thức Salt nào nên được áp dụng cho một con lính nào đó. Thực hiện một “trạng thái cao” bằng lệnh sau.

root@saltmaster:/home/vagrant# salt <targets> state.highstate

top.sls

Khi minion yêu cầu thực hiện highstate, như đã đề cập trước đây, minion yêu cầu top.sls từ Salt master và tìm kiếm các công thức phù hợp với nó. Theo mặc định, tệp này được đặt tại /srv/salt/top.sls. Hãy để chúng tôi thêm công thức của chúng tôi vào tệp top.sls và đặt minion2 làm mục tiêu.

base:
   '*':
      - common
   'minion2’:
      - websetup

Bây giờ, thực hiện highstate nhắm mục tiêu minion2 như hình dưới đây.

root@saltmaster:/home/vagrant# salt 'minion2' state.highstate

Sau khi áp dụng điều này, bạn có thể thấy những điều sau output -

minion2:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 01:55:17.998824
   Duration: 461.615 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 461.615 ms

Bây giờ, máy chủ web Apache và PHP đã được cài đặt trong minion2. Bằng cách này, chúng ta phải nhắm mục tiêu vào lính bằng cách sử dụng cả haitop.slshighstate và cài đặt phần mềm cần thiết với công việc tối thiểu và tính linh hoạt tối đa.