SaltStack - การดำเนินการระยะไกล

หนึ่งในแนวคิดหลักของ Salt คือการสั่งการจากระยะไกล Salt สามารถดำเนินการคำสั่งในหลายพันระบบภายในเวลาไม่กี่วินาที Salt ใช้คำสั่งของตัวเองเพื่อทำหน้าที่นี้ ตอนนี้ให้เราเข้าใจคำสั่ง Salt ที่แตกต่างกันสำหรับการดำเนินการระยะไกลในบทนี้

คำสั่งเกลือ

คำสั่ง Salt ช่วยให้ Salt master สามารถสื่อสารกับหนึ่งหรือมากกว่านั้นได้ Salt minions. ไวยากรณ์พื้นฐานมีดังนี้

salt '<target>' <module.function> [arguments]

ไวยากรณ์คำสั่งดังกล่าวประกอบด้วยองค์ประกอบหลักสามส่วนดังต่อไปนี้

  • target - กำหนดระบบที่ใช้โดยคำสั่ง

  • module.function- มันคือคำสั่ง คำสั่งประกอบด้วยโมดูลและฟังก์ชัน

  • arguments - ข้อมูลเพิ่มเติมที่จำเป็นสำหรับการเรียกใช้ฟังก์ชัน

ให้เราเข้าใจส่วนประกอบแต่ละอย่างโดยละเอียด

ส่วนประกอบเป้าหมายคืออะไร?

Target เป็นส่วนประกอบที่ให้คุณกรองมินเนี่ยน (ระบบที่ถูกจัดการ) เพื่อรันฟังก์ชัน คำสั่งง่ายๆโดยใช้องค์ประกอบเป้าหมายถูกกำหนดไว้ด้านล่าง

salt '*' test.ping

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
   True
minion1:
   True

ที่นี่เป้าหมาย ‘*’แสดงถึงระบบที่ถูกจัดการทั้งหมด การ 'test'นี่คือโมดูลและ pingเป็นฟังก์ชัน ใช้เพื่อทดสอบบริการ ping ในระบบรีโมต เราจะเรียนรู้เกี่ยวกับโมดูลต่างๆและหน้าที่ของมันในบทต่อ ๆ ไป

เป้าหมายโดยใช้ ID (มินเนี่ยน)

คุณสามารถส่งคำสั่งไปยัง minion เฉพาะโดยใช้ idในเป้าหมาย แทนที่จะใช้'*'คุณสามารถแทนที่ได้โดยใช้ไฟล์ minion id. มีการกำหนดไว้ด้านล่าง

salt 'minion1’ test.ping

มันจะผลิตสิ่งต่อไปนี้ output -

minion1:
   True

เป้าหมายโดยใช้นิพจน์ทั่วไป

เป้าหมายสามารถกรองได้โดยนิพจน์ทั่วไปที่ระบุ มีการกำหนดไว้ด้านล่าง

salt -E 'minion[0-9]' test.ping

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
   True
minion1:
   True

เป้าหมายโดยใช้รายการ

สามารถระบุเป้าหมายได้อย่างชัดเจนในรายการ ถูกกำหนดไว้ในบล็อกรหัสต่อไปนี้

salt -L 'minion1,minion2' test.ping

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
   True
minion1:
   True

กำหนดเป้าหมายตามเงื่อนไข

เป้าหมายสามารถรวมกันได้ในคำสั่งเดียวดังที่แสดงในบล็อกโค้ดด้านล่าง

salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping

มันจะผลิตสิ่งต่อไปนี้ output -

minion1:
   True
minion2:
   True

โมดูลและฟังก์ชัน (module.function)

Salt สามารถรันคำสั่งเชลล์ อัปเดตแพ็กเกจและแจกจ่ายไฟล์ ฯลฯ ในระบบที่ถูกจัดการทั้งหมดพร้อมกัน Salt ดำเนินการเหล่านี้โดยใช้โมดูล Salt มีโมดูลพิเศษสำหรับฟังก์ชันทั้งหมดที่มี ให้เราเข้าใจโมดูลเกลือต่างๆโดยใช้ตัวอย่างง่ายๆในบทนี้

คำสั่งเชลล์

Salt เรียกใช้คำสั่งเชลล์จากระยะไกลในหลายระบบโดยใช้ cmd.runคำสั่ง cmd เป็นโมดูลหลักและ run เป็นหนึ่งในฟังก์ชันที่มีอยู่ในไฟล์ cmdโมดูล. run ฟังก์ชันช่วยให้สามารถเรียกใช้คำสั่งเชลล์ในระบบรีโมตได้ดังที่แสดงในบล็อกโค้ดด้านล่าง

salt '*' cmd.run 'ls -l /etc'

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:14 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
……………
……………
minion1:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm

   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:09 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
   -rw-r----- 1 root daemon   144 Oct 21  2013 at.deny
   -rw-r--r-- 1 root root    2177 Apr  9  2014 bash.bashrc
   -rw-r--r-- 1 root root      45 Mar 22  2014 bash_completion
……………
……………

แสดงการใช้ดิสก์

เกลือเป็นโมดูลพิเศษ diskเพื่อรับรายละเอียดดิสก์ทั้งหมดของระบบที่ถูกจัดการ diskmodule มี usage ฟังก์ชั่นเพื่อสอบถามรายละเอียด

salt '*' disk.usage

มันจะผลิตสิ่งต่อไปนี้ output -

minion1:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192
minion2:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
            0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192

การเชื่อมต่อเครือข่าย

Salt จัดเตรียมโมดูลเครือข่ายและฟังก์ชันแยกต่างหากอินเทอร์เฟซภายในโมดูลเพื่อสอบถามข้อมูลอินเทอร์เฟซเครือข่ายเกี่ยวกับระบบที่ถูกจัดการ

salt '*' network.interfaces

มันจะผลิตสิ่งต่อไปนี้ output -

minion1:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:34:10:52
      inet:
         |_
            ----------
            address:
               192.168.50.11
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe34:1052
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True
minion2:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:a7:31:8e
      inet:
         |_
            ----------
            address:
               192.168.50.12
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fea7:318e
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True

sys.doc Execution Module

ฟังก์ชัน Salt สามารถส่งไปยังไฟล์ sys.docโมดูลการดำเนินการ ใช้เพื่อรับรายละเอียดของโมดูลใด ๆ โดยตรงจากบรรทัดคำสั่ง ฟังก์ชั่น Salt เป็นเอกสารในตัว เอกสารเกี่ยวกับฟังก์ชันทั้งหมดสามารถเรียกดูได้จากมินเนี่ยนผ่านทางฟังก์ชัน sys.doc () ซึ่งกำหนดไว้ด้านล่าง

salt '*' sys.doc

อาร์กิวเมนต์สำหรับการเรียกใช้ฟังก์ชัน

อาร์กิวเมนต์ถูกใช้เพื่อให้ข้อมูลเพิ่มเติมสำหรับการเรียกใช้ฟังก์ชัน ตัวอย่างอาร์กิวเมนต์ง่ายๆได้รับด้านล่าง

salt '*' sys.doc pkg.install

ที่นี่อาร์กิวเมนต์ pkg.install เป็นโมดูลสำหรับติดตั้งแพ็คเกจเฉพาะ

ฟังก์ชัน Python

อาร์กิวเมนต์คือพารามิเตอร์ที่คั่นด้วยช่องว่างของฟังก์ชัน อนุญาตให้ส่งรหัส python เป็นอาร์กิวเมนต์ตามที่ระบุด้านล่าง

salt '*' cmd.exec_code python 'import sys;print sys.version'

มันจะผลิตสิ่งต่อไปนี้ output -

minion2:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]
minion1:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]

ในทำนองเดียวกันคุณสามารถใช้คำหลักที่ไม่บังคับและไฟล์ YAML ฟอร์แมตด้วย