7

我发现自己一直在角色任务之间感到困惑。

我知道标签是一种标记单个项目的方法,但我很困惑如何使用它们。

假设我必须执行以下操作

Users
  Create a user named "deploy"
  Add ssh key for "deploy" user

Git
  Install git
  Clone some git repo

“用户”和“Git”会是我在顶级 YML 文件中的两个主要角色吗?每个子项(例如“安装 Git”)是一项任务吗?我会用标签标记每个子任务吗?还是我用标签标记角色?

只是寻找 Ansible 层次结构的概述。

4

1 回答 1

8

tl; dr任务是单个声明(操作);角色是对任务进行分组的多种方式之一。

  • Ansible 中的任务是基本的工作单元,是其他语言中一行代码的对应物。

    一个任务被执行并且有一个结果(ok、changed、failed)。

    在大多数情况下,任务调用处理幂等性的动作模块,使任务成为编程的声明性单元。

    但是,有些任务执行元操作、包含和包装其他命令。

  • Ansible 中的角色是许多抽象层之一,用于将一组任务(加上默认数据、模板、处理程序、文件)分组为更复杂的定义。

    角色隐藏了实现细节(类似于其他语言中的函数、过程、方法)并允许轻松重用代码。

“用户”和“Git”会是我在顶级 YML 文件中的两个主要角色吗?

在 Ansible 中没有单一的方式来组织事物。您可以使用不同的构造实现相同的结果:角色、包含、条件等。

如何使用 Ansible 取决于您(和您的组织)的目标:您可以创建 Ansible 剧本,以便它们阅读起来就像描述配置的完整、包含的线性文档;或者您可以创建具有依赖关系、抽象级别和模块化架构的复杂配置。

于 2017-03-13T00:39:47.333 回答