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 ฟอร์แมตด้วย