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