理解SaltStack(4) – 远程执行

本文介绍salt远程执行系统是如何工作的。
salt一开始就是设计成为一个远程执行工具的,salt中其它子系统对远程执行使用非常频繁。

  • salt命令设计能跨系统和跨平台工作。根据目标平台情况salt ‘*’ pkg.install git命令使用yum,apt,pacman或salt的windows包仓库安装git软件。一个命令支持多个系统。
  • salt命令以一致的数据结构返回结果。这样使得测试结果和存储结果到数据库变得容易。
  • 由于接收命令是异步的,所有的目标系统能同时执行一个任务。
  • salt使用数百个python模块库完成远程管理,并且你可以添加自己的模块(或最好贡献你的模块到项目!)。任何能通过Python,shell命令或者任何其它接口访问的程序或服务都可以封装一个salt执行模块来执行任务。
  • 远程执行系统通过salt命令行来访问。让我们来尝试执行一个简单的命令,然后通过salt系统来跟踪它:

    1. salt '*' test.rand_sleep 120

    基于我们对salt通信系统的了解,下面是这个命令的一些底层行为:

  • 1.此命令通过publisher端口发送到所有已连接的minions。
  • 2.所有minon检查此命令,评估自身与命令带的target字段是否匹配以此来决定是否应该执行这个命令。
  • 3.目标系统执行命令并返回结果给request server。
  • 我们来深入了解,当在minon执行命令时发生了什么。首先每个命令分到一个单独的工作线程,所以salt minion能同时执行多个任务。
    那么在minion谁来执行test.rand_sleep 120命令?当然是salt执行模块!
    所有用来管理系统的命令都由salt执行模块来提供。这些模块就是在salt中做实际的工作的,并且你只要用一次后就大概知道它们如何工作了。
    当salt minion收到一个命令,找到正确的模块(在这个示例中是test模块),然后调用相关的函数(rand_sleep)及其参数(120)。

    标签:SaltStack 发布于:2019-11-20 20:03:37