5.5#Anisble中的任务执行控制

2023-10-23 16:49
文章标签 控制 执行 任务 5.5 anisble

本文主要是介绍5.5#Anisble中的任务执行控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验环境:

在这里插入图片描述在这里插入图片描述

1.循环

循环迭代任务

1.1 简单循环
loop:		##赋值列表- value1- value2- ...{{item}}	##迭代变量名称

在这里插入图片描述

实例

运行useradd.yml,依次建立三个用户westos1、westos2、westos3,密码分别为123、456、789

1.2 循环散列或字典列表
---
- name: create filehosts: 172.25.0.254tasks:- name: file moduleservice:name: "{{ item.name}}"state: "{{ item.state }}"loop:- name: httpdstate: started- name: vsftpdstate: stopped
实验:

运行useradd.yml,依次建立三个用户westos1、westos2、westos3,密码分别为123、456、789

在这里插入图片描述

2.条件
when:- 条件1- 条件2
2.1 条件判断
==			value == "字符串",value == 数字
<			value <  数字
>			value >  数字
<=			value <= 数字
>=			value >= 数字 
!=			value != 数字
is defined value	value is defined		变量存在
is not defined		value is not defined	变量不存在
in                  value is in value       变量为    
not in              value is not in value   变量不为
bool变量 为true		value	  value的值为true
bool变量 false		not value value的值为falsevalue in value2	    value的值在value2列表中
实验1:

判断文件是否存在

在这里插入图片描述
在这里插入图片描述

实验2:

检测硬盘是否存在

准备工作:
在这里插入图片描述脚本:
在这里插入图片描述
过程:
在这里插入图片描述
检测:
在这里插入图片描述

实验3:

in

在这里插入图片描述

2.2 多条条件组合

条件1 and 条件2

when:- 条件1- 条件2

条件1 or 条件2

when: >条件1or条件2

实验3:

建立playbook ~/ansibles/lvm.yml要求如下:
*建立大小为1500M名为exam_lvm的lvm 在westos组中
*如果westos不存在请输出:
vg westos is not exist
*如果westos大小不足1500M请输出:
vg westos is less then 1500M
并建立800M大小的lvm

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

3.触发器

notify:触发器当遇到更改时触发handlers

handlers: 触发器触发后执行的动作

实验:
下载软件httpd,然后启动服务,火墙添加服务,如果软件已经下载,不执行启动服务和火墙
在这里插入图片描述
服务第一次安装:
在这里插入图片描述服务已经安装之后:不启动
在这里插入图片描述

4.处理失败任务
4.1 ignore_errors

作用:
当play遇到任务失败是会终止
ignore_errors: yes 将会忽略任务失败使下面的任务继续运行

实例
- name: testdnf:name: westosstate: latestignore_errors: yes- name: create filefile:path: /mnt/westosstate: touch
4.2.force_handlers

作用:
#当任务失败后play被终止也会调用触发器进程
#example

---
- name: apache change porthosts: 172.25.0.254force_handlers: yesvars:http_port: 80tasks:- name: configure apache conf filelineinfile:path: /etc/httpd/conf/httpd.confregexp: "^Listen"line: "Listen {{ http_port }}"notify: restart apache- name: install errordnf:name: westosstate: latesthandlers:- name: restart apacheservice:name: httpdstate: restartedenabled: yes
4.3.changed_when

作用:
控制任务在任何时候都更改changed (true/false)


  • name: apache change port
    hosts: 172.25.0.254
    force_handlers: yes
    vars:
    http_port: 8080
    tasks:

    • name: configure apache conf file
      lineinfile:
      path: /etc/httpd/conf/httpd.conf
      regexp: “^Listen”
      line: “Listen {{ http_port }}”
      changed_when: true
      notify: restart apache

    handlers:

    • name: restart apache
      service:
      name: httpd
      state: restarted
      enabled: yes
4.4.failed_when

不管命令执行成功失败,都指定输出信息(true/false)

---
- name: testhosts: 172.25.0.254tasks:- name: shellshell: echo helloregister: westosfailed_when: "'hello' in westos.stdout"
4.5.block/rescue/always
block: 		##定义要运行的任务
rescue:		##定义当block句子中出现失败任务后运行的任务
always:	##定义最终独立运行的任务

在这里插入图片描述

#测试练习#
建立playbook ~/westos.yml要求如下:
建立大小为1500M名为/dev/vdb1的设备
如果/dev/vdb不存在请输入:
/dev/vdb is not exist
如果/dev/vdb大小不足2G请输出:
/dev/vdb is less then 2G
并建立800M大小的/dev/vdb1
此设备挂载到/westos上
在这里插入图片描述在这里插入图片描述

这篇关于5.5#Anisble中的任务执行控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/269140

相关文章

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

Spring定时任务之fixedRateString的实现示例

《Spring定时任务之fixedRateString的实现示例》本文主要介绍了Spring定时任务之fixedRateString的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录从毫秒到 Duration:为何要改变?核心:Java.time.Duration.parse

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J