9.Ansible Conditions介绍

news2024/11/16 5:40:21
  1. Ansible条件语句
    在这里插入图片描述
    1)上面的例子在不同的机器上安装nginx,不同的操作系统风格使用不同的软件包管理器。debian使用APT, Red Hat使用Yum, 但这是两个独立的Playbook,您必须为各自的服务器使用正确的剧本。
    可以使用条件语句,将这两个Playbook合成为一个。可以使用when条件语句为每个任务指定一个条件,只有当条件为真时, 该任务才运行。
    在这里插入图片描述
    条件可以是我们执行的任何检查, 例如检查操作系统系列是否为DebianRed Hatansible_os_familyAnsible使用操作系统风格填充的内置变量。确保在条件语句中检查相等时使用双等号。

  2. 条件语句和或运算
    或运算,只要满足两个条件中的任何一个,task就会执行。例如下面的例子,如果操作系统系列是Red Hat或者Suse就会使用yum模块安装软件包。
    在这里插入图片描述

  3. 条件语句和与运算
    and运算,必须同时满足这两个条件才执行。下面的例子,只有当操作系统系列是Debian并且版本是16.04时,我们才使用APT模块。
    在这里插入图片描述

  4. 在循环中使用条件
    例如, 我们有一个需要安装的软件包列表,而不是单个软件包。我们有一个名为packages的数组, 其中包含列表。列表中的每一项都有要安装的软件包的名称以及一个名为required的属性,仅当required属性设置为true时才安装软件包。 就可以使用下面的例子:
    在这里插入图片描述
    首先, 我们指定loop指令以在循环中执行已安装的任务。要安装的软件包的名称是item.name, 这将安装指定的所有三个软件包。每个任务都有一个名为item的变量,而item具有相应的包详细信息。可以添加一个when条件,当required等于true的时候,才执行这个task,这就是循环中条件语句的用法。

  5. 条件语句和register
    要将条件语句与前一个任务的输出一起使用,们需要开发一个剧本来检查其服务和电子邮件的状态。所以有两个任务,第一个任务检查服务的状态,第二个任务发送电子邮件。
    要记录一个任务的输出,可以使用register指令。因此, 我们将第一个任务的输出注册到result变量, 然后在第二个任务中, 我们使用when条件来检查result里面有没有down,如果没有则执行第二个task,发送一封邮件。
    在这里插入图片描述
    例子:
    下面这个例子只有当hostnode02的时候,才会启动nginx服务,也就是只在node02上启动nginx,而不是所有的节点上。

    ---
    -  name: 'Execute a script on all web server nodes'
       hosts: all
       become: yes
       tasks:
         -  service: 'name=nginx state=started'
            when: 'ansible_host=="node02"'
    

    下面这个例子,when语句里面引用了age这个变量,注意when语句里面不能有{{}}

    ---
    - name: 'Am I an Adult or a Child?'
      hosts: localhost
      vars:
        age: 25
      tasks:
        - name: I am a Child
          command: 'echo "I am a Child"'
          when: 'age < 18'
        - name: I am an Adult
          command: 'echo "I am an Adult"'
          when: 'age >= 18'
    

    下面这个例子, 第一个task的输出记录到了register command_output里面,第二个task,先检查command_output有没有对应的ip,如果没有的话,才加一条到conf文件里面。这里只是一个例子,更好的时候方法是用lineinfile模块。

    ---
    - name: 'Add name server entry if not already entered'
      hosts: localhost
      become: yes
      tasks:
        - shell: 'cat /etc/resolv.conf'
          register: command_output
        - shell: 'echo "nameserver 10.0.250.10" >> /etc/resolv.conf'
          when: 'command_output.stdout.find("10.0.250.10") == -1'
    

    更多关于Ansible的文章,请参考我的Ansible专栏:https://blog.csdn.net/u011069294/category_12331290.html

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

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

相关文章

Mongodb在Linux下载安装及部署

前言 一、下载安装包 Mongodb官网&#xff1a;Download MongoDB Community Server | MongoDB 二、安装及配置 博主下载的安装包是&#xff1a;mongodb-linux-x86_64-rhel70-6.0.6.tgz 新建目录 # 进入 usr 文件夹 cd /usr# 新建 mongodb 文件夹 mkdir mongodb# 进入 mongodb …

如何自学成为黑客

学习路线 不BB&#xff0c;直接上干货。 学完下面的内容&#xff0c;绝对可以进入黑客圈。 文末有福利噢&#xff01; 第一步&#xff1a;计算机基础 了解计算机基本常识&#xff0c;常用软件使用。需要学会基本使用的软件或技术有&#xff1a;Word、VMware、VPN、Visual St…

快速实现工程化部署,亚马逊云科技为AIGC产品化提供可靠基础

本文将以Stable Diffusion Quick Kit在亚马逊云科技Amazon SageMaker上的部署来介绍Stable Diffusion模型基础知识&#xff0c;HuggingFace Diffusers接口&#xff0c;以及如何使用Quick Kit在SageMaker Endpoint上快速部署推理服务。 Stable Diffusion模型 2022年由Stability…

自己拍摄的视频剪辑时如何消音?

由于录制环境的影响&#xff0c;有时制作出来的视频原始声音可能无法达到令人满意的效果&#xff0c;可能有噪声存在。这个时候&#xff0c;就应该先消除视频原始声音&#xff0c;然后后期再去给视频添加配音。有哪些适合给自己拍摄的视频调为静音的方法&#xff0c;来看看有哪…

详解 Windows 10 安装 CUDA 和 CUDNN

目录 查看本机 Window 10 系统已经安装 NIVIDIA 的驱动版本说在前面查看驱动版本 CUDA下载直接下载最新的 CUDA下载历史版本的 CUDA 安装测试 CUDNN下载 下载最新版本的 cuDNN下载历史版本的 cuDNN, 如: cuDNN 12.0安装 关于添加系统环境变量的问题 ⭐️⭐️说在前面!!! 建议 先…

平均年薪20W,自动化测试工程师这么吃香?

自动化测试工程师&#xff0c;平均年薪20w绝对不是空穴来凤&#xff0c;甚至我还说少了&#xff0c;加上年终奖和奖金等等年薪可能还不止20w这个水平&#xff0c;让我们看看下方截图&#xff0c;【来自于职友集】 本篇文章将由以下4个部分来展开&#xff1a; 1. 什么是自动化测…

PaddleClas初体验

PaddleClas初体验 该包是由百度PaddlePaddle组织下开源的项目&#xff0c;主要用于图像分类&#xff0c;图像搜索等相关任务。 项目地址&#xff1a; https://github.com/PaddlePaddle/PaddleClashttps://pypi.org/project/paddleclas 主要构件&#xff1a; PP-ShiTu&…

企业的数据信息值钱吗?如何提升数据信息的价值?

越来越多的企业也将数据视为转型发展、重塑竞争优势和提升组织治理能力的重要战略资产&#xff0c;并对这一重要资产进行系统性、体系化的管理&#xff0c;以便充分挖掘数据的战略、战术价值。鉴于此&#xff0c;对数据资产进行体全面盘点、构建企业级的数据资产目录成为了数据…

aigc分享

AIGC技术分享 AIGC概述 AIGC的概念、应用场景和发展历程 机器学习基础 机器学习的基本概念、分类和常用算法&#xff0c;如线性回归、决策树、支持向量机、神经网络等。 深度学习基础 深度学习的基本概念、分类和常用算法&#xff0c;如卷积神经网络、循环神经网络、自编…

面试专题:java多线程(2)-- 线程池

1.为什么要用线程池&#xff1f; 线程池提供了一种限制和管理资源&#xff08;包括执行一个任务&#xff09;。 每个线程池还维护一些基本统计信息&#xff0c;例如已完成任务的数量。 这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处&#xff1a; 降低资源消…

【嵌入式烧录/刷写文件】-1.6-剪切/保留Motorola S-record(S19/SREC/mot/SX)文件中指定地址范围内的数据

案例背景&#xff1a; 有如下一段S19文件&#xff0c;保留地址范围0x9140-0x91BF内的数据&#xff0c;删除地址范围0x9140-0x91BF外的数据。 S0110000486578766965772056312E30352EA6 S123910058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775B S12391207…

如何判断一个点是否在凸多边形内 - golang

判断一个点是否在凸多边形内的方法很多&#xff0c;此处仅给出使用向量叉积法判断点是否在凸多边形内的方法。 以下图为例说明问题&#xff1a; 原理&#xff1a; 1. 将多边形的第 i 条边的第一个顶点指向点 P 得到向量 v1&#xff0c;然后将从第一个顶点指向第二个顶点得到向…

Java 多线程实现1到1千万的求和操作

一、使用多线程的背景 提高程序速度和响应性&#xff1a;许多应用程序需要同时执行多个任务&#xff0c;例如网络服务器&#xff0c;图形图像处理&#xff0c;模拟程序等。使用多线程可以让程序同时执行多个部分&#xff0c;从而显著提高程序的执行速度、响应速度。 充分利用 …

CompletableFuture 线程编排

一、前言 Java8 新特性之一&#xff0c;其实现了Future<T>, CompletionStage<T>两接口&#xff0c;后者是对前者的一个扩展&#xff0c;增加了异步回调、流式处理、多个Future组合处理的能力&#xff0c;使 Java 在处理多任务的协同工作时更加顺畅便利。 二、Compl…

POST请求与GET请求的区别

POST请求 &#xff08;提交数据&#xff0c;一般用于将数据发给服务器&#xff0c;用于修改和写入数据&#xff09; 1、传参方式&#xff1a;相对安全&#xff0c;入参在request body中&#xff0c;可通过各种抓包工具获取 2、缓存&#xff1a;不会被缓存&#xff0c;保存在服…

基于Qt的嵌入式GUI开发指南(一)

Qt 是一个跨平台的应用程序开发框架&#xff0c;用于创建高性能、可扩展和用户友好的图形用户界面&#xff08;GUI&#xff09;应用程序。它提供了丰富的工具、库和功能&#xff0c;使开发者能够轻松地构建各种类型的应用程序&#xff0c;包括桌面应用程序、移动应用程序和嵌入…

Bellhop 从入门到上手

文章目录 前言一、Bellhop 简介二、Bellhop 结构1、输入文件2、输出文件 三、Bellhop 环境文件1、OPTIONS12、OPTIONS23、OPTIONS34、OPTIONS45、其他参数 四、BELLHOP&#xff08;Matlab_GUI&#xff09;实例1、bellhop 工具箱自取2、解压缩工具箱3、设置路径4、添加并包含子文…

高频面试八股文原理篇(六) mysql数据库的左连接,右连接,内链接有何区别

目录 内连接与外连接的区别 在sql中l外连接包括左连接&#xff08;left join &#xff09;和右连接&#xff08;right join&#xff09;&#xff0c;全外连接&#xff08;full join&#xff09;&#xff0c;内连接(inner join) 内连接与外连接的区别 自连接 一个表与它自身进…

Redis(一)常见命令使用

常见文件名Redis-cli使用命令1、启动Redis2、连接Redis3、停止Redis4、发送命令1、redis-cli带参数运行&#xff0c;如&#xff1a;2、redis-cli不带参数运行&#xff0c;如&#xff1a; 5、测试连通性 key操作命令获取所有键查询键是否存在删除键查询键类型移动键查询key的生命…