ansible+jenkins发布优化

Posted 凌__晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible+jenkins发布优化相关的知识,希望对你有一定的参考价值。

通过ansible的一个脚本,实现所以自动化发布。好处就是不要为每个项目编写一个yaml脚本。
配置一、都是写成变量的形式传入

cat playbook-standard.yaml 
---
- hosts: \'{{host}}\'
  tasks:
    - name: \'{{command_1}}\'
      shell: \'{{command_1}}\'
    - name: \'{{command_2}}\'
      shell: \'{{command_2}}\'
    - name: scp files
      copy:
        src: /home/jenkins/workspace/{{job_name}}/target/{{tar_name}}
        dest: \'{{target_name}}\'
    - name: \'{{command_3}}\'
      shell: \'{{command_3}}\'
    - name: \'{{command_4}}\'
      shell: \'{{command_4}}\'
    - name: \'{{command_5}}\'
      shell: \'{{command_5}}\'

配置二,这边是配置在jenkins上的Execute shell中来调取 playbook-standard.yaml脚本

target2=`echo "$target"|sed \'s/\\"//g\'` 

#日期
bak_time=`date +%Y%m%d-%H%M`

#发布的压缩包
tar_name="-assembly.tar.gz"

#目标目录
file_name="aaa-op-all"

#启动命令
file_name2="aaa-op-all-1.0.1"

#部署的目标路径
target_name="/data/java/deploy"

#执行的命令1、2是传包前执行的命令3、4、5传包后执行的命令

command_1="cd $target_name/ && tar -zcvf bak/$file_name-$bak_time.tar.gz $file_name"
command_2="cd $target_name/ && rm -rf $tar_name"

command_3="cd $target_name && rm -rf $file_name && tar -xzvf $tar_name && sleep 5 && mv $file_name2 $file_name"
command_4="source /etc/profile && nohup sh $target_name/$file_name/bin/restart.sh >> /dev/null 2>&1 &"
#检测脚本
command_5="/aaa/op-all-log.sh"   

#ansible执行程序

for target in $(echo $target2 | sed "s/,/ /g")
do

    cd /home/jenkins/workspace/ansible && ansible-playbook playbook-standard.yaml --extra-vars "{\'host\':\'$target\', \'job_name\':\'$JOB_NAME\', \'tar_name\':\'$tar_name\', \'target_name\':\'$target_name\', \'command_1\':\'$command_1\', \'command_2\':\'$command_2\', \'command_3\':\'$command_3\', \'command_4\':\'$command_4\', \'command_5\':\'$command_5\'}"

done

以上是关于ansible+jenkins发布优化的主要内容,如果未能解决你的问题,请参考以下文章

jenkins和ansible的区别

从jenkinsfile启动包含vault文件引用的Ansible playbook

ansible优化

[ jenkins ] git+jenkins+maven + ansible 部署java程序

SSH 密钥未受保护的 terraform ansible jenkins

ansible+jenkins+svn实现生产环境自动发布