SaltStack - Thực thi từ xa

Một trong những khái niệm cốt lõi của Salt là thực thi từ xa. Salt có thể thực hiện các lệnh trên hàng nghìn hệ thống chỉ trong vài giây. Salt sử dụng lệnh riêng của nó để thực hiện chức năng này. Bây giờ chúng ta hãy hiểu các lệnh Salt khác nhau để thực hiện từ xa trong chương.

Lệnh muối

Lệnh Salt cho phép bậc thầy Salt giao tiếp với một hoặc nhiều Salt minions. Cú pháp cơ bản như sau,

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

Cú pháp lệnh trên bao gồm ba thành phần chính sau đây.

  • target - Nó xác định hệ thống nào được áp dụng bởi lệnh.

  • module.function- Đó là một mệnh lệnh. Các lệnh bao gồm một mô-đun và chức năng.

  • arguments - Dữ liệu bổ sung cần thiết cho việc gọi hàm.

Hãy để chúng tôi hiểu chi tiết từng thành phần.

Thành phần mục tiêu là gì?

Target là một thành phần, cho phép bạn lọc các tay sai (hệ thống được quản lý) để chạy chức năng. Một lệnh đơn giản sử dụng thành phần đích được định nghĩa bên dưới.

salt '*' test.ping

Nó sẽ tạo ra những thứ sau output -

minion2:
   True
minion1:
   True

Đây, mục tiêu ‘*’đại diện cho tất cả các hệ thống được quản lý. Các 'test'đây là một mô-đun và pinglà một chức năng. Điều này được sử dụng để kiểm tra dịch vụ ping trong hệ thống từ xa. Chúng ta sẽ tìm hiểu về các mô-đun khác nhau và chức năng của nó trong các chương tiếp theo.

Nhắm mục tiêu bằng ID (minion)

Bạn có thể gửi lệnh tới một tay sai cụ thể bằng cách sử dụng idtrong mục tiêu. Thay vì sử dụng'*', bạn có thể thay thế nó bằng cách sử dụng minion id. Nó được định nghĩa dưới đây.

salt 'minion1’ test.ping

Nó sẽ tạo ra những thứ sau output -

minion1:
   True

Nhắm mục tiêu sử dụng Cụm từ Thông dụng

Các mục tiêu có thể được lọc theo biểu thức chính quy cụ thể. Nó được định nghĩa dưới đây.

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

Nó sẽ tạo ra những thứ sau output -

minion2:
   True
minion1:
   True

Nhắm mục tiêu bằng Danh sách

Mục tiêu có thể được chỉ định rõ ràng trong một danh sách. Nó được định nghĩa trong khối mã sau.

salt -L 'minion1,minion2' test.ping

Nó sẽ tạo ra những thứ sau output -

minion2:
   True
minion1:
   True

Mục tiêu theo điều kiện

Các mục tiêu có thể được kết hợp trong một lệnh như được hiển thị trong khối mã bên dưới.

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

Nó sẽ tạo ra những thứ sau output -

minion1:
   True
minion2:
   True

Mô-đun và chức năng (mô-đun. chức năng)

Salt có thể thực hiện các lệnh shell; cập nhật gói và phân phối tệp, v.v., trong tất cả các hệ thống được quản lý của nó đồng thời. Salt thực hiện các hoạt động này bằng cách sử dụng các mô-đun. Salt có các mô-đun đặc biệt cho tất cả các chức năng có sẵn. Hãy để chúng tôi hiểu các mô-đun Salt khác nhau bằng cách sử dụng một số ví dụ đơn giản trong chương này.

Lệnh Shell

Salt thực hiện các lệnh shell từ xa trên nhiều hệ thống bằng cách sử dụng cmd.runchỉ huy. Cáccmd là mô-đun chính và run là một trong những chức năng có sẵn trong cmdmô-đun. Cácrun chức năng cho phép bất kỳ lệnh shell nào được thực thi trong hệ thống từ xa như được hiển thị trong khối mã bên dưới.

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

Nó sẽ tạo ra những thứ sau 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
……………
……………

Hiển thị mức sử dụng đĩa

Muối cung cấp một mô-đun đặc biệt, diskđể có được toàn bộ chi tiết về đĩa của hệ thống được quản lý. Cácdiskmodule có một usage chức năng để truy vấn các chi tiết.

salt '*' disk.usage

Nó sẽ tạo ra những thứ sau 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

Giao diện mạng

Salt cung cấp một mô-đun, mạng và chức năng riêng biệt, các giao diện bên trong mô-đun để truy vấn thông tin giao diện mạng về các hệ thống được quản lý.

salt '*' network.interfaces

Nó sẽ tạo ra những thứ sau 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

Mô-đun thực thi sys.doc

Các chức năng muối có thể được gửi đến sys.docmô-đun thực thi. Điều này được sử dụng để lấy thông tin chi tiết về bất kỳ mô-đun nào trực tiếp từ dòng lệnh. Các hàm Salt tự ghi lại. Tất cả tài liệu về hàm có thể được truy xuất từ ​​các minion thông qua hàm sys.doc (), được định nghĩa bên dưới.

salt '*' sys.doc

Đối số cho một lệnh gọi hàm

Các đối số được sử dụng để cung cấp dữ liệu bổ sung cho lệnh gọi hàm. Dưới đây là một ví dụ đối số đơn giản.

salt '*' sys.doc pkg.install

Đây, đối số pkg.install là một mô-đun để cài đặt các gói cụ thể.

Hàm Python

Đối số là các tham số được phân cách bằng dấu cách cho hàm. Nó cho phép mã python được truyền dưới dạng các đối số như dưới đây.

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

Nó sẽ tạo ra những thứ sau 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]

Tương tự, bạn có thể sử dụng các từ khóa tùy chọn và YAML định dạng.