当前位置: 首页 > 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.xdnf.cn/news/1414261.html

相关文章:

  • 新手首次操作SEO核心要点
  • 深度学习周报(8.25~8.31)
  • 雪花算法生成分布式ID
  • C++ STL之哈希封装实现unordered_map/set
  • 第4章从一条记录说起-InnoDB记录结构
  • Redis六大常见命令详解:从set/get到过期策略的全方位解析
  • 如何用熵正则化控制注意力分数的分布
  • 【CVTE】C++开发 (提前批一面)
  • 【AI智能体】Dify 实现自然语言转SQL操作数据库实战详解
  • 【Spring】ApplicationListener监听器
  • 【芯片测试篇】:LIN总线
  • AI 赋能 Java 开发效率:全流程痛点解决与实践案例(一)
  • Linux/UNIX系统编程手册笔记:用户和组、进程凭证、时间以及系统限制和选项
  • 利用DeepSeek编写验证xlsx格式文件中是否启用sharedStrings.xml对读写效率影响python程序
  • DRF快速构建RESTful API指南
  • redis详解 (最开始写博客是写redis 纪念日在写一篇redis)
  • C++内存序不迷茫:从CPU缓存一致性理解Memory Order
  • Wi-Fi技术——初识
  • 如何绕过 disable-devtool.js 打开控制台
  • C语言中如何使用NULL
  • 配置 Kubernetes Master 节点不可调度的标准方法
  • stm32F4挂载emmc以及重定义printf
  • ThinkPHP8学习篇(五):数据库(一)
  • 洛谷p2392kkksc03考前临时抱佛脚 详解(回溯,深度搜索法)
  • Redis常见数据类型及应用场景
  • java 安装流程配置
  • 金仓数据库KingbaseES:中国自主原创的数据库领军者
  • 【四位加密】2022-10-25
  • GDPU操作系统实验:生产者消费者问题
  • 【读数笔记】《你的生存本能正在杀死你》