Ansible 中的角色和任务(以及标签)有什么区别?
What's the difference between roles and tasks (and tags) in Ansible?
我发现自己一直在 角色 和 任务 之间感到困惑。
我知道标签是标记单个项目的一种方式,但我不知道如何使用它们。
假设我必须执行以下操作
Users
Create a user named "deploy"
Add ssh key for "deploy" user
Git
Install git
Clone some git repo
"Users" 和 "Git" 会是我在顶级 YML 文件中的两个主要角色吗?每个子项目(例如 "Install Git")都是一项任务吗?我会用标签标记每个子任务吗?还是我用标签来标记角色?
只是在寻找 Ansible 层次结构的概述。
tl;dr一个任务就是一个声明(操作);角色是对任务进行分组的多种方式之一。
Ansible 中的任务是一个基本的工作单元,是其他语言中一行代码的对应物。
一个任务被执行并有一个结果(ok,changed,failed)。
在大多数情况下,任务调用负责幂等性的操作模块,使任务成为编程的声明单元。
但是,有些任务会执行元操作、包含和包装其他命令。
Ansible 中的角色是许多抽象层之一,用于将一组任务(加上默认数据、模板、处理程序、文件)分组为更复杂的定义。
角色隐藏实现细节(类似于其他语言中的函数、过程、方法)并允许轻松重用代码。
Would "Users" and "Git" be my two main roles in the top level YML file?
在 Ansible 中没有单一的组织方式。您可以使用不同的结构获得相同的结果:角色、包含、条件等。
你如何使用 Ansible 取决于你(和你的组织)的目标:你可以创建 Ansible 剧本,这样它们读起来就像一个完整的、包含的、描述配置的线性文档;或者您可以创建具有依赖性、抽象级别和模块化架构的复杂配置。
我发现自己一直在 角色 和 任务 之间感到困惑。
我知道标签是标记单个项目的一种方式,但我不知道如何使用它们。
假设我必须执行以下操作
Users
Create a user named "deploy"
Add ssh key for "deploy" user
Git
Install git
Clone some git repo
"Users" 和 "Git" 会是我在顶级 YML 文件中的两个主要角色吗?每个子项目(例如 "Install Git")都是一项任务吗?我会用标签标记每个子任务吗?还是我用标签来标记角色?
只是在寻找 Ansible 层次结构的概述。
tl;dr一个任务就是一个声明(操作);角色是对任务进行分组的多种方式之一。
Ansible 中的任务是一个基本的工作单元,是其他语言中一行代码的对应物。
一个任务被执行并有一个结果(ok,changed,failed)。
在大多数情况下,任务调用负责幂等性的操作模块,使任务成为编程的声明单元。
但是,有些任务会执行元操作、包含和包装其他命令。
Ansible 中的角色是许多抽象层之一,用于将一组任务(加上默认数据、模板、处理程序、文件)分组为更复杂的定义。
角色隐藏实现细节(类似于其他语言中的函数、过程、方法)并允许轻松重用代码。
Would "Users" and "Git" be my two main roles in the top level YML file?
在 Ansible 中没有单一的组织方式。您可以使用不同的结构获得相同的结果:角色、包含、条件等。
你如何使用 Ansible 取决于你(和你的组织)的目标:你可以创建 Ansible 剧本,这样它们读起来就像一个完整的、包含的、描述配置的线性文档;或者您可以创建具有依赖性、抽象级别和模块化架构的复杂配置。