【问题标题】:What's the difference between roles and tasks (and tags) in Ansible?Ansible 中的角色和任务(和标签)有什么区别?
【发布时间】:2017-08-02 22:27:17
【问题描述】:

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

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

假设我必须执行以下操作

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

Git
  Install git
  Clone some git repo

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

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

【问题讨论】:

标签: ansible ansible-role


【解决方案1】:

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

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

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

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 2015-02-26
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2017-02-10
    • 2011-04-16
    相关资源
    最近更新 更多