专辑:ansible学习笔记
首先创建一个myproject目录,并进入其中创建如下文件:
push_tag.sh
deploy.sh
ansible_hosts
deploy_remote.yml
deploy_remote.sh
文件内容分别如下:
push_tag.sh
该脚本的功能在于传入 tag_name
和提交 msg ,并提交打包推到远程仓库中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #!/usr/bin/env bash
TAG_NAME=$1 PUSH_MSG=$2
main(){ git pull origin master git add . git commit -m ${PUSH_MSG} git push origin master git tag ${TAG_NAME} git push origin ${TAG_NAME} }
if [ ! ${TAG_NAME} ] then echo 'UAGE: ./push_tag.sh <regex:tag_name>' else main fi
|
deploy.sh
该脚本需要在远程服务器执行,通过传入 tag_name
从 git 获取相应版本代码,并通过 supervisor 来重启项目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #!/usr/bin/env bash # 部署指定tag 的api程序 # __author__ = "wenxiaoning([email protected])" # __copyright__ = "Copyright of GoChinaTV (2017)."
TAG_NAME=$1
deploy_tag(){ echo '******************************' echo '********开始部署tag:' ${TAG_NAME} echo '******************************' git fetch git checkout ${TAG_NAME} sudo /usr/local/bin/supervisorctl -c /etc/supervisord/supervisord.conf restart tmd echo '******************************' echo '********部署成功' echo '******************************' }
main(){ if [ ! ${TAG_NAME} ] then echo 'UAGE: 需要传入想要部署的tag名称' else deploy_tag fi }
main
|
ansible_hosts
该文件配置远程服务器信息,并通过sshkey进行连接
1 2
| [api_prod] prod.server.org ansible_ssh_user=root ansible_ssh_private_key_file=~/.ssh/sshkey.pem
|
deploy_remote.yml
改yml完成远程命令为,进入tmd目录,并执行 ./deploy_api.sh
脚本部署项目
1 2 3 4 5 6
| - hosts: api_prod tasks: - name: deploy shell: ./deploy_api.sh '{{tag_name}}' args: chdir: ~/tmd
|
deploy_remote.sh
改脚本作为一个桥梁连接完成本地提交代码和执行远程部署两项工作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #!/usr/bin/env bash TAG_NAME=$1 MSG=$2
deploy(){ echo '******************************' echo '********开始远程部署tag:' ${TAG_NAME} echo '******************************' ./push_tag.sh ${TAG_NAME} ${MSG} ansible-playbook deploy_remote_api.yml --extra-vars "tag_name=${TAG_NAME}" --inventory-file=ansible_hosts echo '******************************' echo '********部署成功' echo '******************************' }
if [ ! ${TAG_NAME} ] then echo 'UAGE: ./git_push.sh <regex:tag_name>' else deploy fi
|
运行
1
| ./deploy_remote.sh 1.0.0 '我的第一个版本'
|