SaltStack - ตัวอย่างการทำงาน

ในตัวอย่างการทำงานนี้เราจะสร้างสูตร Salt ที่จะกำหนดค่าเว็บเซิร์ฟเวอร์ apache พร้อมกับซอฟต์แวร์ PHP Salt เป็นวิธีที่ยอดเยี่ยมในการดำเนินการคำสั่งเฉพาะกิจ แต่คุณไม่ต้องการกำหนดค่าโครงสร้างพื้นฐานของคุณด้วยวิธีนี้อย่างต่อเนื่อง ด้วยการสร้างชุดสูตร Salt คุณสามารถสร้างการกำหนดค่าใด ๆ ซ้ำได้อย่างน่าเชื่อถือ

สูตรเกลือเป็นไฟล์ข้อความ YAML ที่เรียบง่ายและโดยค่าเริ่มต้นจะอยู่ใน Salt Master ของคุณในรูปแบบ /srv/salt/*. เริ่มต้นด้วยการสร้าง Salt Formula เพื่อติดตั้งเว็บเซิร์ฟเวอร์ Apache และ PHP ในเวลาเดียวกัน

สร้างไฟล์ชื่อ“ websetup.sls” ภายใต้ /srv/salt/ ไดเรกทอรีและเพิ่มรหัสต่อไปนี้

websetup.sls

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

ในตัวอย่างนี้ให้สังเกตอาร์กิวเมนต์“ - pkgs:” แต่ละรายการในรายการด้านล่าง“ - pkgs:” จะถูกส่งต่อไปยังตัวจัดการแพ็คเกจของ OS เพื่อติดตั้งร่วมกัน เมื่อใดก็ตามที่คุณมีรายการแพ็คเกจจำนวนมากเพื่อติดตั้งนี่เป็นวิธีที่มีประสิทธิภาพที่สุดในการติดตั้ง

นำสูตรนี้ไปใช้กับ Salt master โดยใช้คำสั่งต่อไปนี้

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

ตอนนี้คุณจะเห็นสิ่งต่อไปนี้ 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

ตอนนี้คุณได้ติดตั้งแพ็คเกจใน minion2.

รัฐสูง

"ไฮสเตท" เป็นวิธีที่เกลือในการพิจารณาว่าสูตรเกลือใดควรใช้กับมินเนี่ยนบางตัว ดำเนินการ“ highstate” โดยใช้คำสั่งต่อไปนี้

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

top.sls

เมื่อมินเนี่ยนร้องขอให้เรียกใช้ไฮสเตตตามที่กล่าวไว้ก่อนมินเนี่ยนจะร้องขอ top.sls จาก Salt master และค้นหาสูตรที่ตรงกับ ตามค่าเริ่มต้นไฟล์นี้จะอยู่ที่ /srv/salt/top.sls ให้เราเพิ่มสูตรของเราไปที่ไฟล์ top.sls และตั้งค่า minion2 เป็นเป้าหมาย

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

ตอนนี้ดำเนินการ highstate กำหนดเป้าหมาย minion2 ดังที่แสดงด้านล่าง

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

หลังจากใช้สิ่งนี้คุณจะเห็นสิ่งต่อไปนี้ 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

ตอนนี้เว็บเซิร์ฟเวอร์ Apache และ PHP ได้รับการติดตั้งใน minion2 แล้ว ด้วยวิธีนี้เราต้องกำหนดเป้าหมายให้มินเนี่ยนใช้ทั้งสองอย่างtop.sls และ highstate และติดตั้งซอฟต์แวร์ที่ต้องการโดยใช้งานน้อยที่สุดและมีความยืดหยุ่นสูงสุด