Ansible的Playbook详解及示例

一、Playbook 简介
Playbooks与Ad-Hoc相比,是一种完全不同的运用Ansible的方式,而且是非常之强大的;也是系统ansible命令的集合,其利用yaml语言编写,运行过程,ansbile-playbook命令根据自上而下的顺序依次执行。
简单来说,Playbooks 是一种简单的配置管理系统与多机器部署系统的基础。与现有的其他系统有不同之处,且非常适合于复杂应用的部署。
同时,Playbooks开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。
Playbooks可用于声明配置,更强大的地方在于,在Playbooks中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤。并且可以同步或异步的发起任务。
我们使用Ad-Hoc时,主要是使用 /usr/bin/ansible 程序执行任务.而使用Playbooks时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范。
在如右的链接中:ansible-examples repository,有一些整套的Playbooks,它们阐明了上述的这些技巧。

二、Playbook 构成
Playbook主要有以下四部分构成:
1. target section:定义将要执行playbook的远程主机组
2. variable section:定义playbook运行时需要使用的变量
3. task section:定义将要在远程主机上执行的任务列表
4. handler section:定义task执行完成以后需要调用的任务

而Playbook对应的目录层有五个,分别如下:
一般所需的目录层有:(视情况可变化)
1. vars 变量层
2. tasks 任务层
3. handlers 触发条件
4. files 文件
5. template 模板
接下来,我们将分别介绍构成playbook的四层结构。

三、Playbook 示例

[root@master src]# cat  /opt/playbook/test.yaml
---
- hosts: test  #定义的主机组,即应用的主机
  remote_user: root     # 远程用户为root

  tasks:
    - name: mkdir ssh dir
      shell: mkdir -p /root/scripts/.ssh

    - name: copy ssh file
      copy: src=/root/scripts/.ssh/authorized_keys dest=/root/.ssh/authorized_keys 

    - name: rsync scripts
      synchronize: src=/root/scripts dest=/root rsync_opts=-avuz # rsync增量传输

    - name:  rsync tomcat jdk
      synchronize: src=/opt/service dest=/opt  rsync_opts=-avuz

    - name: "initialize"
      shell: sh /root/scripts/auto_fdisk.sh
    - shell: sh /root/scripts/useradd.sh   #存在多个相同模块时,后面的木块要加-
    - shell: sh /root/scripts/init.sh
    - shell: sh /root/scripts/service.sh

你可能感兴趣的:(Linux)