Anisble中的任务执行控制

2023-11-03 02:36
文章标签 控制 执行 任务 anisble

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

一、循环

1、简单循环

使用loop赋值列表的格式:

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

2、循环散列或字典列表

  • 可以赋予不同的服务不同的状态
- name: create filehosts: 172.25.0.254tasks:- name: file moduleservice:name: "{{ item.name}}"state: "{{ item.state }}"loop:- name: httpdstate: started- name: vsftpdstate: stopped

二、条件判定

1、when条件语句

此条件代表两者都满足时

when:
- 条件1
- 条件2

此条件代表两者满足一个即可

when:
- 条件1 or 条件2

2、条件判断

=value == "字符串“,value == 数字
<value < 数字
>value > 数字
<=value <= 数字
>=value >= 数字
!=value != 数字
is definedvalue is defined(变量存在)
is not definedvalue is not defined(变量不存在)
invalue is in value(变量为)
not invalue is not in value(变量不为)
bool变量为truevalue(value的值为true)
bool变量falsenot value(value的值为false)
value in value2(value的值在value2列表中)

上述的应用实例:

使用loop when 创建用户

vim user.yml- name: create userhosts: allvars:userlist:- name: user1id: 6666comment: user1 comment- name: user2id: 7777tasks:- name: create user2user:name: "{{item.name}}"uid: "{{item.id}}"comment: "{{item.comment}}"state: presentwhen:item.comment is definedloop:"{{userlist}}"- name: create useruser:name: "{{item.name}}"uid: "{{item.id}}"state: presentwhen:item.comment is not definedloop:"{{userlist}}"ansible-playbook user.yml  -C

三、触发器

notify:触发器当遇到更改时触发handlers
handlers:触发器触发后执行的动作

 示例:

使用触发器 j2 loop 安装httpd服务并运行虚拟主机

vim web.ymlwebs:
- doc: /var/www/htmlindex: "www.westos.org's page"- name: bbs.westos.orgdoc: /var/www/virtual/westos.org/bbs/htmlindex: "bbs.westos.org's page"- name: login.westos.orgdoc: /var/www/virtual/westos.org/login/htmlindex: "login.westos.org's page"

vim vhosts.conf.j2{% for web in webs %}
{% if web.name is defined %}
<VirtualHost *:80>ServerName {{web.name}}
{% endif %}
{% if web.name is not defined %}
<VirtualHost _default_:80>
{% endif %}DocumentRoot {{web.doc}}
</VirtualHost>
{% endfor %}

vim httpd.yml- name: create virtualhosthosts: allvars_files: ./web.ymltasks:- name: yumyum:name: httpdstate: present- name: serviceservice:name: httpdstate: startedenabled: yes- name: create doclineinfile:path: "{{item.doc}}/index.html"line: "{{item.index}}"create: yesloop: "{{webs}}"- name: create vhosts.conftemplate:src: ./vhosts.conf.j2dest: /etc/httpd/conf.d/vhost.confnotify: restart httpdhandlers:- name: restart httpdservice:name: httpdstate: restarted

触发器工作 

 

因为没有文件修改触发器没有触发所以不进行重启服务

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



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

相关文章

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