文档首页 > > 用户指南> Playbook编写指导> Shell脚本和Playbook的转换

Shell脚本和Playbook的转换

分享
更新时间:2020/03/12 GMT+08:00

背景信息

传统的部署方式是通过编写shell脚本在主机上运行部署任务,这种方式也是目前很多团队的现状。但鉴于ansible的优势,越来越多的团队开始采用ansible来实现DevOps,因此需要将现有的shell脚本修改为ansible的Playbook。可以使用以下两种方法:

  • Shell脚本与Playbook的转换
  • 使用Playbook调用shell脚本

Shell脚本与Playbook的转换

如下是一个安装apache的shell脚本:

#!/bin/bash 
# 下载应用包 
cd /usr/local/devcloud/apache-tomcat-7.0.61/webapps/ 
wget $app_url 
chmod 755 TempTest-Tomcat_war.war 
# 启动Apache,并设置开机启动 
service tomcat start     

转换为一个完整的playbook后:

- name: 下载应用包 
  copy: src={{app_url}}/tomcat/TempTest-Tomcat_war.war dest=/usr/local/devcloud/apache-tomcat-7.0.61/webapps/ mode=755 

- name: 启动Tomcat 
  service: name=tomcat state=started enabled=yes     

将以上内容放在“main.yml”文件中,创建一个“Playbook”即可运行,运行结果和脚本运行结果一致。

使用Playbook调用shell脚本

如果现有的shell脚本过于复杂,改为Playbook耗时较长,可以编写简单的Playbook去调用现有的shell脚本,如下:

--- 
  - name: mkdir /tmp/test 
    file: path=/tmp/test state=directory mode=0755 
  - name: copy install.sh 
    template: src=install.sh dest=/tmp/test/ 
  - name: excute install.sh 
    command: chdir=/tmp/test sh install.sh     

以上Playbook流程如下:

  1. “file”模块创建一个临时目录“/tmp/test”
  2. 然后使用“template”模块将现有的shell脚本“install.sh”复制到“/tmp/test”
  3. 最后用“command”来执行这个shell脚本。
分享:

    相关文档

    相关产品

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

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

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

字符长度不能超过200

提交反馈 取消

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

智能客服提问云社区提问