ansible的流程控制

Ansible 剧本的流程控制通过任务的顺序执行、条件语句(when)、循环(with_items 等)、错误处理(ignore_errors 和 block)、以及任务标签和角色来实现。可以根据条件动态控制任务执行,使用循环处理重复操作,通过块和故障恢复机制确保任务的容错性,并通过标签灵活选择任务的执行范围

handler触发器

触发条件:Handler 只有在某个任务被标记为 changed(即执行过程中发生了变化)时才会执行。这意味着,只有当某个任务发生了更改(如文件变更、配置修改等),才会触发相关的 Handler 任务。

执行顺序:Handler 通常在 playbook 的最后执行,它们会被挂起,直到 playbook 中的其他任务发生变化并触发它们。

  • 应用场景:一般用于分发配置文件,重启服务
  • 例如:配置文件一旦有了变化,就立刻重启服务
  • 语法:notyfy 和 handerls

1.编写一个yaml,分发文件和重启服务。只有当文件发生改变时,服务才会重启

- hosts: nfstasks:- name: 分发配置文件copy:src: exportsdest: /etc- name: 重启服务systemd:name: nfsstate: reloaded

2.在执行了2次后,文件不再发送改变,但是服务依然重启了

在这里插入图片描述

3.增加触发器,让文件传输成功后才会触发服务重启

[root@gitlabansible]# cat 08-触发器.yaml 
- hosts: webgather_facts: falsetasks:- name: 分发配置文件copy:src: /test/ansible/file/exportsdest: /etcbackup: falsenotify: restart_NFS# 注意notify用的名字要和handlers一致handlers:- name: restart_NFSsystemd:name: nfsstate: restarted

4.增加触发器后的运行结果,没有任何变化。文件没有传输,自然服务也就不会重启。避免了没必要的重启。

在这里插入图片描述

如果设置了备份,备份后的文件名是:/etc/exports.3391.202-0X-12@22:09:29~

wen判断

  • 通常用于满足了条件再运行

判断facts变量案例

1.要求CentOS系统安装sl,Ubuntu安装cmatrix。判断faxts变量中的id即可实现。

- hosts: alltasks:- name: CentOS安装slyum:name: slstate: presentwhen: ansible_distribution == "CentOS"- name: Ubuntu安装cmatrixyum:name: cmatrixstate: presentwhen: ansible_distribution == "Ubuntu"

在这里插入图片描述

可以看到图中出现了一种蓝色状态skipping,表示跳过。nfs服务器属于Centos,不在安装cmatrix的范围。

案例:配置文件错误则不重启

1.需求:管理端传输nginx配置文件。若nginx配置文件正确,则重启nginx;若错误,则不重启nginx。

  • handlers触发器:什么时候重启?
  • when判断:正确还是错误?
    • 判断的是ngin -t的结果

1.实现:判断 nginx 返回的状态码是否为0。如果为0就重启nginx

- hosts: webgather_facts: falsetasks:- name: 分发nginx.confcopy:src: /test/ansible/file/test.confdest: /etc/nginx/conf.d/test.confbackup: false- name: 检测nginx -tshell: nginx -tregister: resultignore_errors: true- name: 打印出nginx resultdebug:msg: "nginx: {{ result.stdout }}"- name: 是否重启nginxsystemd:name: nginxstate: restartedwhen: result.rc == 0

2.当nginx配置错误的情况下:

在这里插入图片描述

3.当nginx配置文件正确的情况下:

在这里插入图片描述

when的字符正则

match语法
is match匹配
is not match排除
bl.rcreturn code
其他判断符号
!=不等于

在判断Ubuntu中,改为:when: ansible_distribution is match (".*buntu"),也能安装cmatrix

判断总结

when判断示例
==
is match
is search搜索查找
or
!=
&&when: ansible_distribution is match (".*buntu") and ansible_hostname is match (".*sk")

ansible中的循环

  • 批量创建文件,批量添加用户,批量启动或重启服务
  • item:作为内置变量,不能随意更改

1.案例,使用循环重启nfs和rpcbind

- hosts: webgather_facts: falsetasks:- name: 批量重启服务systemd:name: '{{ item }}'state: restartedenabled: yeswith_items:- rpcbind- nfs

启动顺序:在上面的先启动

执行结果如下:

[root@gitlabansible]# ansible-playbook -i hosts 07-item循环重启服务.yaml PLAY [web] *******************************************************************************************************TASK [批量重启服务] ****************************************************************************************************
changed: [10.0.0.62] => (item=rpcbind)
changed: [10.0.0.62] => (item=nfs)PLAY RECAP *******************************************************************************************************
10.0.0.62                  : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

2.案例,使用 loop 循环批量创建用户

- hosts: webgather_facts: falsetasks:- name: create useruser:name: '{{ item.name }}'uid: '{{ item.uid }}'state: presentloop:- { name: 'user1', uid: '2001' }- { name: 'user2', uid: '2002' }- { name: 'user3', uid: '2003' }

❗️创建出来的用户在CentOS上解释器是/bin/bash,Ubuntu却是/bin/dash;最好指定解释器。

cat 04-items-批量创建用户.yaml <<EOF
- hosts: webgather_facts: falsetasks:- name: 01 create directoryfile:path: "{{ item }}"state: directoryloop:- /tmp/test01- /tmp/test02- /tmp/test03- /tmp/tmp01- /tmp/tmp02- /tmp/tmp03
EOF

3.案例,变量创建文件,并设施不同的权限


tags标签

作用

  • 用处:在调试剧本时,可以运行自定义的步骤
  • 语法:卸载tasks下面
tags选项
step1,step2执行多个标签
–skip-tags排除标签

1.给分发配置文件的步骤打上标签

- hosts: webgather_facts: falsetasks:- name: 分发nginx.confcopy:src: /test/ansible/file/test.confdest: /etc/nginx/conf.d/test.confbackup: falsetags:- 01-file- name: 检测nginx -tshell: nginx -tregister: resultignore_errors: true- name: 打印出nginx resultdebug:msg: "nginx: {{ result.stdout }}"ignore_errors: true- name: 是否重启nginxsystemd:name: nginxstate: restartedwhen: result.rc == 0- name: restart nfssystemd:name: nfsstate: restarted

2.执行带有标签的步骤,这样就不会执行 nfs、nginx 重启了

在这里插入图片描述

指定调式位置

ansible的playbook,有一些任务,在运行中出错了,有什么办法从失败的位置开始吗?

这个可以使用tag的方式,将之后的都打上tag,执行的时候加上 -t 标签。只执行打标签的任务,也可以-skip-tags,执行这个标签之外的任务

ansible的剧本调试

命令
ansible-playbook -C模拟运行
ansible-playbook --syntax-check语法检测,不模拟运行

ignore_erros忽略错误

  • 用途:忽略剧本运行时的非语法错误,例如要安装的软件找不到…
  • 语法:ignore_erros: true/false
- hosts: nfstasks:- name: 01下载nfsyum:name: abcde,aabbccstate: installedtags:- 01.installignore_errors: yes
| `ansible-playbook --syntax-check` | 语法检测,不模拟运行 |## ignore_erros忽略错误- 用途:忽略剧本运行时的非语法错误,例如要安装的软件找不到...
- 语法:**ignore_erros: true/false**```yaml
- hosts: nfstasks:- name: 01下载nfsyum:name: abcde,aabbccstate: installedtags:- 01.installignore_errors: yes

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAD图纸加密措施有哪些,CAD图纸加密禁止复制打印工具

CAD图纸加密措施有哪些&#xff0c;CAD图纸加密禁止复制打印工具 CAD图纸作为核心的设计成果&#xff0c;其安全性和保密性至关重要。 为了有效防止图纸数据泄露&#xff0c;企业需采取一系列加密措施&#xff0c;并借助专业的加密工具来实现这一目标。 域智盾软件&#xff0…

laya游戏引擎中打包之后图片模糊

如下图正常运行没问题&#xff0c;打包之后却模糊 纹理类型中的默认类型都是精灵纹理&#xff0c;改为默认值即可。注意&#xff1a;要点击“应用”才可有效。精灵纹理类型会对图片进行渲染处理&#xff0c;而默认值 平面类型不会处理图片。

本地电脑使用命令行上传文件至远程服务器

将本地文件上传到远程服务器&#xff0c;在本地电脑中cmd使用该命令&#xff1a; scp C:/Users/"你的用户名"/Desktop/environment.yml ws:~/environment.yml 其中&#xff0c;C:/Users/“你的用户名”/Desktop/environment.yml是本地文件的路径&#xff0c; ~/en…

每日十题八股-2024年12月19日

1.Bean注入和xml注入最终得到了相同的效果&#xff0c;它们在底层是怎样做的&#xff1f; 2.Spring给我们提供了很多扩展点&#xff0c;这些有了解吗&#xff1f; 3.MVC分层介绍一下&#xff1f; 4.了解SpringMVC的处理流程吗&#xff1f; 5.Handlermapping 和 handleradapter有…

用户体验与SEO的结合:如何优化网站以提升谷歌排名?

在SEO领域&#xff0c;算法、关键词和技术手段固然重要&#xff0c;但归根结底&#xff0c;谷歌的核心理念是提供最优质的用户体验。无论算法如何变化&#xff0c;用户体验始终是影响谷歌排名的重要因素之一。一个友好、直观的网站不仅能留住用户&#xff0c;还能直接提升搜索引…

笔记本重装系统教程【详细教程】

一、装机前说明 各位有装机需求的伙伴&#xff0c;请根据自己的电脑配置选择合适操作系统&#xff0c;可以实现自己装机的伙伴&#xff0c;相信大家这点可以确认好。 ———————————————————————— 我的配置&#xff1a; 我的电脑是联想拯救者lenovoY7000…

【我的 PWN 学习手札】IO_FILE 之 stdin任意地址写

我们知道&#xff0c;stdin会往“缓冲区”先读入数据&#xff0c;如果我们劫持这个所谓“缓冲区”到其他地址呢&#xff1f;是否可以读入数据到任意地址&#xff1f;答案是肯定的。 注意&#xff01;代码中的“-------”分隔&#xff0c;是为了区分一条调用链上不同代码片段&am…

【开源免费】基于SpringBoot+Vue.JS网上订餐系统(JAVA毕业设计)

本文项目编号 T 018 &#xff0c;文末自助获取源码 \color{red}{T018&#xff0c;文末自助获取源码} T018&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

【AIGC安全】CCF-CV企业交流会直播回顾:探寻AI安全治理,共筑可信AI未来

文章目录 一、活动背景&#xff1a;AI技术快速发展与安全治理需求迫切二、论坛内容金耀辉&#xff1a;智能共生时代&#xff1a;平衡生成式AI的创新与风险何延哲&#xff1a;人工智能安全检测评估的逻辑和要点谢洪涛&#xff1a;面向特定人物深度伪造视频的主动防御与被动检测技…

2024年12月英语六级CET6写作与翻译笔记

目录 1 写作 1.1 大学为学生提供了探索各种可能性 1.2 自律在个人成长中的重要性 1.3 切实可行的目标 2 翻译 2.1 洋山港(Yangshan Port) 2.2 中国航天事业 2.3 北斗卫星导航系统 1 写作 1.1 大学为学生提供了探索各种可能性 1.2 自律在个人成长中的重要性 1.3 切实可…

解决“SVN无法上传或下载*.so、*.a等二进制文件“问题

今天&#xff0c;在使用Subversion提交代码到服务器时&#xff0c;发现无法提交*.a、*.so等二进制文件&#xff0c;右击这些文件&#xff0c;发现其属性为ignores。     问题原因&#xff1a;SVN的配置文件里&#xff0c;屏蔽了*.a、*.so文件的上传与下载&#xff0c;并把这些…

linux-18 关于shell(十七)file命令

在linux里面是不以后缀名来区分文件类型的&#xff0c;它跟windows不一样&#xff0c;windows里面都会以后缀名来区分文件类型&#xff0c;比如说&#xff0c;.mp3&#xff0c;windows就会把它视为音乐文件&#xff0c;.txt就会视为纯文本文档&#xff0c;.png就会视为图片文档…

品牌控价:守护价值,引领渠道健康发展

在当今竞争激烈且多元化的商业环境中&#xff0c;品牌的发展之路犹如一场充满挑战与机遇的漫长征程。随着品牌影响力的逐步扩大&#xff0c;其销售渠道也日益丰富多样&#xff0c;尤其是电商平台的蓬勃兴起&#xff0c;使得品牌产品的销售链接如繁星般繁多。然而&#xff0c;这…

OpenEuler Linux上怎么测试Nvidia显卡安装情况

当安装好显卡驱动后怎么样知道驱动程序安装好了,这里以T400 OpenEuler 正常情况下,我们只要看一下nvidia-smi 状态就可以确定他已经正常了 如图: 这里就已经确定是可以正常使用了,这里只是没有运行对应的程序,那接来下我们就写一个测试程序来测试一下:以下代码通过AI给出然后…

shell5

字符串运算符 首先我们在终端利用vim打开u.sh str1"hello" str2"hello" if [ "$str1" "$str2" ]; thenecho True elseecho false fi我们把hello改为Hello&#xff0c;看一下大小写是否敏感 str1"Hello" str2"hello…

Linux-ubuntu之主频和时钟配置

Linux-ubuntu之主频和时钟配置 一&#xff0c;主频二&#xff0c;其它时钟配置1.PLL2和PLL3的PFD0-3设置2.AHB_CLK_ROOT3.IPG 和 PERCLK时钟 三&#xff0c;总结 一&#xff0c;主频 24MHz 晶振为内核和其它外设提供时钟源&#xff0c;经电路后到PLL1变为996MHZ&#xff0c;再…

深入浅出Flink CEP丨如何通过Flink SQL作业动态更新Flink CEP作业

复杂事件处理&#xff08;CEP&#xff09;是一种对事件流进行分析的技术&#xff0c;它能够识别出数据流中的事件序列是否符合特定的模式&#xff0c;并允许用户对这些模式进行处理。Flink CEP 是 CEP 在 Apache Flink 中的具体实现&#xff0c;是 Apache Flink 的一个库&#…

华为数通最新题库 H12-821 HCIP稳定过人中

以下是成绩单和考试人员 HCIP H12-831 HCIP H12-725 安全中级

Facebook 与数字社交的未来走向

随着数字技术的飞速发展&#xff0c;社交平台的角色和形式也在不断演变。作为全球最大社交平台之一&#xff0c;Facebook&#xff08;现Meta&#xff09;在推动数字社交的进程中扮演了至关重要的角色。然而&#xff0c;随着互联网的去中心化趋势和新技术的崛起&#xff0c;Face…

STM32中ADC模数转换器

一、ADC简介 ADC模拟-数字转换器 ADC可以将引脚连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC&#xff0c;1us转换时间 输入电压范围&#xff1a; 0~3.3V&#xff0c;转换结果范围&#xff1a;0~4095 18个输入…