SaltStack - เซิร์ฟเวอร์ไฟล์เกลือ
เซิร์ฟเวอร์ไฟล์ Salt เป็นเซิร์ฟเวอร์ ZeroMQ ที่ไม่มีสถานะ มันถูกสร้างขึ้นใน Salt master เซิร์ฟเวอร์ไฟล์ Salt ใช้สำหรับการกระจายไฟล์จากมาสเตอร์ไปยังมินเนี่ยน ประกอบด้วยโมดูลที่แตกต่างกัน ให้เราทำความเข้าใจเกี่ยวกับไฟล์เซิร์ฟเวอร์ salt การกำหนดค่าโมดูลที่เกี่ยวข้องกับไฟล์เซิร์ฟเวอร์ salt วิธีเข้าถึงไฟล์เซิร์ฟเวอร์ salt ใน python เป็นต้นในบทนี้
แบ็กเอนด์เซิร์ฟเวอร์ไฟล์
แบ็กเอนด์เซิร์ฟเวอร์ไฟล์อนุญาตให้เซิร์ฟเวอร์ไฟล์ Salt ทำหน้าที่เป็นอินเทอร์เฟซแบบโปร่งใสไปยังเซิร์ฟเวอร์ไฟล์อื่นเช่นระบบไฟล์ภายในระบบควบคุมเวอร์ชัน Git เป็นต้น
สามารถเปิดใช้งานแบ็กเอนด์เซิร์ฟเวอร์ไฟล์ Git ได้โดยใช้การกำหนดค่าต่อไปนี้ในไฟล์หลัก
fileserver_backend:
- git
ในการเปิดใช้งานระบบไฟล์แบ็กเอนด์หลายระบบเราสามารถใช้การกำหนดค่าต่อไปนี้
fileserver_backend:
- roots
- git
นอกจากนี้เรายังสามารถระบุตัวเลือกเพิ่มเติมสำหรับเซิร์ฟเวอร์แบ็กเอนด์อื่นโดยใช้ส่วนเฉพาะของเซิร์ฟเวอร์แบ็กเอนด์ที่เกี่ยวข้อง
ระบบไฟล์ในเครื่อง
สำหรับการใช้ระบบนี้เราจะต้องใช้รหัสต่อไปนี้
file_roots:
base:
- /srv/salt/prod
ระบบไฟล์ Git
สำหรับการใช้ระบบนี้เราจะต้องใช้รหัสต่อไปนี้
gitfs_remotes:
- https://github.com/sample/sample1.git
การร้องขอไฟล์
Salt มีตัวเลือกในการร้องขอไฟล์สำหรับสภาพแวดล้อมเฉพาะ
salt://path/to/file?saltenv = base
ที่นี่สภาพแวดล้อมถูกกำหนดโดยใช้ตัวเลือกราก
การกำหนดค่าเซิร์ฟเวอร์ไฟล์
ไฟล์ Salt สามารถถูกจัดสรรภายในไดเรกทอรีรากจำนวนมากและเข้าถึงได้โดยระบุทั้งเส้นทางไฟล์และสภาพแวดล้อมที่ต้องการค้นหา สภาพแวดล้อมแต่ละรายการสามารถขยายข้ามไดเร็กทอรีรูทหลาย ๆ
สิ่งแวดล้อม
สภาพแวดล้อมเริ่มต้นคือฐาน สภาพแวดล้อมนี้ถูกกำหนดและใช้เพื่อดาวน์โหลดไฟล์เมื่อไม่มีการระบุสภาพแวดล้อมอื่น
file_roots:
base:
- /srv/salt/base
คุณยังสามารถใช้หลายสภาพแวดล้อมดังแสดงในโค้ดด้านล่าง
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
- /srv/salt/base
โมดูล CP
โมดูล CP เป็นโมดูลหลักในการจัดการไฟล์ Salt file server. salt-cp นอกจากนี้ยังสามารถใช้คำสั่งเพื่อแจกจ่ายไฟล์ที่นำเสนอโดยเซิร์ฟเวอร์ไฟล์ Salt
GET_FILE
cp.get_fileสามารถใช้ฟังก์ชันบน minion เพื่อดาวน์โหลดไฟล์จากต้นแบบได้ ถูกกำหนดตามที่แสดงในบล็อกรหัสต่อไปนี้
salt '*' cp.get_file salt://vimrc /etc/vimrc
คำสั่งดังกล่าวสั่งให้มินเนี่ยน Salt ทั้งหมดดาวน์โหลดไฟล์ vimrc ไฟล์และคัดลอกไปที่ /etc/vimrc.
เปิดใช้งานเทมเพลต
คุณสามารถเปิดใช้งานตัวเลือกเทมเพลตใน get_file ดังนี้ -
salt '*' cp.get_file "salt://vimrc" /etc/vimrc template = jinja
ใช้การบีบอัด
หากต้องการใช้การบีบอัดให้ใช้ไฟล์ gzipชื่ออาร์กิวเมนต์ ค่าที่ถูกต้องคือจำนวนเต็มตั้งแต่ 1 ถึง 9 โดยที่ 1 คือการบีบอัดขั้นต่ำและ 9 คือค่าสูงสุด
คำสั่งถูกกำหนดดังนี้ -
salt '*' cp.get_file salt://vimrc /etc/vimrc gzip = 5
GET_DIR
cp.get_dirสามารถใช้ฟังก์ชันบน minion เพื่อดาวน์โหลดไดเร็กทอรีทั้งหมดจากต้นแบบ ถูกกำหนดไว้ในบล็อกรหัสต่อไปนี้
salt '*' cp.get_dir salt://etc/mysql /etc
cp.get_dirรองรับการแสดงผลเทมเพลตและอาร์กิวเมนต์การบีบอัด gzip หากต้องการคุณสามารถกำหนดได้เช่นกัน
โมดูล FILECLIENT
Salt จัดเตรียมโมดูล python ที่ช่วยในการเข้าถึงเซิร์ฟเวอร์ไฟล์เกลือ salt/fileclient.py โมดูลใช้เพื่อตั้งค่าการสื่อสารจากมินเนี่ยนไปยังมาสเตอร์
โค้ดตัวอย่างในการรับไฟล์มีดังนี้ -
import salt.minion
import salt.fileclient
def get_file(path, dest, saltenv = ‘base'):
client = salt.fileclient.get_file_client(__opts__)
return client.get_file(path, dest, true, saltenv)
ที่นี่
ตัวเลือกจะพร้อมใช้งานเมื่อโมดูลทำงานในสภาวะเกลือ มิฉะนั้นเราควรระบุเส้นทางการกำหนดค่า -/etc/salt/minion.
path อ้างถึงเส้นทางของไฟล์ต้นฉบับในเซิร์ฟเวอร์ไฟล์เกลือ
dest หมายถึงเส้นทางปลายทางของไฟล์
saltenv หมายถึงสิ่งแวดล้อม
ในบทต่อไปเราจะเข้าใจวิธีการใช้งาน Git เป็นไฟล์เซิร์ฟเวอร์