我发现自己总是在角色和任务之间感到困惑。
我认为标签是标记单个项目的一种方式,但我很困惑如何使用它们。
假设我必须执行以下操作
Users
Create a user named "deploy"
Add ssh key for "deploy" user
Git
Install git
Clone some git repo
“用户”和“Git”会成为我在顶级YML文件中的两个主要角色吗?每个子项目(例如“安装Git”)都是一项任务吗?我会用标签标记每个子任务吗?或者我用标签标记角色?
只是寻找Ansible层次结构的概述。
答案 0 :(得分:6)
tl; dr 任务是单一声明(操作);角色是分组任务的众多方法之一。
Ansible中的任务是一个基本工作单元,与其他语言中的一行代码相对应。
执行任务并产生结果(确定,更改,失败)。
在大多数情况下,任务调用一个动作模块来处理幂等性,使任务成为编程的声明单元。
但是,有些任务执行其他命令的元操作,包含和包装。
Ansible中的一个角色是众多抽象层之一,用于将一组任务(以及默认数据,模板,处理程序,文件)分组为更复杂的定义。
角色隐藏实现细节(类似于其他语言中的函数,过程和方法),并允许轻松重用代码。
"用户"和" Git"是我在顶级YML文件中的两个主要角色?
在Ansible中没有单一的方法来组织事物。您可以使用不同的结构实现相同的结果:角色,包含,条件等。
你如何使用Ansible取决于你(和你的组织)的目标:你可以创建Ansible playbooks,使它们读起来像描述配置的完整,包含的线性文档;或者您可以创建具有依赖关系,抽象级别和模块化架构的复杂配置。