Salt和Ansible最初都是作为执行引擎构建的。也就是说,如果需要,它们允许在一个或多个远程系统上并行执行命令。
Ansible支持在多台计算机上执行任意命令行命令。它还支持执行模块。一个Ansible模块基本上是写在一定Ansible友好的方式一个Python模块。大多数标准的Ansible模块都是同等的。这意味着你告诉他们你希望系统进入的状态,并且模块尝试使系统看起来像这样。
Ansible有Playbook的概念 。Playbook是一个文件,为一组主机定义了一系列模块执行。Playbook可以改变执行主机模块的方式。这样就可以协调多台计算机,例如在升级应用程序之前将它们从负载平衡器中取出。
Salt有两种类型的模块;execution(执行)模块和 state(状态)模块。执行模块是简单地执行某些操作的模块,它可以是命令行执行或下载文件。状态模块更像Ansible模块,其中参数定义状态,然后模块尝试实现该结束状态。通常,状态模块在大多数工作中都使用执行模块。
状态模块是使用state执行模块执行的。状态模块还支持在称为SLS文件的文件中定义状态。在top.sls文件中定义了哪些状态适用于哪些主机 。
Playbook和SLS文件(通常)都是用YAML编写的。
作为一个旁注,我想指出一个远程执行引擎对于诸如在多台机器上启动特定操作之类的任务非常有用。