Ansible自动化运维之Playbook详解及体验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible自动化运维之Playbook详解及体验相关的知识,希望对你有一定的参考价值。

Handlers介绍:

  • Handlers也是一些task的列表,和一般的task并没有什么区别。是由通知者进行的notify,如果没有被notify,则Handlers不会执行,假如被notify了,则Handlers被执行;
  • 不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次
  • “notify”这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。

通过部署一个实验来看一下:

  • 实验项目:通过ansible剧本对被管理端进行部署httpd服务,并且修改配置文件,启动服务。
  • 实验环境
主机 操作系统 IP地址
ansible管理端 Centos7 192.168.72.128 /
ansible被管理端 Centos7 192.168.72.155 webserver
ansible被管理端 Centos7 192.168.72.156 mysql
  • 实验步骤
1.现在管理端安装Apache,提取其配置文件作为模板:
  * yum install -y httpd
  * cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2

技术分享图片

2.修改HTTP配置文件模板:
  * vim /opt/httpd.conf.j2

技术分享图片
技术分享图片

3.修改ansible的hosts文件
  * vim /etc/ansible/hosts

技术分享图片

4.编写一个剧本:
* vim /opt/httpd.yml
- hosts: webserver
  remote_user: root
  vars:                   #定义变量
  - package: httpd
  - server: httpd
  tasks:                #任务
   - name: installed apache
     yum: name={{package}} state=latest          #调用变量
   - name: copy httpd temp
     template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf         #模板路径和目标路径
     notify:               #调用参数handlers
       - restart httpd
   - name: start httpd
     service: name={{server}} enabled=true state=started
  handlers:           #被notify调用的参数
     - name: restart httpd
       service: name={{server}} state=restarted

技术分享图片
5.执行ansible-play剧本:
技术分享图片
6.被控制端检查:
技术分享图片

以上是关于Ansible自动化运维之Playbook详解及体验的主要内容,如果未能解决你的问题,请参考以下文章

Ansible自动化运维之Playbook详解及体验

自动化运维之ansible详解

自动化运维Ansible之Playbook剧本(持续更新)

自动化运维之 Ansible——安装配置

Linux学习总结(七十四)自动化运维之ansible

走进自动化运维之Ansible服务部署,附带(参数及模块)详解!