ansible - Ansible 中的角色和任务(和标签)有什么区别?

标签 ansible ansible-role

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

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

假设我必须执行以下操作

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

Git
  Install git
  Clone some git repo

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

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

最佳答案

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

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

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

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

    但是,有些任务执行元操作、包含和包装其他命令。
  • Ansible 中的角色是许多抽象层之一,用于将一组任务(加上默认数据、模板、处理程序、文件)分组为更复杂的定义。

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

  • Would "Users" and "Git" be my two main roles in the top level YML file?



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

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

    关于ansible - Ansible 中的角色和任务(和标签)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42754594/

    相关文章:

    ansible - ansible 中的双 with_items 循环

    ansible - 警告 : Ansible evaluating bare variable. 如何正确实现?

    Ansible 忽略任务中的错误,如果任何任务有错误,则在剧本末尾失败

    ansible - 替换 block 中的正则表达式之前和之后 - 插入符未按预期工作

    安塞 bool /金贾 : Conditional port publishing in Docker/Podman

    ansible - “dict对象”没有属性 'stdout_lines'

    docker - 如何更改 elasticsearch docker 容器内目录的所有者权限?

    ansible - 在具有操作系统特定默认值的角色中定义 Ansible 变量,该默认值可以轻松覆盖

    ansible - ansible 可以在剧本中间获取更新的事实吗?