Ansible是一套软件工具,其可实现基础架构即程式码(英语:Infrastructure as code)。它是开源的,并且该套件包括软件供应、组态管理和应用程序部署等功能。
Ansible 最初由 Michael DeHaan 编写,并于 2015 年被Red Hat收购,其旨在自动化设定类 Unix系统和Microsoft Windows 的环境。Ansible 是无代理(英语:Software agent)的,借由透过SSH或允许PowerShell执行的Windows 远端管理机制来建立临时远端连线。 Ansible 的控制节点在大多数已安装Python的类 Unix 系统上执行,亦包含安装了WSL的 Windows系统。 系统组态(英语:System configuration)部分是透过使用它自己的宣告式语言来定义的。
"ansible"一词是由Ursula K. Le Guin在她 1966 年的小说中所创造的,指的是虚构的即时通讯系统。
Ansible 工具是由供应服务器应用程序Cobbler的作者与用于远端管理的Fedora 统一网络控制器(Func) 框架其合著者 Michael DeHaan 所开发。
Ansible, Inc. (原 AnsibleWorks, Inc.) 是由 Michael DeHaan、Timothy Gerla 和 Saïd Ziouani 于 2013 年所创立的公司,旨在为 Ansible 提供商业支持和赞助。 红帽公司 于2015 年 10 月收购了 Ansible。
Ansible 被包含在Red Hat所拥有的 Fedora Linux 发行版中,也可透过 Extra Packages for Enterprise (EPEL) 套件用于Red Hat Enterprise Linux、CentOS、openSUSE、SUSE Linux Enterprise、Debian、Ubuntu、Scientific Linux和Oracle Linux以及其他作业系统。
Ansible 借由选择以简单的 ASCII 文字档案来储存的部分 Ansible 存储库来帮助管理多台设备。存储库是可配置的,而目标机器的存储库可以动态取得,也可以从云端服务中不同档案格式 (YAML、INI)的来源中取得。
从 2014 年以来,敏感资料可以使用 Ansible Vault 储存在加密文件中。与其他流行的组态管理软件 (如Chef 、 Puppet 、 Salt和CFEngine) 相比,Ansible 使用,亦即 Ansible 软件无须在控制节点上正常运行,甚至无须安装在控制节点上。Ansible 借由透过 SSH 临时在节点上安装和执行模组来管理节点。在执行一个管理任务期间,执行模组的行程使用基于JSON的协定在其标准输出入界面来与被控制的机器沟通。当 Ansible 不管理节点时,因为没有执行任何后台程式或安装任何软件。 ,它不会消耗节点上的资源
Ansible 要求在所有被管理的机器上安装Python ,包含pip套件管理器、组态管理软件以及其相依套件。受控网络设备不需要额外的相依套件,并且是无代理状态的。
控制节点 (主控主机) 主要是在管理 (协调) 目标机器(称为 "存储库" 的节点,见下文)的运作。 控制节点仅适用于Linux等操作系统,不支援Windows操作系统。其允许多个控制节点。 Ansible 不需要单一控制机器来进行协调管理,其确保可用简单的方式来做灾难复原。节点是由控制节点透过SSH来管理。
Ansible 的设计目标包括:
模组大多是独立的,可以用标准脚本语言 (如 Python、Perl、Ruby、Bash 等) 来撰写。模组的指导目标之一是幂等性,这意味着即使多次重复操作 (例如从系统错误中复原时),它也会始终将系统置于相同的状态。
目标节点的位置是透过 (在 Linux 系统上) 位于 /etc/ansible/hosts
的清单配置列表 (INI或YAML格式) 来指定。 配置文件列出了 Ansible 可访问的每个节点的 IP 地址或主机名称。此外,可以用群组的方式来分配节点。
以下是一份范例清单 (INI 格式):
192.168.6.1foo.example.combar.example.com