- SaltStack 教程
- SaltStack - 主页
- SaltStack - 概述
- SaltStack - 架构
- SaltStack - 竞争对手
- SaltStack - 安装
- 创建一个简单的环境
- SaltStack - 访问控制系统
- SaltStack - 作业管理
- SaltStack - Salt 文件服务器
- SaltStack - Git 作为文件服务器
- 使用MinionFS作为文件服务器
- SaltStack - 将 Cron 与 Salt 结合使用
- SaltStack - 远程执行
- 配置管理
- SaltStack - 日志记录
- SaltStack - 通过 SSH 进行加盐
- 云基础设施的盐
- SaltStack - Salt 代理 Minion
- SaltStack - 事件系统
- SaltStack - 编排
- SaltStack - Salt 包管理器
- SaltStack - Python API
- SaltStack - 工作示例
- SaltStack 有用资源
- SaltStack - 快速指南
- SaltStack - 有用的资源
- SaltStack - 讨论
SaltStack - 远程执行
Salt的核心概念之一是远程执行。Salt 可以在几秒钟内跨数千个系统执行命令。Salt 使用自己的命令来执行此功能。现在让我们了解本章中用于远程执行的不同 Salt 命令。
盐命令
Salt命令使Salt master能够与一个或多个Salt minions进行通信。基本语法如下,
salt '<target>' <module.function> [arguments]
上述命令语法由以下三个主要部分组成。
target - 它确定命令应用哪些系统。
module.function - 这是一个命令。命令由模块和函数组成。
参数- 调用函数所需的附加数据。
让我们详细了解每个组件。
什么是目标组件?
Target是一个组件,它允许你过滤minions(托管系统)来运行该功能。下面定义了使用目标组件的简单命令。
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 模块。
外壳命令
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来获取托管系统的完整磁盘详细信息。diskmodule有一个使用函数来查询详细信息。
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提供了一个单独的模块、网络和功能,模块内部有接口来查询受管系统的网络接口信息。
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 函数是自记录的。所有函数文档都可以通过 sys.doc() 函数从 minions 中检索,该函数的定义如下。
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格式。