首页 > 其他分享 >playbook核心元素之handlers、notify

playbook核心元素之handlers、notify

时间:2023-04-13 09:58:33浏览次数:47  
标签:httpd name handlers state ansible notify conf playbook

playbook核心元素之handlers、notify

Cloud研习社 Cloud研习社 2023-04-13 07:31 发表于山东 收录于合集 #一站式教程221个 #linux211个 #计算机186个 #云计算198个 #ansible23个 图片图片

教程每周二、四、六更新

图片

 

我们上面的integration.yml 写的有点随意,现在把它改一下:

[root@m01 ansible]# vim httpconf.yml
---
- hosts: com
  tasks:
    - name: install httpd
      yum: name=httpd state=installed
    - name: config httpd
      copy:
        src: /root/ansible/httpd.conf
        dest: /etc/httpd/conf/httpd.conf
    - name: start httpd service
      systemd: state=started name=httpd

上面的剧本完成了企业中常见的操作,先安装软件包,然后修改配置文件,最后启动服务。如果完成第一遍操作以后,发现配置文件需要进一步优化,这个时候再次执行这个剧本,就会:

  • 先安装:但是已经安装过了,这一步不再执行。

  • 拷贝配置文件:配置文件被修改过,执行拷贝

  • 启动服务:服务已经启动了,无需在启动

我们发现,经过这三步以后,只修改了配置文件,但是没有进行服务的重启,所以这也就无法使修改的配置生效。此时就用到了handlers。我们可以上面的例子改成:

[root@m01 ansible]# cat httpconf.yml
---
- hosts: com
  tasks:
    - name: install httpd
      yum: name=httpd state=installed
    - name: config httpd
      copy:
        src: /root/ansible/httpd.conf
        dest: /etc/httpd/conf/httpd.conf
      notify: restart httpd
    - name: start httpd service
      systemd: state=started name=httpd

  handlers: 
    - name: restart httpd
      systemd:
        state: restarted
        name: httpd

handlers相当于处理装置,使用handlers关键字,指明哪些任务可以被'调用',之前说过,handlers是另一种任务列表,你可以把handlers理解成另外一种tasks,你可以理解成它们是'平级'的,所以,handlers与tasks是'对齐'的(缩进相同)。上例中的handlers中只有一个任务,这个任务的名称为"restart httpd",handlers中的任务需要被tasks中的任务调用,那么上例中,很明显,"restart httpd"被"config httpd"调用了。

同时,我们使用notify关键字'调用'handlers中的任务,或者说,通过notify关键字'通知'handlers中的任务,所以,综上所述,上例中的play表示,如果"config httpd"真正的修改了配置文件(实际的操作),那么则执行"restart httpd"任务,如果"config httpd"并没有进行任何实际的改动,则不执行"restart httpd" ,这就是handlers的作用,聪明如你肯定已经明白了,动手执行一下上述playbook试试吧【动手之前先准备好一个可用的/root/ansible/httpd.conf文件,否则会报错】。

handlers是另一种任务列表,所以handlers中可以有多个任务,被tasks中不同的任务notify,例如:

handlers:
  - name: restart httpd
    systemd:
      state=restarted
      name=httpd
  - name: create a file
    file:
      path=/data/newfile
      state=touch

我们也可以写多个notify,例如:

- hosts: com
  tasks:
    - name: install httpd
      yum: name=httpd state=installed
    - name: config httpd
      copy:
        src: /root/ansible/httpd.conf
        dest: /etc/httpd/conf/httpd.conf
      notify:
        - restart httpd
        - check service state

 


 

雷哥开通了抖音(云计算雷哥)和微信视频号,求关注!!!和大家一起学习 技术!

图片

推荐阅读

 

《一站式教程之集群架构》:

 

ansible模块-user模块

ansible模块 - lineinfile模块

ansible模块 - blockinfile模块

ansible剧本(playbook)- 快速入门

ansible剧本-YAML语法

ansible剧本-playbook核心元素

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社 为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等 180篇原创内容 公众号

图片


图片

 

收录于合集 #一站式教程  221个 上一篇ansible-playbook命令 阅读 31    

标签:httpd,name,handlers,state,ansible,notify,conf,playbook
From: https://www.cnblogs.com/cherishthepresent/p/17312281.html

相关文章

  • ansible剧本(playbook)- 快速入门
    ansible剧本(playbook)-快速入门Cloud研习社 Cloud研习社 2023-04-0407:31 发表于山东收录于合集#一站式教程220个#云计算196个#计算机185个#ansible22个#linux209个教程每周二、四、六更新剧本(playbook)比AD-Hoc模式更强大,可以一次性完成多个任务,类似于sh......
  • ansible剧本-playbook核心元素
    ansible剧本-playbook核心元素Cloud研习社 Cloud研习社 2023-04-0810:33 发表于山东收录于合集#一站式教程220个#ansible22个#云计算196个#计算机185个#linux209个教程每周二、四、六更新 hosts执行的远程主机列表tasks任务集Variables内置变量或自......
  • rsync远程同步:下行同步、上行同步+inotify实时同步
    一、rsync远程同步1、什么是rsync远程同步rsync是C/S架构的数据镜像备份工具,可以实现全量备份和快速增量备份支持本地复制或ssh、rsync主机同步。rsync默认端口为873rsync特性:可以在不通主机之间镜像同步整个目录树,支持增量备份、保持链接和权限、时间、属性且传输前自动执行压......
  • ansible-playbook之安装elasticsearch单机版
    一.准备环境:1.centos7环境2.安装ansible环境3.elasticsearch安装文件下载路径:  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.2-linux-x86_64.tar.gz4.elasticsearch安装主机,作者用192.168.126.129作为elasticsearch安装环境二.规划:1.变量规......
  • JUC并发编程基础篇第六章之LockSupport[notify,signal之外的另一种唤醒方式]
    目录1、LockSupport有什么用2、使用wait和notify唤醒一个线程2.1、正常情况2.2、异常情况2,这里去掉了synchronized(o){}代码块2.3、异常情况3先notify再wait3、使用await和signal唤醒一个线程3.1、正常情况3.2、异常情况:如果去除锁块3.3、异常情况:先执行signal......
  • error C2373: “__pfnDliNotifyHook2”: 重定义;不同的类型修饰符
    如果编译《Windows核心编程》的随书源码出现这个错误,是因为新版本Windows头文件更新了定义,只需要在前面加上const就行 errorC2373:“__pfnDliNotifyHook2”:重定义;不同的类型修饰符 修复:constPfnDliHook__pfnDliNotifyHook2=DliHook;constPfnDliHook__p......
  • rsync远程同步:下行同步、上行同步+inotify实时同步
    一、rsync远程同步1.什么是rsync远程同步rsync是CS架构的数据镜像备份工具,可以实现全量备份和快速增量备份支持本地复制或ssh、rsync主机同步。rsync默认端口为873rsync特性:可以在不通主机之间镜像同步整个目录树,支持增量备份、保持链接和权限、时间、属性且传输前自动执行压......
  • Java线程:wait()和notify()
    一、wait()和notify()含义二、标准代码示例创建两个线程Thread0和Thread1。代码实现:运行流程详解三、什么时候释放锁—wait()、notify()四、用生活故事讲懂线程的等待唤醒1.老王和老李(专家程序员):2.王哥和李哥(普通程序员):3.小王和小李(新手程序员):五、问题理解1、执行wait()的......
  • inotifywait基本使用
    开始之前需要检测系统内核是否支持inotify方式一:使用uname-r命令检查Linux内核,如果低于2.6.13,就需要重新编译内核加入inotify的支持。方式二:使用ll/proc/sys/fs/inotify命令,是否有以下三条信息输出,如果没有表示不支持。-rw-r--r--1rootroot0Mar1615:43max_queued_e......
  • Ansible_Playbook-统一为目标主机创建research逻辑卷
    目录实验目标实验环境ansible配置文件清单主机文件脚本文件实验目标在自建环境中能够测试RHCE磁盘管理题目在部分主机上做特殊处理,使得自己练习环境与实际环境相似实......