码迷,mamicode.com
首页 > 其他好文 > 详细

运维自动化工具 Ansible-playbook (一)

时间:2018-09-14 18:31:13      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:方式   conf   water   生效   copy   就是   roo   process   notify   

一、简介

playbook是一个非常简单的配置管理和多主机部署系统。可作为一个适合部署复杂应用程序的基础。
playbook可以定制配置,可以按指定的操作步骤有序执行,支持同步和异步方式。
playbook是通过YAML格式来进行描述定义的,可实现多台主机应用的部署,对不同分组的主机执行特定指令步骤。

第一个playbook

---

- hosts: all
  remote_user: root

  tasks:
    - name: test yml
      command: /usr/bin/wall "hello world"

技术分享图片

Playbook工作流程

技术分享图片

二、Playbook核心元素

hosts

hosts 行的内容是一个或多个组或主机的 patterns,以逗号为分隔符。通常是/etc/ansible/hosts定义的主机列表。
remote_user 就是远程执行任务的账户名。

---
- hosts: cluster1,cluster2
  remote_user: root

tasks

任务集

  tasks:
    - name: install httpd
      yum: name=httpd

    - name: start httpd
      service: name=httpd state=started

    - name: check http port
      shell: ss -ntl|grep 80 > /tmp/httpd.txt

    - name: fetch
      fetch: src=/tmp/httpd.txt dest=/tmp

一个yml文件里可以设计多个playbook,不过呢,为了更清晰的管理,建议应该独立存放不同任务需求,方便以后调用。

Handlers 和 notity

由特定条件触发的操作,满足条件方才执行,否则不执行。

Handlers也是task列表,这些task与前述的tasks并没有本质上的不同,用于当关注的资源发生变化时,才会采取一定的操作

还是拿上个例子的playbook修改下。

---
- hosts: clutser1
  remote_user: root

  tasks:
    - name: install httpd
      yum: name=httpd

    - name: change httpd.conf
      copy: src=/app/httpd.conf dest=/etc/httpd/conf/ backup=yes
      notify: restart httpd             # 在 notify 中定义内容一定要和handlers中定义的 - name 内容一样,这样才能达到触发的效果,否则会不生效。
    - name: start httpd
      service: name=httpd state=started

    - name: wall http status
      shell: /usr/bin/wall `ss -nltp|grep httpd`

  handlers:
    - name: restart httpd           # 只有接收到通知才会执行这里的任务
      service: name=httpd state=restarted

运维自动化工具 Ansible-playbook (一)

标签:方式   conf   water   生效   copy   就是   roo   process   notify   

原文地址:http://blog.51cto.com/wzlinux/2175365

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!