开发手册 欢迎您!
软件开发者资料库

SaltStack - 远程执行

SaltStack远程执行 - 从简单和简单的步骤学习SaltStack,从基本到高级概念,包括概述,架构,竞争对手,安装,创建简单环境,访问控制系统,作业管理,Salt文件服务器,Git作为文件服务器,使用MinionFS作为文件服务器,使用Cron with Salt,远程执行,配置管理,日志记录,通过SSH盐,Salt for Cloud Infrastructure,Salt Proxy Minions,事件系统,Orchestration,Salt Package Manager,Python API,工作示例。

Salt的核心概念之一是远程执行. Salt可以在几秒钟内跨数千个系统执行命令. Salt使用自己的命令来执行此功能.现在让我们在本章中了解用于远程执行的不同Salt命令.

Salt命令

Salt命令使Salt master能够与一个或多个通信更多盐奴才.基本语法如下,

salt ' [arguments]

上述命令语法包含以下三个主要组件.

  • 目标 : 它确定命令应用了哪些系统.

  • module.function : 这是一个命令.命令由模块和函数组成.

  • 参数 : 调用函数所需的其他数据.

让我们详细了解每个组件.

什么是目标组件?

目标是一个组件,它允许您过滤小兵(受管系统)来运行该功能.使用目标组件的简单命令定义如下.

  salt'*'test.ping

它将产生以下输出 :

minion2:   Trueminion1:   True

此处,目标'*'代表所有托管系统.这里的'测试'是一个模块, ping 是一个函数.这用于测试远程系统中的ping服务.我们将在后续章节中了解不同的模块及其功能.

使用ID(minion)的目标

您可以向特定的命令发送命令minion在目标中使用 id .您可以使用 minion id 替换它,而不是使用'*'.它定义如下.

  salt'minion1'test.ping

它将产生以下输出 :

  minion1: True

使用正则表达式的目标

目标可以通过特定的正则表达式进行过滤.它定义如下.

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

它将产生以下输出 :

minion2:   Trueminion1:   True

使用列表的目标

目标可以明确指定一个列表.它在以下代码块中定义.

  salt -L'minion1,minion2'test.ping

它将产生以下输出 :

minion2:   Trueminion1:   True

条件目标

目标可以组合在一起一个命令如下面的代码块所示.

salt -C 'G@os:Ubuntu and minion* or S@192.168.50.*' test.ping

它将产生以下输出 :

minion1:   Trueminion2:   True

模块和功能(模块.function)

Salt可以执行shell命令;同时更新所有托管系统中的包和分发文件等. Salt使用模块执行这些操作. Salt具有用于所有可用功能的特殊模块.让我们使用本章中的一些简单示例来理解不同的Salt模块.

Shell命令

Salt使用

  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提供了一个特殊模块磁盘,以获取受管系统的完整磁盘详细信息. 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:         50783192minion2:   ----------   /:      ----------      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:         Trueminion2:   ----------   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 格式.