Ansible(三) - playbook简介

Ⅰ. Playbook介绍

Playbook其实就是ansible的一个任务列表,各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。在顺序运行某playbook时,如果中途发生错误,所有已执行任务都将回滚,多次执行是安全的,因为其结果均一致。使用YAML语法结构。

 

Ⅱ. Playbook 的组成结构

target section  #定义将要执行playbook的远程主机组

variable section  #定义playbook运行时需要使用的变量

task section  #定义将要在远程主机上执行的任务列表

handler section  #定义task执行完成以后需要调用的任务

 

Ⅲ. Playbook示例

# cat test.yml 
---
- hosts: all   #指定所有主机组
  vars:          #指定变量
    http_dir: /etc/httpd/conf
  remote_user: root #指定root执行
  tasks:
   - name: Install NTP #安装NTP服务
     yum: name=ntp state=installed  
  
   - name: Enable NTP #开启NTP服务 
     service: name=ntpd state=started enabled=yes  

   - name: CP files #通过执行cp语句拷贝文件
     command: cp /etc/hosts /etc/hosts.bk

   - name: copy module #通过copy module复制配置文件
     copy:
       src: "{{ item.src }}"
       dest: "{{ item.dest }}"
       owner: root
       group: root
       mode: 0644
     with_items:
     - {
       src: "/tmp/httpd.conf",
       dest: "/etc/httpd/conf/httpd.conf" 
       }
     - {
       src: "/tmp/httpd-vhosts.conf",
       dest: "/etc/httpd/conf/httpd-vhosts.conf"
       }

    - name: copy file and restart httpd #备份文件,成功后通过notify触发handlers重启HTTPD
      copy: "src={{http_dir}}/httpd.conf dest=/tmp/httpd.conf.bk"
      notify:
       - restart httpd service
    handlers:
     -name: restart httpd service
      service: name=httpd state=restarted

 

通过以下命令检查playbook是否有语法错误:

# ansible-playbook test.yml --syntax --check

执行playbook:

# ansible-playbook test.yml

 

 

posted on 2017-09-14 14:14  走心的狗  阅读(341)  评论(0编辑  收藏  举报

导航