9.Ansible Conditions介绍

news/2025/2/12 3:00:14/
  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: allbecome: yestasks:-  service: 'name=nginx state=started'when: 'ansible_host=="node02"'
    

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

    ---
    - name: 'Am I an Adult or a Child?'hosts: localhostvars:age: 25tasks:- name: I am a Childcommand: 'echo "I am a Child"'when: 'age < 18'- name: I am an Adultcommand: '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: localhostbecome: yestasks:- 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.ppmy.cn/news/121754.html

相关文章

YUV420数据格式详解

YUV简介 YUV格式有两大类&#xff1a;planar和packed。 对于planar的YUV格式&#xff0c;先连续存储所有像素点的Y&#xff0c;紧接着存储所有像素点的U&#xff0c;随后是所有像素点的V。 对于packed的YUV格式&#xff0c;每个像素点的Y,U,V是连续交叉存储的。 YUV分为三个分…

RV1126/RV1109:Camera Driver

平台:RV1126/RV1109 Linux(Kernel-4.19) 一:Camera驱动目录 Linux Kernel-4.19 |--arch/arm/boot/dts DTS配置文件 |-- drivers/phy/rockchip |-- phy-rockchip-mipi-rx.c mipi dphy驱动 |-- drivers/media …

YV12,I420,YUV420P的区别

YV12和I420的区别 一般来说&#xff0c;直接采集到的视频数据是RGB24的格式&#xff0c;RGB24一帧的大小size&#xff1d;widthheigth3 Byte&#xff0c;RGB32的size&#xff1d;widthheigth4&#xff0c;如果是I420&#xff08;即YUV标准格式4&#xff1a;2&#xff1a;0&…

I420、YV12、NV12、NV21等常见的YUV420存储格式

今天要讲的&#xff0c;主流的采样格式YUV420&#xff0c;它的存储格式通常就有四种&#xff1a;I420、YV12、NV12、NV21。 1. I420、YV12、NV12、NV21的存储格式 简单来讲&#xff0c;它们的存储格式分别为&#xff1a;I420&#xff1a; YYYYYYYYUUVV YV12&#xff1a;YYYYY…

YUV420SP/YUV420P

YUV420SP&#xff1a; sp&#xff08;semi-Planar二维平面&#xff09;指的是YUV不是3个平面而是分成2个平面。Y数据一个平面&#xff0c;UV数据合用一个平面。UV平面的数据格式是UVUVUV... YUV420P&#xff1a; 420P是先把U存放完后&#xff0c;再存放V&#xff0c;也就是说…

yuv420p

做编解码过程中最常见的视频格式是yuv420p 下面对yuv420p做一些介绍 420p中的p代表planar&#xff0c;也就是扁平的意思。所以这里引出yuv有两种布局方式&#xff0c;分别是planar和packed。 对于planar的YUV格式&#xff0c;先连续存储所有像素点的Y&#xff0c;紧接着存储所…

详解 YUV 格式(I420/YUV420/NV12/NV12/YUV422)

转载自&#xff1a;划水型派大星 YUV &#xff08;YCbCr&#xff09;是一种像素格式&#xff0c;常见于视频编码与静态图像。与 RGB 格式&#xff08;红-绿-蓝&#xff09;相反&#xff0c;YUV 分别由一个称为 Y&#xff08;相当于灰度&#xff09;的“亮度”分量&#xff08;…

2022年天府杯全国大学生数学建模竞赛D题高等院校综合发展状况与学科质量评估解题全过程文档及程序

2022年天府杯全国大学生数学建模竞赛 D题 高等院校综合发展状况与学科质量评估 原题再现&#xff1a; 问题背景&#xff1a;   高等院校是我国经济社会发展中的重要参与者&#xff0c;一流大学与一流学科的建成是实现社会主义共同富裕的重要基础。随着国家第二轮“双一流”…