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

2024-03-29

我发现自己很困惑roles and tasks每时每刻。

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

假设我必须执行以下操作

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

Git
  Install git
  Clone some git repo

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

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


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

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

    任务被执行并产生结果(正常、更改、失败)。

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

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

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ansible 中的角色和任务(和标签)有什么区别? 的相关文章

  • Ansible/Jinja2 - 映射列表中的嵌套键

    当映射嵌套变量列表中的属性时 我无法检索其键 我想从下面检索 tls cert file 的密钥强调文字变量 vault config listener tcp address 0 0 0 0 8200 tls cert file etc
  • Ansible 将变量传递给角色

    我想根据环境和主机名创建文件夹 用户和组 我的剧本将环境和主机名传递给角色 该角色应该从 defaults main yml 文件中选择正确的数据 剧本 roles role myrole environment xxx hostname
  • 在 ansible shell 命令中使用 {{ 和 }}

    我的剧本里有这个 name Get facts about containers shell docker ps f name jenkins format raw Names endraw register container 请注意 我
  • 使用 jinja 的 Ansible set_fact 列表

    我正在尝试学习 jinja 和 Ansible 这是在 RHEL 7 9 上 ansible 2 9 27 ansible python module location usr lib python2 7 site packages ans
  • Ansible:迭代字典列表 - 循环与 with_items

    当尝试迭代字典列表时 使用循环与 with items 时 我得到不同的结果 我尝试过使用loop dict2items 该结构不是字典 它告诉了我很多信息 呵呵 并使用展平过滤器进行循环 这是字典列表 msg id id1 ip ip1
  • Ansible、瞻博网络 CLI 命令。超时错误?

    我正在尝试将我用 Python 编写的自动化脚本传输到 ansible 公司请求 但我以前从未使用过 ansible 我已经尝试过 wait for 但我也没有让它发挥作用 在脚本中 我可以设置 dev timeout None 或我需要的
  • 如何在 ansible git 模块中使用远程计算机的 SSH 密钥

    我一直在尝试让 Ansible 来配置远程计算机 并且我希望远程计算机能够使用自己的密钥进行设置 并且能够从 Bitbucket 克隆 git 存储库 用户已设置 拥有自己的 id rsa pub 并且密钥已注册到 bitbucket 但是
  • Ansible:SSH 错误:unix_listener:对于 Unix 域套接字来说太长

    这是一个已知问题 我找到了解决方案 但它对我不起作用 首先我有 fatal openshift node compute e50xx gt SSH Error ControlPath too long It is sometimes use
  • 如果定义了 item,则 Ansible with_items

    安塞布尔 1 9 4 该脚本应该仅在定义了某些变量的主机上执行某些任务 正常情况下可以正常工作 但与with items陈述 debug var symlinks when symlinks is defined name Create o
  • Ansible inventory:aws_ec2 模块——寻找工作“groups:”函数的示例

    我有一个使用 aws ec2 模块的动态 ansible 库存 一般来说 它运作得很好 然而 有一个问题 我曾多次尝试使用 groups 关键字创建组 但所有尝试都失败了 文档有点稀疏 事实上 完整的文档就在这里 groups dictio
  • 将整数变量传递给任务而不丢失整数类型

    我有一个我不拥有的任务 实际上是一个角色 但在这里使用任务是为了使示例更容易 它对变量进行一些操作 它假设变量是整数 我需要以某种方式向它传递一个变量并将其作为 int 传递 但我没有任何运气 这是我不拥有的任务的超级简化版本 frob y
  • 从 dict 列表中删除一个项目并分割 stdout_lines

    我试图从字典列表中删除一个项目 即 未找到结果 的项目 validar LPARNAME No results were found LPARNAME server1 server2 server4 LPARNAME server3
  • 获取 Ansible 控制机 IP 地址的最佳方法

    我正在使用 Ansible 和ufw在我的服务器上设置防火墙 作为ufw规则 我希望允许来自 Ansible 控制机的 SSH 但不允许来自其他任何地方 我的问题是 获取控制机本身的 IP 地址以便我可以将其放入规则中的最佳方法是什么 我知
  • 将变量内容复制到事实中后,Ansible 会抛出错误

    我有变量 其中包含带有其他模板引擎标记的字符串 不幸的是它们是三个花括号 如果我直接使用这些变量 一切都很好 如果我将它们复制到事实中以便随后修改它们 Ansible 会抛出错误 示例剧本 hosts localhost connectio
  • 安西布尔。覆盖单个字典键[重复]

    这个问题在这里已经有答案了 我使用 ansible 来管理生产和 vagrant box 的配置 我有带有默认值的文件 组变量 全部 env prod wwwuser www data db root pwd root pwd pdo dr
  • 用于下载文件的 S3 模块在 ansible 中不起作用

    这是为从 S3 存储桶 artefact test 下载文件而编写的 ansible 代码 name Download customization artifacts from S3 s3 bucket artefact test obje
  • 如果不满足某些条件,如何跳过ansible剧本中的所有其他剧本?

    我在下面的剧本中有多个剧本 如果不满足某些条件 我想忽略所有其他戏剧 因此 对于下面的示例 如果我在中找不到任何新文件Play1然后我不想执行Play2 and Play3根本没有 它应该跳过它 我怎样才能做到这一点 I have end
  • Cygwin - 如何安装 ansible?

    如何使用 Cygwin 获取 安装 ansible 我尝试了以下步骤 但在第 5 条期间 运行时 python setup py 安装 步骤取自 取自https servercheck in blog running ansible wit
  • Ansible 权限问题

    我正在尝试将当前用户添加到系统中的某个组 然后执行需要该组权限的命令 我的剧本是这样的 name Add this user to RVM group sudo true user state present name vagrant ap
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my

随机推荐

  • 更新核心数据存储位置以支持应用程序组

    我在 App Store 中已有一个使用核心数据来保存数据的应用程序 现在 当 iOS 8 即将发布时 我想为其添加一个小部件 因此我必须使用应用程序组在二进制文件之间共享数据 但有一个问题 我需要更改商店位置以支持所有现有用户的应用程序组
  • 使用 Python 将 HTML 转为 RTF 字符串

    我正在寻找一种将 HTML 文本转换为 RTF 字符串的方法 有没有任何图书馆可以完成这项工作 我在项目中动态获取 html 内容 并需要将其以 RTF 格式呈现 我正在使用 HTML 解析器将 HTML 文本转换为普通字符串 然后尝试使用
  • Boost.Python - 向量到 Numpy 数组

    我有以下课程 class PyWav public static inline boost python object sdVecToNumpyArray std vector
  • 如何模拟 DefaultCellEditor 的“onStartCellEditing”

    CellEditorListener 有 editingStopped 和 editingCancelled 但是 我如何实现在单元格编辑会话开始时需要运行的一段代码呢 一个典型的示例可能是 当您开始编辑时 您希望 JTextField 编
  • 使用 SQL Server 2016 批量导入 Unicode

    由于我们已经迁移到 SQL Server 2016 我们现在尝试使用非 XML 格式文件和 UTF 8 编码数据文件 使用换行符 Unix LF 通过 BULK IMPORT 将 Unicode 字符导入表中 格式文件指定主机文件数据长度
  • Javafx 删除应用程序启动时的快速白屏

    使用 javafx 7 更新 60 操作系统 Windows 7 我刚刚从那里获取了 helloworldhttp docs oracle com javafx 2 get started hello world htm http docs
  • 如何在客户端使用 Java 读取 gRPC 中的元数据

    我正在使用 Java 和 Protoc 3 0 编译器 我的 proto 文件如下所述 https github com openconfig public blob master release models rpc openconfig
  • 具有多个视图的 Durandal 小部件

    我正在使用 Durandal 开发 SPA 并且我创建了一个用于显示特定页面组件的小部件 继杜兰达尔文档 http durandaljs com documentation Creating A Widget 小部件位于app widget
  • 当图像不存在时,如何使用 CSS 隐藏替代文本?

    是否可以在所有浏览器中使用 CSS 隐藏替代文本 我尝试过color transparent 它适用于除 IE 之外的所有浏览器 可以在 IE 中使用 CSS 实现吗 预先感谢您的任何帮助 怎么样使用font size 0 它在隐藏中起作用
  • 使用 javascript 永久更改 :root .css 变量(通过输入获取变量信息)

    我正在为我正在创建的这个网站开发一个想法 这个想法基本上是要求用户提供颜色输入 12345 一旦输入 用户就会提交输入 这将在所有内容中永久更改 css 变量页 这是我的代码 HTML div class adminpage backgro
  • 无法将 DrawerLayout 放在 StatusBar 下

    我有一个活动Navigation Drawer并使用ScrimInsetsFrameLayout我能够将布局放在StatusBar一切都很顺利 然后我决定更换颜色Toolbar and StatusBar with a png所有活动布局的
  • 如何将 3D 模型从 Cinema4D 导出到 Three.js?

    如果我有一个网格建模4D影院 我怎样才能将其导出three js http github com mrdoob three js3D JS 引擎 另外 导出材料也很方便colors for 多边形选择 为此 我刚刚为 Cinema4D 编写
  • 在VBA中处理错误时如何管理无错误情况? [复制]

    这个问题在这里已经有答案了 我需要使用以下命令捕获一些 VBA 错误GoTo陈述 Sub mySub On Error GoTo errorHandler Workbooks Open myWorkbook Some Code errorH
  • 更改 ggplot 中某些类别的线型?

    我有一些数据 library reshape2 library ggplot2 df data frame cat LETTERS 1 6 VAR1 runif 6 VAR2 runif 6 VAR3 runif 6 VAR4 runif
  • Bash 脚本:使用 Expect 将文件发送到 SFTP

    我必须将一些 gzip 压缩文件从本地服务器发送到 SFTP 服务器 我的服务器信息 发行商 ID Ubuntu 说明 Ubuntu 12 04 4 LTS 发布 12 04 代号 精确 创建了一个 bash 脚本 并且能够将文件发送到 s
  • 仅绘制 QPainter Path 贝塞尔曲线的部分

    我只想绘制 QPainter 曲线路径的一部分 我的路径是这样的 QPointF p 4 p 0 QPoint 100 200 p 1 QPoint 200 60 p 2 QPoint 500 180 p 3 QPoint 600 100
  • 训练鲁棒级联分类器时要考虑的建议?

    我正在训练级联分类器以检测图像中的动物 不幸的是 我的误报率相当高 使用 Haar 和 LBP 超高 使用 HOG 可以接受 我想知道如何改进我的分类器 这是我的问题 鲁棒检测所需的训练样本量是多少 我在某处读到需要 4000 个正样本和
  • R 控制台可以支持后台任务或中断(事件处理)吗?

    在 R 控制台中工作时 我想设置一个后台任务来监视特定连接 并在发生事件时执行另一个函数 警报 或者 我可以进行设置 以便外部函数仅向 R 发送警报 但这似乎是同一个问题 有必要设置一个侦听器 我可以在 R 的专用进程中执行此操作 但我不知
  • 创建对象时抛出异常

    执行catch语句时是否会创建异常对象 例如 catch ArithmeticException someObject 该对象是否不必显式创建为实例 有两件事创建异常的实例第二抛出异常 创建异常的实例例如 看起来像创建类的任何实例NullP
  • Ansible 中的角色和任务(和标签)有什么区别?

    我发现自己很困惑roles and tasks每时每刻 我知道标签是标记单个项目的一种方式 但我很困惑如何使用它们 假设我必须执行以下操作 Users Create a user named deploy Add ssh key for d