ค้นหาเว็บไซต์

Fabric - เรียกใช้คำสั่งเชลล์จากระยะไกลผ่าน SSH ใน Linux


ในโลกของการพัฒนาซอฟต์แวร์ที่เปลี่ยนแปลงตลอดเวลา การจัดการเซิร์ฟเวอร์ระยะไกลที่มีประสิทธิภาพถือเป็นสิ่งสำคัญ ไม่ว่าคุณจะเป็นผู้ดูแลระบบ วิศวกรซอฟต์แวร์ หรือนักพัฒนาซอฟต์แวร์ ความสามารถในการรันคำสั่ง Linux บนเซิร์ฟเวอร์ระยะไกลถือเป็นงานทั่วไป

นี่คือจุดที่ Fabric ซึ่งเป็นไลบรารี Python ระดับสูงที่ออกแบบมาเพื่อรันคำสั่ง Linux จากระยะไกลผ่าน SSH ทำให้เป็นเครื่องมือที่ขาดไม่ได้สำหรับทุกคนที่ต้องการจัดการระบบระยะไกลในขณะที่ ใช้ประโยชน์จากพลังของ Python

ผ้าคืออะไร?

Fabric เป็นไลบรารี Python อเนกประสงค์ ซึ่งช่วยให้กระบวนการรันคำสั่งเชลล์บนเซิร์ฟเวอร์ระยะไกลผ่านการเชื่อมต่อ SSH ง่ายขึ้น ได้รับการพัฒนาครั้งแรกโดย Jeff Forcier และต่อมาได้กลายเป็นโครงการโอเพ่นซอร์ส

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

ทำไมต้องใช้ผ้า?

มีเหตุผลที่น่าสนใจหลายประการในการเลือก Fabric สำหรับความต้องการดำเนินการคำสั่งระยะไกลของคุณ:

  • แนวทางแบบ Python – Fabric ยึดมั่นในปรัชญาของ Python ทำให้นักพัฒนาและผู้ดูแลระบบสามารถเขียนสคริปต์ในภาษาที่พวกเขาคุ้นเคยอยู่แล้วได้อย่างง่ายดาย
  • SSH และ Paramiko – Fabric อาศัยไลบรารี Paramiko เพื่อจัดการการเชื่อมต่อ SSH ซึ่งมอบวิธีที่ปลอดภัยและเชื่อถือได้ในการรันคำสั่งจากระยะไกล
  • เวิร์กโฟลว์ตามงาน – Fabric สนับสนุนแนวทางที่เน้นงานเพื่อดำเนินการคำสั่งจากระยะไกล คุณกำหนดงาน ซึ่งโดยพื้นฐานแล้วคือฟังก์ชัน Python และ Fabric จะดูแลการดำเนินการเหล่านั้นบนเซิร์ฟเวอร์ระยะไกล
  • กรณีการใช้งาน – Fabric เป็นเครื่องมืออเนกประสงค์ที่เหมาะสำหรับกรณีการใช้งานที่หลากหลาย รวมถึงการปรับใช้แอปพลิเคชัน การจัดการการกำหนดค่าเซิร์ฟเวอร์ และงานบำรุงรักษาระบบที่ใช้งานอยู่

ในคู่มือนี้ เราจะครอบคลุมขั้นตอนแนะนำและเริ่มต้นใช้งาน Fabric เพื่อปรับปรุงการดูแลเซิร์ฟเวอร์สำหรับกลุ่มเซิร์ฟเวอร์

วิธีการติดตั้งเครื่องมือ Fabric Automation ใน Linux

คุณลักษณะที่สำคัญของ แฟบริค คือเครื่องระยะไกลที่คุณต้องดูแลระบบจำเป็นต้องติดตั้งเซิร์ฟเวอร์ OpenSSH มาตรฐานเท่านั้น

คุณต้องติดตั้งข้อกำหนดบางอย่างบนเซิร์ฟเวอร์ที่คุณดูแลเซิร์ฟเวอร์ระยะไกลก่อนจึงจะสามารถเริ่มต้นได้

ความต้องการ:

  • Python 2.5+ พร้อมส่วนหัวการพัฒนา
  • Python-setuptools และ pip (เป็นทางเลือก แต่เป็นที่ต้องการ) gcc

Fabric ติดตั้งได้ง่ายโดยใช้ pip package manager แต่คุณอาจต้องการเลือกตัวจัดการแพ็คเกจเริ่มต้น yum, dnf หรือ apt/apt-get เพื่อติดตั้งแพ็คเกจ fabric โดยทั่วไปเรียกว่า ผ้า หรือ ผ้าหลาม

ติดตั้ง Fabric ในระบบ RHEL

บนการกระจายที่ใช้ RHEL เช่น CentOS Stream, Rocky Linux และ AlmaLinux คุณต้องติดตั้งและเปิดใช้งานที่เก็บ EPEL บนระบบเพื่อ ติดตั้งแพ็คเกจ แฟบริค

sudo dnf install epel-release
sudo dnf install fabric

ติดตั้ง Fabric ในระบบ Debian

ในการแจกแจงแบบเดเบียน เช่น Ubuntu และ Linux Mint ผู้ใช้สามารถ apt เพื่อติดตั้งแพ็คเกจ fabric ได้ดังนี้ แสดง:

sudo apt install fabric

ติดตั้ง Fabric โดยใช้ PiP

หากไม่มี fabric จากที่เก็บของระบบ คุณสามารถใช้ pip เพื่อติดตั้งดังที่แสดง

sudo yum install python3-pip       [On RedHat based systems] 
sudo dnf install python3-pip       [On Fedora 22+ versions]
sudo apt install python3-pip       [On Debian based systems]

เมื่อติดตั้ง pip สำเร็จแล้ว คุณสามารถใช้ pip เพื่อรับ fabric เวอร์ชันล่าสุดดังที่แสดง:

pip3 install fabric

วิธีใช้ Fabric เพื่อทำให้งานการดูแลระบบ Linux เป็นแบบอัตโนมัติ

เรามาเริ่มต้นใช้งาน ผ้า กันดีกว่า ในขั้นตอนการติดตั้ง สคริปต์ Python ชื่อ 'fab' ได้ถูกเพิ่มลงในไดเร็กทอรีใน PATH ของระบบของคุณ สคริปต์ 'fab' จัดการงานทั้งหมดเมื่อใช้ Fabric

เรียกใช้คำสั่ง Linux ในเครื่อง

ตามแบบแผน คุณจะต้องเริ่มต้นด้วยการสร้างไฟล์ Python ชื่อ fabfile.py โดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบ โปรดจำไว้ว่าคุณสามารถตั้งชื่อไฟล์นี้ให้แตกต่างออกไปได้ตามที่คุณต้องการ แต่คุณจะต้องระบุเส้นทางของไฟล์ดังต่อไปนี้:

fab --fabfile /path/to/the/file.py

Fabric ใช้ 'fabfile.py' เพื่อรันงาน 'fabfile' ควรอยู่ในไดเร็กทอรีเดียวกันกับที่คุณเรียกใช้งาน เครื่องมือผ้า

ตัวอย่างที่ 1: มาสร้าง Hello World พื้นฐานกันก่อน

vi fabfile.py

เพิ่มบรรทัดโค้ดเหล่านี้ลงในไฟล์

def hello():
       print('Hello world, Tecmint community')

บันทึกไฟล์และรันคำสั่งด้านล่าง

fab hello

ตอนนี้เรามาดูตัวอย่างของ fabfile.py เพื่อรันคำสั่ง uptime บนเครื่องท้องถิ่น

ตัวอย่างที่ 2: เปิดไฟล์ fabfile.py ใหม่ดังนี้:

vi fabfile.py

และวางบรรทัดโค้ดต่อไปนี้ลงในไฟล์

#!  /usr/bin/env python
from fabric.api import local
def uptime():
  local('uptime')

จากนั้นบันทึกไฟล์และรันคำสั่งต่อไปนี้:

fab uptime

เรียกใช้คำสั่ง Linux จากระยะไกลผ่าน SSH

Fabric API ใช้พจนานุกรมการกำหนดค่าซึ่งเทียบเท่ากับอาเรย์เชื่อมโยงที่เรียกว่า env ของ Python ซึ่งเก็บค่าที่ควบคุมการทำงานของ Fabric

env.hosts คือรายการเซิร์ฟเวอร์ที่คุณต้องการรันงาน Fabric หากเครือข่ายของคุณคือ 192.168.0.0 และต้องการจัดการโฮสต์ 192.168.0.2 และ 192.168.0.6 ด้วย fabfile ของคุณ คุณสามารถกำหนดค่า env.hosts ได้ดังนี้:

#!/usr/bin/env python
from  fabric.api import env
env.hosts = [ '192.168.0.2', '192.168.0.6' ]

บรรทัดโค้ดด้านบนระบุเฉพาะโฮสต์ที่คุณจะเรียกใช้งาน Fabric แต่ไม่ต้องทำอะไรเพิ่มเติม ดังนั้นคุณจึงสามารถกำหนดงานบางอย่างได้ Fabric จึงมีชุดฟังก์ชันที่คุณสามารถใช้เพื่อโต้ตอบกับเครื่องระยะไกลของคุณได้

แม้ว่าจะมีหลายฟังก์ชั่น แต่ที่นิยมใช้กันมากที่สุดคือ:

  • รัน – ซึ่งรันคำสั่งเชลล์บนเครื่องระยะไกล
  • ท้องถิ่น – ซึ่งรันคำสั่งบนเครื่องท้องถิ่น
  • sudo – ซึ่งรันคำสั่งเชลล์บนเครื่องระยะไกลโดยมีสิทธิ์รูท
  • รับ – ซึ่งจะดาวน์โหลดไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไปจากเครื่องระยะไกล
  • ใส่ – ซึ่งจะอัปโหลดไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไปไปยังเครื่องระยะไกล

ตัวอย่างที่ 3: หากต้องการสะท้อนข้อความบนเครื่องหลายเครื่อง ให้สร้าง fabfile.py เช่นด้านล่าง

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def echo():
      run("echo -n 'Hello, you are tuned to Tecmint ' ")

หากต้องการดำเนินงาน ให้รันคำสั่งต่อไปนี้:

fab echo

ตัวอย่างที่ 4: คุณสามารถปรับปรุง fabfile.py ที่คุณสร้างไว้ก่อนหน้านี้เพื่อรันคำสั่งสถานะการออนไลน์บนเครื่องท้องถิ่นได้ รันคำสั่ง uptime และตรวจสอบการใช้งานดิสก์โดยใช้คำสั่ง df บนเครื่องหลายเครื่องดังต่อไปนี้:

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def uptime():
      run('uptime')
def disk_space():
     run('df -h')

บันทึกไฟล์และรันคำสั่งต่อไปนี้:

fab uptime
fab disk_space

ติดตั้ง LAMP Stack บนเซิร์ฟเวอร์ Linux ระยะไกลโดยอัตโนมัติ

ตัวอย่างที่ 4: ลองดูตัวอย่างการใช้งานเซิร์ฟเวอร์ LAMP (Linux, Apache, MySQL/MariaDB และ PHP) บน เซิร์ฟเวอร์ Linux ระยะไกล

เราจะเขียนฟังก์ชันที่จะอนุญาตให้ติดตั้ง LAMP จากระยะไกลโดยใช้สิทธิ์รูท

สำหรับ RHEL/CentOS และ Fedora
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  run ("yum install -y httpd mariadb-server php php-mysql")
สำหรับ Debian/Ubuntu และ Linux Mint
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")

บันทึกไฟล์และรันคำสั่งต่อไปนี้:

fab deploy_lamp

หมายเหตุ: เนื่องจากเอาต์พุตจำนวนมาก เราจึงไม่สามารถสร้าง screencast (gif แบบเคลื่อนไหว) สำหรับตัวอย่างนี้ได้

ตอนนี้คุณสามารถทำให้งานการจัดการเซิร์ฟเวอร์ Linux เป็นอัตโนมัติโดยใช้ Fabric รวมถึงคุณสมบัติและตัวอย่างที่ให้ไว้ข้างต้น...

ตัวเลือกที่มีประโยชน์ของผ้า

  • คุณสามารถเรียกใช้ fab --help เพื่อดูข้อมูลที่เป็นประโยชน์และรายการตัวเลือกบรรทัดคำสั่งที่มีอยู่มากมาย
  • ตัวเลือกที่สำคัญ --fabfile=PATH ที่ช่วยให้คุณระบุไฟล์โมดูล Python อื่นที่จะนำเข้านอกเหนือจาก fabfile.py
  • หากต้องการระบุชื่อผู้ใช้ที่จะใช้เมื่อเชื่อมต่อกับโฮสต์ระยะไกล ให้ใช้ตัวเลือก --user=USER
  • หากต้องการใช้รหัสผ่านสำหรับการตรวจสอบสิทธิ์และ/หรือ sudo ให้ใช้ตัวเลือก --password=PASSWORD
  • หากต้องการพิมพ์ข้อมูลโดยละเอียดเกี่ยวกับคำสั่ง NAME ให้ใช้ตัวเลือก --display=NAME
  • หากต้องการดูรูปแบบ ให้ใช้ตัวเลือก --list ตัวเลือก: สั้น ปกติ ซ้อนกัน ให้ใช้ตัวเลือก --list-format=FORMAT
  • หากต้องการพิมพ์รายการคำสั่งที่เป็นไปได้และออก ให้รวมตัวเลือก --list
  • คุณสามารถระบุตำแหน่งของไฟล์กำหนดค่าที่จะใช้ได้โดยใช้ตัวเลือก --config=PATH
  • หากต้องการแสดงผลข้อผิดพลาดที่เป็นสี ให้ใช้ --colorize-errors
  • หากต้องการดูหมายเลขเวอร์ชันของโปรแกรมและออก ให้ใช้ตัวเลือก --version
สรุป

Fabric เป็นไลบรารี Python อันทรงพลังที่ปรับปรุงประสิทธิภาพการดำเนินการคำสั่งระยะไกลผ่าน SSH โดยให้แนวทาง Pythonic ที่ใช้งานง่าย ความสามารถในการลดความซับซ้อนของงานที่ซับซ้อนและทำให้การจัดการระบบเป็นอัตโนมัติทำให้เป็นเครื่องมืออันมีค่าสำหรับผู้ดูแลระบบ นักพัฒนา และผู้เชี่ยวชาญด้าน DevOps

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