ansible部署脚本

 在中小企业如果需要实现代码的自动化部署,99%以上公司不会开发什么自动化部署回滚平台的,这个时候就需要运维人员通过shell+ansible+jenkins来自动化部署我们的服务器了。

因为涉及到线上业务,这里只演示部署一个war包的具体操作和脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
vim deploy.sh
#!/bin/bash
# 用于jenkins自动化发布
source /etc/profile
source /etc/bashrc
source /etc/profile.d/*.sh
datestamp=`date +%Y-%m-%d-%H:%M:%S`
cd /mnt/resource/data/deploy
deploy_tomcat(){
cp -r /var/lib/jenkins/workspace/test/target/*.war playbooks/config/tomcat_test/war/tomcat_test.war
ansible-playbook -i hosts playbooks/tomcat_test.yml -e "$(python var.py tomcat_test)"
}
case "$1" in
"tomcat")
deploy_tomcat;
;;
*)
echo "error,please use nginx|tomcat|php";
;;
esac
1
2
3
4
5
6
7
8
9
10
11
12
vim var.py
import sys
import json
# 这里写的一个小的python脚本用于给ansible用户传参
with open('var.json') as data_file:
var_json = json.load(data_file)
#with open('share.json') as data_file:
# share_json = json.load(data_file)
sys.stdout.write(json.dumps(dict((var_json[sys.argv[1]].items()))))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim var.json
{
"tomcat_test": {
"app": "tomcat_test",
"context_path": "tomcat_test",
"http_port" : "8092",
"https_port": "8099",
"admin_username": "admin",
"admin_password": "admin",
"templates": [
{
"source": "tomcat_test/template/log4j.properties",
"target": "tomcat_test/WEB-INF/classes/log4j.properties"
}
]
}
}

由于文件太多,这里就在网盘里共享了,详细操作可以和我沟通。
链接:http://pan.baidu.com/s/1miSIC1U 密码:ynqv

火柴 wechat
扫描上方二维码关注我的博客!
0%