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 เป็นไฟล์เซิร์ฟเวอร์