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详解及体验的主要内容,如果未能解决你的问题,请参考以下文章