Ansible中角色和任务(和标签)之间的区别是什么?

时间:2017-03-12 23:48:24

标签: 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层次结构的概述。

1 个答案:

答案 0 :(得分:6)

tl; dr 任务是单一声明(操作);角色是分组任务的众多方法之一。

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

    执行任务并产生结果(确定,更改,失败)。

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

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

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

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

  

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

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

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

相关问题