怎么利用循环迭代任务?

一个简单的循环在一个 items 列表上迭代一个任务。task 中添加 loop 关键字,并将 items 列表进行迭代。循环变量 item 保存每次迭代期间使用的值

loop 列表可以用变量表示:

循环字典列表:

也可将 register 关键字用于输出循环的结果

怎样进行有条件的运行任务?

语法:when:

when 表达式不属于模块,必须放在模块外部

单个条件:

注意:用于测试条件中相等的 == 运算符不可与变量赋值的 = 运算符混淆

多个条件:

  1. 一个 when 语句可用于评估多个值。为此,可以使用 and 和 or 关键字组合条件,或使用括号分组条件
  2. 在组合使用 when 和 loop 时,when 语句将对loop的每一项目进行处理
  3. 捕捉一个play的结果作为条件

为什么使用Ansible处理程序?它的执行时机?

有时,在任务更改系统时,可能需要运行进一步的任务。例如,更改服务配置文件时可能要求重新加载该服务以使更改的配置生效 。

  1. handler 程序响应由其他任务触发通知的任务。在 playbook 中任务块的末尾触发。如果包含 notify 的任务没有执行(例如,软件包已经安装),则 handler程序不会获得通知,它就不会运行。只有相关任务获得了 CHANGED 状态,Ansible 才会通知处理程序。
  2. 如果有一个或多个任务通handler 程序它会在play 中所有其他任务完成后仅运行一次
  3. 因为 handler 程序就是任务,所以管理员可以在 handler 程序中使用各种模块。通常,handler 程序被用于重新引导主机和重新启动服务
  4. 处理程序名称存在于全局命名空间中。如果两个处理程序被错误地给予相同的名称,则仅会运行一个

有哪些管理Play中任务错误的方法?

忽略任务失败:默认情况下,如果某一任务失败,play 将中止,可以通过跳过失败的任务来覆盖此行为。需要在任务中使用 ignore_errors 关键字

强制执行处理程序:默认情况下,如果通知处理程序的任务失败,则该处理程序也会被跳过。使用 force_handlers: yes 关键字来覆盖此行为

指定任务失败:任务本身可以成功,但希望基于某标准将任务标记为失败。将 failed_when 关键字用于任务。

示例:

覆盖 changed 状态:如果任务不在受管主机上执行任何更改,处理程序会被跳过。changed_when 关键字可用于覆盖 changed 状态,处理程序依然执行。例如,如果管理员希望在每次运行 playbook 时重新启动某一服务

三个关键字block、rescue、always内容的处理策略?

- block: 定义要运行的主要任务

- rescue: 定义将在 block 子句中定义的任务失败时运行的任务

- always: 定义始终都独立运行的任务,不论 block 和 rescue 子句中定义的任务是成功还是失败

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐