Documentation

10. 术语表

临时(Ad Hoc)

运行 Ansible 来执行一些快速命令,它使用 /usr/bin/ansible,而不是编配语言 /usr/bin/ansible-playbook。例如,可以使用临时命令在您的基础架构中重新引导 50 台机器。通过临时命令实现的工作均可通过编写 Playbook 来完成,而且 Playbook 还可以将许多其他操作粘接在一起。

回调插件(Callback Plugin)

用户编写的代码,这些代码可以从 Ansible 截取结果,并使用它们。GitHub 项目中提供的一些示例,如执行自定义日志记录、发送电子邮件,甚至播放音效。

控制组

也称为 'cgroups',控制组是 Linux 内核中的功能,允许分组和分配资源以运行某些进程。除了为进程分配资源外,cgroups 还能报告在 cgroup 中运行的所有进程的实际资源使用情况。

检查模式

使用 --check 选项运行 Ansible。该选项不会对远程系统进行任何更改,只输出当命令不带此标志运行时可能发生的更改。这与其他系统中的所谓“干运行(dry run)”模式类似。用户应该注意,此模式不考虑意外的命令失败或级联效应(这与其他系统中的类似模式一样)。使用该模式可以了解可能发生的情况,但不能代替临时(stage)环境。

容器组

容器组是实例组的一种类型,用于指定在运行任务的 Kubernetes 或 OpenShift 集群中置备 pod 的配置。这些 pod 是按需置备的,仅存在于 playbook 运行期间。

凭证

身份验证详情,Tower 使用它来针对机器启动任务、与清单源同步以及从版本控制系统中导入项目内容。

凭证插件

Python 代码,包含外部凭证类型、其元数据字段以及与 secret 管理系统交互所需代码的定义。

分布式作业

由作业模板、清单和分片大小组成的作业(job)。当执行分布式作业时,该作业会将每个清单划分为多个“分片大小(slice size)”的区块,然后用于运行较小的作业分片。

外部凭证类型

Tower 的受管凭证类型,用于使用 secret 管理系统进行身份验证。

事实

“事实(fact)”是发现的有关远程节点的情况。虽然可以在 playbook 和模板中像使用变量一样使用它们,但事实是推断的情况,而不是设置的情况。当通过在远程节点上执行内部设置模块来运行 play 时,会自动发现事实。您不必显式调用设置模块,它会运行,但是如果不需要该模块,也可以将其禁用以节省时间。为了方便从其他配置管理系统切换过来的用户,事实模块还从 ‘ohai’ 和 ‘facter’ 工具(如果已安装)拉取 (pull) 事实,这两种工具分别是来自 Chef 和 Puppet 的事实库。

分叉(fork)

Ansible 和 Tower 以并行方式与远程节点对话,并可以多种方式设置并行级别:在创建或编辑任务模板时,通过传递 --forks,或通过编辑配置文件中的默认值。默认值是非常保守的 5 个 fork,但是如果您有大量的 RAM,您可以轻松地将它设置为类似 50 的值来增加并行性。

Ansible 中的一组主机,其中多个主机可能存在于单个清单中。

组变量

group_vars/ 文件是与清单文件共存在目录中的文件,具有以每个组命名的可选文件名。这是放置为给定组提供的变量(特别是复杂的数据结构)的便利位置,因此这些变量不必嵌入到清单文件或 playbook 中。

处理程序(handler)

处理程序与 Ansible playbook 中的常规任务类似(请参阅“任务”),但只有在任务包含一个“notify”指令且表明该指令做出更改时才运行。例如,如果更改了配置文件,则引用配置文件模板操作的任务可能会通知服务重启处理程序。这意味着只有在需要重启服务时,服务才可以退回。处理程序可以用于服务重启以外的其他事务,但服务重启最为常见。

主机

Tower 管理的系统。可能包含物理、虚拟、基于云的服务器或其他设备。操作系统实例就是一个典型的主机。主机包含在清单中,有时称为“节点(node)”。

主机指定符

Ansible 中的每个 Play 会将一系列任务(定义系统的角色、目的或顺序)映射到一组系统。每个 play 中的这个“hosts:”指令通常称为主机指定符。它可以选择一个系统、多个系统、一个或多个组,甚至在一个组中且不在另一组中的一些主机。

实例组

在集群环境中使用的实例的组。实例组提供根据策略对实例进行分组的能力。

清单(inventory)

可对其启动任务的主机集合。

清单脚本

一个非常简单的程序(或复杂的程序),它查找主机、主机的组成员资格以及外部资源(SQL 数据库、CMDB 解决方案或者类似 LDAP 的协议)的变量信息 。这个概念来源于 Puppet(被称为“外部节点分类器”),工作方式差类似。

清单源

有关应当合并到当前清单组中的云或其它脚本的信息,从而可自动填充组、主机以及有关这些组和主机的变量。

作业(job)

Tower 启动的许多后台任务之一,它通常是实例化作业模板来启动 Ansible playbook。其他类型的作业包括清单导入、使用源控制对项目进行同步或管理清理操作。

作业详情

运行特定作业的历史记录,包括其输出和成功/失败状态。

作业分片

请查看 Distributed Job

任务模板

Ansible playbook 以及启动它所需的一组参数的组合。

JSON

Ansible 和 Tower 使用 JSON 从远程模块返回数据。这允许使用任何语言编写的模块,而不只是 Python 编写的模块。

元数据

身份验证后,用于在外部系统中查找 secret 的信息。用户在将外部凭证链接到目标凭证字段时提供该信息。

通知模板

通知类型的实例(电子邮件、Slack 、Webhook 等),其名称、描述和定义的配置。

通知

通知模板的清单;例如,任务失败时使用通知模板定义的配置发送通知。

通知

任务注册更改事件并通知处理器任务在 play 结束时需要运行另一个操作的动作。如果多个任务通知了同一个处理器,它仍将只运行一次。处理程序会按照列出顺序运行,而不是按照通知的顺序运行。

机构(Organization)

用户、团队、项目和清单的逻辑集合。Tower 对象层次结构的最高级别为机构。

机构管理员

拥有修改机构成员资格和设置权限的 Tower 用户,包括在该机构内创建新用户和项目。机构管理员也可以向该机构内的其他用户授予权限。

权限

分配给用户和团队的权限集,它提供读取、修改和管理项目、清单和其他 Tower 对象的能力。

Play

Playbook 是 play 的列表。一个 play 至少是一组由主机指定符选择的(通常由组选择,但有时由主机名 glob 选择)主机和那些主机上运行的任务之间的映射,用来定义那些系统要执行的角色。playbook 中可以有一个或多个 play。

Playbook

一个 Ansible playbook。如需更多信息,请参阅 http://docs.ansible.com/

策略

策略指定实例组的行为方式以及任务的执行方式。

项目

Tower 中的 Ansible playbook 的逻辑集合。

角色

角色是 Ansible 和 Tower 中的机构单元。将角色分配给一组主机(或一系列组或主机模式等)意味着它们应当实现特定的行为。角色可能包括应用某些变量值、某些任务以及某些处理程序或者只是一个或多个这些事项。因为与角色关联的文件结构,角色会成为可重新分配的单元,以便您可以在 playbook 中或与其他用户共享行为。

Secret 管理系统

用于安全存储并控制对令牌、密码、证书、加密密钥和其他敏感数据的访问的服务器或服务。

调度

作业应自动运行的日期和时间日历。

分片作业

请查看 Distributed Job

源凭证

链接到目标凭证字段的外部凭证。

Sudo

Ansible 不需要使用 root 进行登陆,因为它没有守护进程,也就不需要 root 级守护的进程(在一个敏感的环境中,root 一级的守护进程可能会造成安全问题)。Ansible 可以登录并使用 sudo 命令执行多个操作,并可同时使用无密码和基于密码的 sudo。在以 sudo 模式运行时,某些通常无法使用 sudo``(如 ``scp 文件传输)的操作可以通过 Ansible 的 copytemplatefetch 模块实现。

超级用户(Superuser)

Tower 服务器的管理员,无论其是否与任何机构相关联,都有权限编辑系统中的任何对象。超级用户可以创建机构和其他超级用户。

问卷调查

在作业启动时由作业模板询问的问题,可在作业模板上配置。

目标凭证

一个非外部的凭证,它带有一个输入字段,用来链接到外部凭证。

团队(team)

具有关联用户、项目、凭证和权限的机构子部门。团队提供了一种方法来实现基于角色的访问控制方案,并跨机构委派责任。

用户

具有相关权限和凭证的 Tower 操作员。

Webhook

Webhook 允许应用程序间的通信和信息共享。它们用于响应推送到 SCM 的提交以及启动作业模板或工作流模板。

工作流作业模板

由任何作业模板组合、项目同步和清单同步组成的集合,将它们链接在一起,以便以单个单元的形式执行。

YAML

Ansible 和 Tower 使用 YAML 来定义 playbook 配置语言和变量文件。YAML 的语法简单、非常清洁且方便用户浏览。它适用于配置文件及用户使用,但也可被机器读取。YAML 在动态语言社区中很受欢迎,格式具有可用于多种语言(Python、Perl、Ruby 等)序列化的库。