
- SaltStack 教程
- SaltStack - 首頁
- SaltStack - 概述
- SaltStack - 架構
- SaltStack - 競爭對手
- SaltStack - 安裝
- 建立簡單的環境
- SaltStack - 訪問控制系統
- SaltStack - 作業管理
- SaltStack - Salt 檔案伺服器
- SaltStack - Git 作為檔案伺服器
- 使用 MinionFS 作為檔案伺服器
- SaltStack - 使用 Salt 與 Cron
- SaltStack - 遠端執行
- 配置管理
- SaltStack - 日誌記錄
- SaltStack - 透過 SSH 使用 Salt
- Salt 用於雲基礎設施
- SaltStack - Salt 代理 Minion
- SaltStack - 事件系統
- SaltStack - 編排
- SaltStack - Salt 包管理器
- SaltStack - Python API
- SaltStack - 工作示例
- SaltStack 有用資源
- SaltStack - 快速指南
- SaltStack - 有用資源
- SaltStack - 討論
SaltStack - 遠端執行
Salt 的核心概念之一是遠端執行。Salt 可以在幾秒鐘內跨數千個系統執行命令。Salt 使用其自身的命令來實現此功能。讓我們在本章中瞭解遠端執行的不同 Salt 命令。
Salt 命令
Salt 命令使 Salt master 能夠與一個或多個Salt minion 通訊。基本語法如下:
salt '<target>' <module.function> [arguments]
上述命令語法包含以下三個主要組成部分。
目標 (target) − 它確定命令應用於哪些系統。
模組.函式 (module.function) − 它是一個命令。命令由模組和函式組成。
引數 (arguments) − 呼叫函式所需的其他資料。
讓我們詳細瞭解每個元件。
什麼是目標元件?
目標是一個元件,它允許你過濾 minion(受管理的系統)來執行函式。下面定義了一個使用目標元件的簡單命令。
salt '*' test.ping
它將產生以下輸出 −
minion2: True minion1: True
這裡,目標‘*’ 代表所有受管理的系統。這裡的 ‘test’ 是一個模組,ping 是一個函式。這用於測試遠端系統的 ping 服務。我們將在後續章節中學習不同的模組及其功能。
使用 ID (minion) 的目標
你可以使用其id在目標中向特定 minion 傳送命令。你可以使用minion id替換'*'。定義如下。
salt 'minion1’ test.ping
它將產生以下輸出 −
minion1: True
使用正則表示式的目標
可以使用特定正則表示式過濾目標。定義如下。
salt -E 'minion[0-9]' test.ping
它將產生以下輸出 −
minion2: True minion1: True
使用列表的目標
可以在列表中顯式指定目標。在下面的程式碼塊中定義。
salt -L 'minion1,minion2' test.ping
它將產生以下輸出 −
minion2: True minion1: True
按條件指定目標
目標可以組合在一個命令中,如下面的程式碼塊所示。
salt -C 'G@os:Ubuntu and minion* or S@192.168.50.*' test.ping
它將產生以下輸出 −
minion1: True minion2: True
模組和函式 (module.function)
Salt 可以同時在其所有受管理的系統中執行 shell 命令;更新包和分發檔案等。Salt 使用模組執行這些操作。Salt 為所有可用的功能提供了特殊的模組。讓我們在本節中使用一些簡單的示例來了解不同的 Salt 模組。
Shell 命令
Salt 使用cmd.run命令遠端地在多個系統上執行 shell 命令。cmd是主模組,run是cmd模組中可用的函式之一。run函式允許在遠端系統中執行任何 shell 命令,如下面的程式碼塊所示。
salt '*' cmd.run 'ls -l /etc'
它將產生以下輸出 −
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 …………… ……………
顯示磁碟使用情況
Salt 提供了一個特殊的模組disk來獲取受管理系統的完整磁碟詳細資訊。disk模組有一個usage函式來查詢詳細資訊。
salt '*' disk.usage
它將產生以下輸出 −
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 提供了一個單獨的模組 network 和模組內的函式 interfaces 來查詢受管理系統的網路介面資訊。
salt '*' network.interfaces
它將產生以下輸出 −
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 執行模組
Salt 函式可以傳送到sys.doc執行模組。這用於直接從命令列獲取任何模組的詳細資訊。Salt 函式是自文件化的。所有函式文件都可以透過 minion 透過 sys.doc() 函式檢索,該函式定義如下。
salt '*' sys.doc
函式呼叫的引數
引數用於為函式呼叫提供其他資料。下面給出了一個簡單的引數示例。
salt '*' sys.doc pkg.install
這裡,引數pkg.install是一個用於安裝特定包的模組。
Python 函式
引數是函式的空格分隔的引數。它允許將 python 程式碼作為引數傳遞,如下所示。
salt '*' cmd.exec_code python 'import sys;print sys.version'
它將產生以下輸出 −
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格式。