文档首页 > > 用户指南> Playbook编写指导> Playbook入门

Playbook入门

分享
更新时间:2020/06/02 GMT+08:00

背景信息

使用Playbook配置部署任务,以部署Java应用为例,首先需要安装Tomcat,然后将应用war包传到Tomcat的“webapps”目录,最后启动Tomcat,完成部署。主要包括如下两个部分:

编写Playbook

  1. 创建目录。

    创建一个文件夹作为Playbook的根目录,文件夹名称(如:“example”)即为Playbook的名称。

  2. 编写“deploy.json”文件。

    “example”目录下,新建“deploy.json”文件,该文件名称是固定的,用来声明部署脚本的动作(安装、卸载、升级、回滚)。如,声明安装动作具体内容如下:

    { 
    "options":[{"enable":"1","name":"install"},{"enable":"1","name":"uninstall"}] 
    }     

    在里面定义部署脚本的执行配置。其中“enable”“1”表示激活,为“0”表示不激活。

  3. 编写“install.yml”文件。

    “example”目录下,新建“install.yml”文件,该文件名称是固定的,是安装动作的入口文件。具体内容如下:

    - become: yes 
      become_method: sudo 
     
      roles: 
        - tomcat     
    • “become: yes”“become_method: sudo”表示用root用户的权限执行。
    • “roles”下面的“tomcat”表示执行部署脚本目录下的“roles/tomcat/tasks/main.yml”文件。

  4. 编写“roles/tomcat/tasks/main.yml”文件。

    “example”目录下新建“roles”目录,在“roles”目录下新建“tomcat”目录,然后在“tomcat”目录下新建“tasks”目录,最后在“tasks”目录下新建“main.yml”文件。

    其中,“tomcat”目录的名称要和步骤3“install.yml”文件中“roles”下面定义的“tomcat”名称一致,其余的“roles”目录、“tasks”目录和“main.yml”的名称都是固定的。目录结构如下图所示。

    图1 目录结构

    “main.yml”文件内容如下:

    --- 
     
    - name: mkdir tomcat /usr/local/devcloud 
      file: path=/usr/local/devcloud state=directory mode=0755  
     
    - name: Download Tomcat 
      get_url: url={{tomcat_url}} dest=/usr/local/devcloud/apache-tomcat-7.0.78.tar.gz 
     
    - name: Extract archive 
      command: chdir=/usr/local/devcloud tar -zxvf apache-tomcat-7.0.78.tar.gz  
     
    - name: Download War  
      get_url: url={{war_url}} dest=/usr/local/devcloud/apache-tomcat-7.0.78/webapps/ use_proxy=no validate_certs=no force=yes  
     
    - name: Start Tomcat 
      service: name=tomcat state=started enabled=yes     

    每一个任务均以“- name: xxx”开头。“- name:”字段不是命令,不会执行任务实质性操作,作为下面一行动作的一个易于识别的名称。

    该内容执行的任务流程如下:

    1. 使用file命令,创建“/usr/local/devcloud”目录,所属“root”用户,权限是“0755”
    2. 使用get_url命令,下载tomcat包,下载路径用“{{变量名}}”的形式来使用变量(变量的声明参见步骤5),将tomcat包下载到“dest”定义的目录下。
    3. 使用command命令,在“/usr/local/devcloud”目录下执行tar命令解压步骤b下载的tomcat包。
    4. 使用get_url命令,下载war包,下载地址同样通过变量抽取出来。
    5. 启动tomcat,部署完成。

  5. 编写“group_vars/all”文件。

    “example”目录里,新建“group_vars”目录,该名称是固定的,用来存放变量声明文件。

    “group_vars”目录下,新建“all”文件,这个名称也是固定的。“all”文件的内容如下:

    tomcat_url: http://mirror.olnevhost.net/pub/apache/tomcat/tomcat-7/v7.0.78/bin/apache-tomcat-7.0.78.tar.gz 
    war_url: http://xxx.com/xxx.war     

    其中“war_url”需要改成有效的下载地址。

  6. 打包上传Playbook。

    Playbook编写完成,完整的文件结构如下图所示。

    图2 文件结构

    将Playbook打包成zip文件,打包时注意要包含根目录“example”文件夹,如下图所示。

    图3 zip文件

    打包完成后可以在新建playbook时导入该playbook。

执行Playbook

新建部署任务时选择Playbook,执行任务时Playbook执行流程如下图所示。

  

流程说明

表1   

流程

说明

执行“install.yml”文件

执行“install.yml”文件,执行rolses定义的任务“tomcat”

执行“main.yml”文件

执行“tomcat/tasks”目录下的“main.yml”

说明:

如果有变量,则从“group_vars/all”文件中读取。

如果部署场景比较复杂,可以在“install.yml”文件的roles下面多定义几个步骤。然后在“roles”目录下分别创建各步骤的目录及“main.yml”文件。执行“install.yml”时则按顺序执行这几个步骤的“main.yml”文件。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问