Halite คือตัวจัดการ Salt Master ผ่านหน้า Web interface โดยติดตั้งบน host salt master ทำให้สำหรับคนที่ไม่ถนัดการใช้ command สามารถ config salt master ได้ง่ายขึ้น แต่ Halite นั้นยังอยู่ในช่วง Develop ซึ่งเป็น version pre-alpha และ support salt ตั้งแต่ version 2014.1.0 ขึ้นไป ลักษณะการทำงานจะเป็นแบบใน Diagram ด้านล่างนี้
วิธีการดู version ของ salt master ใช้คำสั่ง
sudo salt-master --version
ที่เครื่อง salt master ให้ติดตั้ง halite โดยใช้ package manager PIP ให้ติดตั้ง PIP และ Dependency อื่นๆ ที่จำเป็นโดยใช้คำสั่ง
sudo apt-get update && sudo apt-get install python-pip
sudo pip install -U halite
sudo pip install CherryPy
sudo pip install paste
sudo apt-get install gcc
sudo apt-get install python-dev
sudo apt-get install libevent-dev
sudo pip install gevent
sudo pip install pyopenssl
ทำการเพิ่ม config permission สำหรับ login halite ที่ไฟล์ /etc/salt/master
sudo vi /etc/salt/master
ใส่ชื่อ user ที่สามารถ login หน้า Web UI User ที่ใส่นั้นต้องไม่ใช่ root และต้องมี user นี้อยู่บน linux โดยในตัวอย่างจะใช้ user admins เป็น user ที่มีบน linux และ pam คือรูปแบบการ auth บน linux
@runner คือ function ที่ halite ใช้เพื่อดึงข้อมูล status ของ minion หรือเครื่อง client นั้นเอง
external_auth: pam: admins: - .* - '@runner'
ทำการเพิ่ม config halite setting ที่ไฟล์เดิมคือ /etc/salt/master
sudo vi /etc/salt/master
halite: level: 'debug' server: 'cherrypy' host: '0.0.0.0' port: '8080' cors: False tls: True certpath: '/etc/pki/tls/certs/localhost.crt' keypath: '/etc/pki/tls/certs/localhost.key' pempath: '/etc/pki/tls/certs/localhost.pem'
setting halite นั้นต้องทำการสร้าง certificate สำหรับ run tls/ssl โดยจะใช้คำสั่งนี้
sudo salt-call tls.create_self_signed_cert tls
จากนั้นทำการ restart service salt-master
sudo service salt-master restart
ทดสอบเข้าหน้า Web UI โดยพิมพ์ URL:(ใส่ชื่อ host หรือ IP Address ของเครื่อง salt master) ในตัวอย่างเข้าเป็น URL: http://192.168.56.109:8080/app
แล้วทำการใส่ username และ password เพื่อ login เข้าสู่ระบบ จะเข้ามาที่หน้า console => ให้คลิ๊กที่ logo SALTSTACK เพื่อเข้าไปที่ preference
debug: ถ้าติ๊กจะเปิด Mode debug ใน Log ซึ่งจะอยู่ที่ /var/log/salt/master
verbose: ถ้าติ๊กจะเปิด Mode verbose ใน Log ซึ่งจะอยู่ที่ /var/log/salt/master
SaltApi: กำค่าต่างๆ ที่เกี่ยวกับ API ของ salt เช่น SaltApi.eauth เป็นวิธีการ Authen ซึ่งสามารถเป็น ldap ก็ได้ เป็นต้น
fecthGrains: คือตั้งว่าจะให้ดึงรายละเอียดต่างๆ ของเครื่อง minion เลยไหม ซึ่งถ้าติ๊กไว้ก็จะดึงมาให้เลย
preloadJobCache: จะเป็นการ cache job ที่ได้ run ไปแล้ว
เมื่อแก้ไขค่าต่างๆ เรียบร้อยแล้วก็คลิ๊กปุ่ม Update ต่อไปให้คลิ๊กที่แท็ป console => คลิ๊กขยายหน้าต่าง command ออกมา
Target Format: เลือกรูปแบบของการแสดงผล
Macro: เลือก Action ที่ต้องการจะใช้
Target: เลือกเครื่อง salt minion เป้าหมาย หากต้องการเลือกทุกเครื่องก็ใส่เป็น *
Function: เลือก Module ที่ต้องการใช้
ที่แท็ป Monitor จะเป็นแท็ปสำหรับ monitor เครื่อง salt minion
Command: คือคำสั่งที่ Assign ให้เครื่อง salt minion
Job: คืองานทั้งหมดที่สั่ง run ไป
Minion: คือ list ของเครื่อง salt minion ทั้งหมด
Event: จะเหมือนกับ Job แต่จะมี Time stamp บอกด้วย
ที่นี้จะมีตัวอย่างง่ายๆ เพื่อให้เข้าใจมากขึ้น โดยจะให้มี salt-master หรือ server 1 host และ salt minion หรือ client 2 host และจะใช้ web UI halite ทำการ monitor เครื่อง salt minion โดยการใช้ Action ping, version ไปที่เครื่อง salt minion, มีการใช้ Function hosts เพื่อ list file /etc/hosts ในเครื่อง minion และใช้ Fuction disk เพื่อดูขนาดของ disk ในเครื่อง salt minion
ให้ทำตามขึ้นตอนดังนี้เพื่อเพิ่ม Action และ Function ให้กับเครื่อง salt minion
- ไปที่แท็ป Command => ช่อง Target ใส่ค่า * => ตรง Macro เลือก Action เป็น ping => เลือก Action อีกครั้ง เป็น version
- ช่อง function ใส่เป็น disk.usage => คลิ๊กที่ปุ่ม Execute
- ช่อง function ใส่เป็น hosts.list_hosts => คลิ๊กที่ปุ่ม Execute อีกครั้ง
- เราจะเห็น command ทั้งหมดที่เพิ่มไปในแท็ป Monitor => command
เราสามารถขยายแต่ล่ะ command ออกมาดูได้ว่าผลลัพท์ที่ run ไปนั้นผ่านไหม ถ้าสามารถ run ได้จะเป็นสีเขียน ถ้าไม่ได้จะเป็นสีแดงดังรูป
- ดูที่แท็ป Job ที่แท็ปนี้เราสามารถกดดูผลลัพธ์จากการ run Action หรือ Function ได้ดังรูป
- ดูที่แท็ป Minion ที่แท็ปนี้เราสามารถดู details ต่างๆ ของเครื่อง salt minion ได้ เช่น IP Address, biosversion เป็นต้น
- ดูที่แท็ป Event แท็ปนี้จะบอกรายละเอียดของแต่ล่ะ job ที่ run ไป, การ authen และอื่นๆ
ก็จบสำหรับบทความนี้แล้วครับ หากต้องการอ่านเพิ่มเติมให้ไปดูที่ References น่ะครับ
References
Halite ReadMe ใน GitGub
List Function ทั้งหมดใน Salt