SaltStack - การจัดการการกำหนดค่า

การจัดการการกำหนดค่าเป็นหนึ่งในแนวคิดที่สำคัญที่สุดใน SaltStack ใช้เพื่อสร้างเทมเพลตการกำหนดค่าที่ใช้ซ้ำได้เรียกว่าไฟล์state. สถานะอธิบายทุกอย่างที่จำเป็นในการใส่ส่วนประกอบของระบบหรือแอปพลิเคชันในการกำหนดค่าที่รู้จัก

รัฐเกลือ

สถานะเกลือคือการกำหนดค่าที่ใช้ซ้ำได้สำหรับส่วนหนึ่งของระบบ รัฐเข้าใจง่ายกว่าและอธิบายได้โดยใช้ YAML แบบธรรมดา

สร้างรัฐเกลือ

รัฐเกลือสร้างได้ง่าย ให้เราสร้างสถานะง่ายๆในบทนี้ ย้ายไปที่ไดเร็กทอรี“ salt-vagrant-demo / saltstack / salt /” และสร้างไฟล์ชื่อsamples.sls และเพิ่มบรรทัดต่อไปนี้

samples.sls

install_network_packages:
   pkg.installed:
      - pkgs:
         - rsync
         - lftp
         - curl

ตอนนี้บันทึกไฟล์และเรียกใช้คำสั่งต่อไปนี้ใน Salt master

root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples

ที่นี่เราติดตั้ง rsync, lftp และ curl ผ่าน pkg.installed โมดูลที่ใช้สถานะเกลือในมิเนียนเกลือ minion1. หากทำงานได้อย่างถูกต้องคุณจะเห็นการตอบสนองดังที่แสดงด้านล่าง

มันจะผลิตสิ่งต่อไปนี้ output -

minion1:
----------
   ID: install_network_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 08:08:48.612336
   Duration: 545.385 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 545.385 ms

ใช้ Salt State

ตอนนี้เราได้สร้างสถานะโดยใช้ไฟล์ ".sls" และนำไปใช้โดยการเรียกใช้โดยเฉพาะ Salt มีไฟล์สถานะเริ่มต้นที่เรียกว่าไฟล์top.slsไฟล์. ไฟล์ด้านบนใช้เพื่อใช้ไฟล์สถานะหลายไฟล์กับ Salt minions ไฟล์ด้านบนอธิบายตำแหน่งที่ควรใช้ ดี,States และ Top file ทำงานร่วมกันเพื่อสร้างแกนหลักของความสามารถในการจัดการการกำหนดค่าของ SaltStack

ตอนนี้ให้เราสร้างไฟล์ top.sls ง่ายๆในไดเร็กทอรี saltstack/salt และเพิ่มสิ่งต่อไปนี้

top.sls

base:
  '*':
      - common
   'minion1':
      - samples

ที่นี่ state, อย่างธรรมดา applies ถึง all system สถานะ, samples ใช้กับ minion1.

จากนั้นเรียกใช้ Salt master และใช้สถานะดังที่แสดงด้านล่าง

root@saltmaster:/home/vagrant# salt '*' state.apply

มันจะผลิตสิ่งต่อไปนี้ output -

minion1:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:33:35.642355
   Duration: 588.21 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 588.210 ms
minion2:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:33:35.890331
   Duration: 602.79 ms
   Changes:

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

ใช้ขนาดแบทช์

หากคุณมีมินเนี่ยนที่เชื่อมต่อจำนวนมากคุณสามารถ จำกัด จำนวนระบบที่อัปเดตพร้อมกันได้ ดำเนินการโดยใช้ไฟล์–batch-size ตัวเลือกซึ่งกำหนดไว้ด้านล่าง

root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply

มันจะผลิตสิ่งต่อไปนี้ output -

Executing run on ['minion2', 'minion1']
jid:
   20170314094638482664
minion1:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:46:41.228519
   Duration: 582.24 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 582.240 ms
retcode:
   0
jid:
   20170314094638482664
minion2:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:46:41.153609
   Duration: 605.235 ms
   Changes:

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

ฟังก์ชั่น Salt State

ฟังก์ชัน Salt state ใช้เพื่อติดตั้งและกำหนดค่าแอปพลิเคชันบนระบบรีโมตของคุณ ให้เราติดตั้งแพ็กเกจ "Vim" โดยใช้ฟังก์ชัน Salt state

สร้างและใช้ฟังก์ชันสถานะ

สร้างไฟล์ชื่อ“ sample.sls” ภายใต้ไดเร็กทอรี“ salt-vagrant-demo / saltstack / salt / sample.sls” และเพิ่มสิ่งต่อไปนี้ -

sample.sls

install vim:
   pkg.installed:
      - name: vim

เมื่อสภาพแวดล้อม Vagrant ขึ้นให้รัน salt master และใช้ sample.sls โดยรันคำสั่งต่อไปนี้

root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
----------
   ID: install vim
   Function: pkg.installed
   Name: vim
   Result: True
   Comment: Package vim is installed
   Started: 15:07:45.752764
   Duration: 553.506 ms
   Changes:

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

ตอนนี้เราได้เพิ่มแพ็กเกจ“ Vim” ตอนนี้ให้เราทดสอบแพ็คเกจโดยใช้วิธีการทดสอบเกลือ

การทดสอบสถานะเกลือ

การทดสอบจะได้รับคำสั่งโดยการเพิ่มตัวเลือก "test = True" ในสถานะ ข้อมูลการส่งคืนจะแสดงสถานะที่จะใช้เป็นสีเหลืองและผลลัพธ์จะถูกรายงานว่า 'ไม่มี'

คำสั่งต่อไปนี้ใช้เพื่อทดสอบสถานะ -

root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
----------
   ID: install vim
   Function: pkg.installed
   Name: vim
   Result: True
   Comment: Package vim is already installed
   Started: 15:07:45.752764
   Duration: 553.506 ms
   Changes:

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

SaltStack ─ส่วนประกอบเสา

Pillar เป็นส่วนประกอบที่สำคัญในการทำให้รัฐเกลือสามารถนำกลับมาใช้ใหม่ได้ ใช้เพื่อกำหนดข้อมูลที่ปลอดภัยสำหรับมินเนี่ยนที่กำหนดโดยใช้เป้าหมาย ข้อมูลเสาเกลือเก็บค่าต่างๆเช่นพอร์ตเส้นทางไฟล์พารามิเตอร์การกำหนดค่าและรหัสผ่าน

ไฟล์กำหนดค่า Pillar

การกำหนดค่าสำหรับ pillar_roots ในไฟล์ config หลักดังแสดงด้านล่าง -

pillar_roots:
   base:
      - /srv/pillar

ไฟล์นี้อยู่ในไดเร็กทอรี“ / srv / เสา”

พิจารณาไฟล์บนสุดที่อยู่ใน /srv/pillar/top.sls มีโครงสร้างดังนี้ -

base:
   '*':
      - default

ตอนนี้ย้ายไปที่ไฟล์ default.sls ที่อยู่ใน /srv/pillar/default.sls และเพิ่มรหัสต่อไปนี้

# Default pillar values
apache
git

หลังจากบันทึกไฟล์แล้วให้รีเฟรชเสาเพื่ออัปเดตการเปลี่ยนแปลงทั้งหมด

รีเฟรชเสา

คุณสามารถรีเฟรชเสาโดยใช้คำสั่งต่อไปนี้

root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar

คำสั่งดังกล่าวใช้เพื่อรีเฟรชข้อมูลเสาเกลือของมินเนี่ยนทั้งหมด

แสดงรายการข้อมูลเสา

หากต้องการแสดงรายการข้อมูลเสาหลักคุณสามารถใช้คำสั่งที่ระบุด้านล่าง

root@saltmaster:/home/vagrant# salt '*' pillar.ls

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
   - apache
   - git
minion1:
   - apache
   - git

รายการเสา

เมื่อตั้งค่าเสาแล้วจะสามารถดูข้อมูลเกี่ยวกับมินเนี่ยนผ่านโมดูลเสาได้ สามารถเข้าถึงได้ผ่านฟังก์ชั่นpillar.itemsซึ่งกำหนดไว้ด้านล่าง

root@saltmaster:/home/vagrant# salt '*' pillar.items

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
   ----------
   apache:
      httpd
   git:
      git
minion1:
   ----------
   apache:
      httpd
   git:
      git

SaltStack - รวมส่วนประกอบ

คอมโพเนนต์ "รวม" ใช้เพื่อกำหนดงานคอนฟิกูเรชันเดียวกันในหลาย ๆ ที่ ง่ายต่อการปฏิบัติ ที่ด้านบนของไฟล์สถานะของคุณให้เพิ่มการรวมโดยใช้รูปแบบต่อไปนี้ -

include:
   - state file 1 
   - state file 2

ที่นี่ state file 1 และ state file 2คือชื่อของไฟล์ SLS ที่คุณต้องการรวม ไม่จำเป็นต้องรวมไฟล์.slsส่วนขยาย. สถานะเกลือรวมจะถูกแทรกที่ด้านบนของไฟล์ปัจจุบัน

ไฟล์สถานะในไดเร็กทอรีย่อย

คุณสามารถรวมไฟล์สถานะไดเร็กทอรีย่อยโดยใช้จุด (.) ทำหน้าที่เป็นตัวคั่นไดเร็กทอรี

include:
   - dir.sls1

อินเทอร์เฟซ Grains

Grains เป็นอินเทอร์เฟซที่ใช้ในการรับข้อมูลเกี่ยวกับระบบพื้นฐาน เกรนถูกรวบรวมสำหรับระบบปฏิบัติการชื่อโดเมนที่อยู่ IP เคอร์เนลประเภทของระบบปฏิบัติการหน่วยความจำและคุณสมบัติของระบบอื่น ๆ อีกมากมาย

การกำหนดเป้าหมายธัญพืช

ข้อมูลเมล็ดพืชสามารถใช้เมื่อกำหนดเป้าหมายมินเนี่ยนซึ่งกำหนดไว้ในบล็อกโค้ดต่อไปนี้

root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping

มันจะผลิตสิ่งต่อไปนี้ output -

minion1:
   True
minion2:
   True

รายชื่อธัญพืช

ธัญพืชสามารถแสดงรายการได้โดยใช้โมดูล 'grain.ls' ซึ่งกำหนดไว้ด้านล่าง

root@saltmaster:/home/vagrant# salt '*' grains.ls

รายการ

เช่นเดียวกับ Pillar ข้อมูล Grains สามารถแสดงรายการได้โดยใช้ 'grain.items'

root@saltmaster:/home/vagrant# salt '*' grains.items