当前位置: 首页 > news >正文

Asible管理变量和事实和实施任务控制

第三章 管理变量和事实

1、通过变量,可以轻松地在Ansible项目中管理给定环境的动态值,例如:

-要创建的用户

-要安装的软件包

-要重新启动的服务

-要删除的文件

-要从互联网检索的存档

2.变量由字符串组成,必须由字母开头,并且只能含有字母、数字和下划线

3.变量的定义方式

(1)playbook变量可通过多种方式定义。最简单的方式是将它放在playbook开头的vars块中。

(2)也可以在外部文件中定义playbook变量。此时不使用vars,使用vars_files指令,而后,以YAML格式在文件中定义playbook变量

第四章 实施任务控制

(一).使用循环来编写高效的任务,并使用条件控制运行任务的时间

1.使用loop关键字添加到任务中,将应对其迭代任务的项目列表取为值,循环变量item保存每个迭代过程中使用的值。例如:以下代码使用两次service模块确保两个网络服务处于运行状态

- name: Postfix is runningansible.builtin.service:name: postfixstate: started- name: Dovecot is runningansible.builtin.service:name: dovecotstate: started

使用loop循环将两个代码重新编写为一个简单循环

- name: Postfix and Dovecot are runningansible.builtin.service:name: "{{ item }}"state: startedloop: - postfix- dovecot

2.循环字典列表:以下示例中,列表中的每一项实际时字典,每个字典均有两个键

- name: Users exist and are in the correct groupsuser:name: "{{ item['name'] }}"state: presentgroups: "{{ item['groups'] }}"loop:- name: janegroups: wheel- name: joegroups: root

3.老版样式的循环关键字:with_items,可以和loop相互转换


vars:data:- user0- user1- user2
tasks:- name: "with_items"ansible.builtin.debug:msg: "{{ item }}"with_items: "{{ date }}"
条件任务语法:

when 语句只是任务中的又一个键,就如任务的名称及其所使用的模块一样。

when关键字的使用:

(1)使用or语句

(2)使用and运算符

(3)使用列表来描述条件列表

(4)使用括号分组来表达更复杂的条件语句

(二).实施仅在另一个任务更改托管主机时运行的任务(处理程序)

描述:在任务更改后才执行的任务——处理程序handlers,并且是在tasks下所有的任务都运行结束之后再执行

处理程序用于再任务对受管主机进行更改时执行额外操作,它们不应用作正常任务的替代。

(三).控制任务失败时发生的情况,以及导致任务失败的条件。

当任务失败时,ansible会跳过后续所有的任务。

如果想要任务失败后还继续执行play,可以使用下面几个方法:

1.忽略任务失败:

使用ignore_errors关键字

2.任务失败后强制执行处理程序

如果任务失败并且play在该主机中止,则收到play中早前任务通知的处理程序将不会运行。如果您在play中设置force_handlers:yes关键字,则即使play因为后续任务失败而终止也会调用被通知的处理程序。

注意:处理程序会在任务报告changed结果时获得通知,而在任务报告ok或者failed结果时不会获得通知。

3.指定任务失败条件

在任务中使用failed_when关键字来指定表示任务已失败的条件。这通常用于可能成功执行命令,但命令输出指示失败的命令模块。

4.指定任务何时报告“Changed"结果

使用changed_when关键字可以控制任务如何报告其已更改受管主机上的某些内容

- name: Validate httpd configurationansible.builtin.command: httpd -tchanged_when: falseregister: httpd_config_status

hanged_when: false:因为 “验证配置” 这个操作,本身并不会对目标主机的系统状态(比如文件、服务等)产生实质性改变,只是做检查。所以通过设置 changed_when: false,强制让这个任务执行后,changed 状态始终为 false,这样在 Ansible 执行结果中,该任务就只会报告 ok(如果命令执行成功,配置验证通过)或者 failed(如果命令执行失败,配置有问题),而不会错误地显示 changed

http://www.dtcms.com/a/360338.html

相关文章:

  • 科学研究系统性思维的方法体系:研究设计相关模版
  • 【Unity3D实例-功能-切换武器】切换武器(一)动画配置
  • IAR 用JLINK 下载代码设置步骤
  • FLEXPART 拉格朗日粒子扩散模式建模技术及研究大气污染物源-汇关系中的实践
  • 订餐后台管理系统-day06菜品分类模块
  • 工业软件领域SAAS模式为何不能得到普及?
  • 上海交大具身导航中的感知智能、社会智能和运动智能全面综述
  • 网络端口与服务对应表 - 白帽子安全参考指南
  • Android开发-设计规范
  • 安装proteus,并实现stm32仿真
  • 当 AI 开始 “筛选” 信息:算法偏见会加剧认知鸿沟吗?如何构建公平的 AI 生态?
  • 深入解析 Oracle 并发与锁机制:高并发环境下的数据一致性之道
  • Log File Sync等待事件分析
  • linux日志同步
  • strtok()字符串分隔函数
  • OpenStack 01:介绍
  • Batch Normalization 批归一化
  • 实现自己的AI视频监控系统-第三章-信息的推送与共享1
  • AI辅助编程日记和chat历史开源Series 1:VSCode + GitHub Copilot 自动下载及安装软件
  • 大模型训练全流程
  • 在deepseek v3.1上加自信度参数的外挂方案,plugin,朝向一步一步
  • [光学原理与应用-361]:ZEMAX - 分析 - 像差分析
  • Win32学习笔记 | recv函数
  • MVC架构模式
  • XXL-JOB任务执行The access token is wrong问题分析解决及原理源码解析
  • 【Linux】linux进程 vs 线程
  • 《WINDOWS 环境下32位汇编语言程序设计》第9章 通用控件(2)
  • Modbus CRC16校验码在线计算器
  • Python训练营打卡Day49-神经网络调参指南
  • 大模型参数量与计算量(FLOPs)估算方法