Ansible中的任务执行控制

news2024/11/8 17:40:59

循环

简单循环

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


{{item}}        //迭代变量名称

循环散列或字典列表

- name: create file
  hosts: host1
  tasks:
  - name: file moudle
    service:
      name: "{{ item.name }}"
      state: "{{ item.state }}"
    loop:
    - name: httpd
      state: started
    - name: vsftpd
      state: stopped
~

条件

when:
 - 条件1
 - 条件2

 

 条件判断

=	        //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的值为false

 多条条件组合

when:
 条件1 and 条件2
 - 条件1
 - 条件2            //当条件1和条件2都为真

when:
 条件1 or 条件2        //满足其中一个

when: >
 条件1
 or
 条件2                //满足其中一个

 创建两个用户 user1 和 user2, user1 的 UID 是 6666,注释是 user1 commentuser2 的 UID 是 7777,没有注释。

vim userlist.yml
userlist:
  - name: user1
    id: 6666
    comment: user1 comment
  - name: user2
    id: 7777

vim usercreate.yml
- name: create user
  hosts: all
  vars_files: ./userlist.yml
  tasks:
    - name: create user with comment
      user:
        name: "{{item.name}}"
        uid: "{{item.id}}"
        comment: "{{item.comment}}"
        state: present
      when: item.comment is defined
      loop:
        "{{userlist}}"

    - name: create user without comment
      user:
        name: "{{item.name}}"
        uid: "{{item.id}}"
        state: present
      when: item.comment is not defined
      loop:
        "{{userlist}}"

 

触发器

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

 在指定的服务器上部署网站,并创建一个简单的主页

vim webs.yml
webs:
  - name: bbs.westos.org
    doc: /var/www/virtual/westos.org/bbs/html
    index: "bbs.westos.org's page"

  - name: login.westos.org
    doc: /var/www/virtual/westos.org/login/html
    index: "login.westos.org's page"

  - name: www.westos.org
    doc: /var/www/html
    index: "www.westos.org's page"

 

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

 

vim web.yml
- name: Create website index page
  hosts: all
  vars_files: ./webs.yml

  tasks:
    - name: install httpd
      yum:
        name: httpd
        state: present

    - name: service
      service:
        name: httpd
        state: started
        enabled: no

    - name: Create index.html for each website
      template:
        src: ./html.j2
        dest: "/etc/httpd/conf.d/vhost.conf"
      notify: restart httpd

    - name: create directory
      lineinfile:
        path: "{{item.doc}}/index.html"
        line: "{{ item.index }}"
        create: yes
      loop: "{{webs}}"

  handlers:
    - name: restarted httpd
      service:
        name: httpd
        state: restarted

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1164619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验记录之——git push

平时做开发的时候经常push代码不成功&#xff0c;如下图 经好友传授经验&#xff0c;有如下方法 Win cmd使用Clash&#xff08;端口是7890&#xff09;代理操作&#xff0c;在cmd中输入&#xff1a; set http_proxy127.0.0.1:7890 set https_proxy127.0.0.1:7890Linux export …

防火墙日志记录和分析

防火墙监控进出网络的流量&#xff0c;并保护部署防火墙的网络免受恶意流量的侵害。它是一个网络安全系统&#xff0c;它根据一些预定义的规则监控传入和传出的流量&#xff0c;它以日志的形式记录有关如何管理流量的信息&#xff0c;日志数据包含流量的源和目标 IP 地址、端口…

可视化流程编排(Bpmn.js)介绍及实践

作者:罗强 为将内部系统打通并规范流程定义&#xff0c;基于统一的平台实现工单自动化流转,从而使用无界山工单系统帮助公司内部人员统一管理和处理来自企业内部提交的工单需求。而在系统中流程编排及节点设计主要是使用bpmn.js实现精细化配置。从而满足各种复杂的业务需求。目…

MapStruct的用法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、依赖导入二、简单使用2.1、定义转换的接口2.2、创建实体类2.3、测试2.4、底层实现 三、常用的注解3.1、Mapping(target "xxx1",source "x…

你还在用System.currentTimeMillis()打印代码执行时间?

文章目录 前言一、开发环境二、使用步骤1. 创建Springboot项目2. 引入hutool3. 使用TimeInterval 总结 前言 Hutool是一个小而全的Java工具类库&#xff0c;里面集成了很多实用的工具类&#xff0c;比如文件、流、加密解密、转码、正则、线程、XML等&#xff0c;通过这些工具类…

探索 Java 8 中的 Stream 流:构建流的多种方式

人嘛&#xff0c;要懂得避嫌… 开篇引入 Java 8引入了Stream流作为一项新的特性&#xff0c;它是用来处理集合数据的一种函数式编程方式。Stream流提供了一种更简洁、高效和易于理解的方法来操作集合数据&#xff0c;同时也能够实现并行处理&#xff0c;以提高性能。 以下是St…

在 GORM 中定义模型

为实现与数据库的无缝交互而打造有效模型的全面指南 在使用 GORM 进行数据库管理时&#xff0c;定义模型是基础。模型是您的应用程序的面向对象结构与数据库的关系世界之间的桥梁。本文深入探讨了在 GORM 中打造有效模型的艺术&#xff0c;探讨如何创建结构化的 Go 结构体&…

第十二章,集合类例题

例题1 package 例题;import java.util.*;public class 例题 {public static void main(String[] args) {// TODO Auto-generated method stub//实例化集合类对象Collection<String> list new ArrayList<>();//调用方法&#xff0c;向集合添加数据list.add("…

Java——java.time包使用方法详解

Java——time包使用方法详解 java.time 包是 Java 8 引入的新日期和时间 API&#xff08;JSR 310&#xff09;&#xff0c;用于替代旧的 java.util.Date 和 java.util.Calendar 类。它提供了一组全新的类来处理日期、时间、时间间隔、时区等&#xff0c;具有更好的设计和易用性…

什么是消息队列

什么是消息队列 消息队列是一种通信机制&#xff0c;用于在不同的应用程序或组件之间传递消息。它允许应用程序之间异步地发送和接收消息&#xff0c;而无需直接依赖彼此的可用性或性能。消息队列通常用于解耦不同组件&#xff0c;提高系统的可伸缩性和可维护性&#xff0c;以…

【Python入门一】Python及PyCharm安装教程

Python及PyCharm安装教程 1 Python简介1.1 Python下载及安装 2 PyCharm简介2.1 PyCharm下载及安装 参考 1 Python简介 Python是一种开源的高级编程语言&#xff0c;由Guido van Rossum于1991年创建。Python易于学习、阅读和编写&#xff0c;具有丰富的标准库和第三方模块&…

智慧校园管理云平台电子班牌系统源码,数据管理、信息发布、家校互通、物联控制、教务管理、日常办公、人脸识别

智慧校园平台源码 智慧校园云平台电子班牌系统源码 一款全功能智慧校园管理云平台电子班牌系统源码&#xff0c;融合了多媒体信息发布、家校互通、物联控制、教务管理、日常办公等一系列应用&#xff0c;是校园管理的现代手段。 电子班牌系统的主要功能包括&#xff1a;数据信…

电源管理(PMIC)MAX20428ATIA/VY、MAX20428ATIC/VY、MAX20428ATIE/VY适合汽车ADAS应用的开关稳压器

一、概述 MAX20428是一款高效率、八路输出、低压PMIC。OUT1将输入电源升压至5V&#xff0c;电流高达500mA&#xff0c;而三个同步降压转换器的输入电压范围为3.0V至4.2V&#xff0c;输出电压范围为0.8V至3.9875V&#xff0c;峰值电流分别高达1.3A、1.3A和3.5A。三个300mA pMOS…

c++实现建造者模式

代码 director.h #pragma once #include<vector> #include<string> #include<iostream>class Product { private:std::vector<std::string> _parts;public:void Add(const std::string& part) {_parts.push_back(part);}void show(){std::cout &…

L1和L2正则化通俗理解

机器学习中&#xff0c;如果参数过多&#xff0c;模型过于复杂&#xff0c;容易造成过拟合&#xff08;overfit&#xff09;。即模型在训练样本数据上表现的很好&#xff0c;但在实际测试样本上表现的较差&#xff0c;不具备良好的泛化能力。为了避免过拟合&#xff0c;最常用的…

在Linux上通过NTLM认证连接到AD服务器(未完结)

这篇文章目前还没有实现具体的功能&#xff0c;只实现了明文登录&#xff0c;因为我缺少一些数据&#xff0c;比如通过密码生成hash&#xff0c;以及通过challenge生成response&#xff0c;我不知道怎么实现&#xff0c;因此这篇文章也是一个交流的文章&#xff0c;希望大佬看见…

Linux的test测试功能

测试文件名的类型&#xff0c;文件是否存在&#xff0c; 文件的权限检测 文件之间的比较 两个整数之间的比较 判断字符串数据 多重条件判定 一个一个来&#xff0c;这个有点多&#xff0c;不过比较有意思&#xff0c;来代码 案例1&#xff0c;判断文件是否存在&#xff…

VS Code提取扩展时出错。XHR failed

需求&#xff1a;想要在扩展中心下载插件&#xff0c;发现报错 原因&#xff1a;vs code之前设置了代理&#xff0c;需要删除即可

【LLM】大模型中的温度系数temperature是啥玩意||底层逻辑

【LLM】大模型中的温度系数是啥玩意_山顶夕景的博客-CSDN博客 大佬两句话就讲明白了&#xff0c;厉害~ 总结一下就是crossentropy里面引入t如下页ppt公式所示&#xff0c;t越大&#xff0c;每个词都有更大的概率被使用&#xff0c;也就体现出了多样性。

基于OR-Tools的装箱问题模型求解(PythonAPI)

装箱问题 一、背包问题&#xff08;Knapsack problem&#xff09;1.1 0-1背包模型基于OR-Tools的0-1背包问题求解&#xff08;PythonAPI&#xff09;导入pywraplp库数据准备声明MIP求解器初始化决策变量初始化约束条件目标函数调用求解器打印结果 1.2 多重背包问题&#xff08;…