【DevOps】使用 Ansible 将项目部署到多个服务器

背景需求


对于服务或程序部署在多台机器的情况,让我们修改代码的时候,需要把每台机器的代码都更新一边,非常费时费力,本文借助 ansible 来实现 把代码部署到多台服务器。


手动实现步骤


1、打包代码

在打包时,使用了 exclude 参数,来排除不想打包去备份或者往别的机器部署的文件,比如日志文件、git 文件、pycharm 产生的临时文件等。

之所以压缩后的文件名称末尾是 .tar.gz ,其实是一种标识,表示是经过 tar 处理的,且 加 z 参数 压缩过的,z 是表示 gzip 压缩的意思。

sudo tar zcvf /usr/EzrealerProjects/ProjectFolderNameBackup.tar.gz --exclude=*.git  --exclude=*.log --exclude=*.pyc --exclude=*.pdf --exclude=*.xls --exclude=*.xlsx   -C /usr/GitCodes/ ProjectFolderName

注意:

  • exclude 的参数 一定要写在要打包的项目名 ProjectFolderName 之前;
  • exclude 参数前 有两个横线;
  • 通过 exclude 参数 排除 .git 文件夹 ,.log 文件 , .pyc 文件等;

再用 tar 命令查看一下打包后的文件是否符合需求(比如不包含 .log 文件等)

tar -tvf /usr/EzrealerProjects/ProjectFolderNameBackup.tar.gz

2、将代码复制到另一台服务器的 /usr/EzrealerProjects 路径下

3、解压缩

tar zxvf /usr/EzrealerProjects/ProjectFolderNameBackup.tar.gz -C /usr/EzrealerProjects

使用 ansible 实现

1、在 host 中设定要部署的机器

sudo vim /etc/ansible

[temp]
120.xxx.xx.[169:174] ansible_port=22 ansible_user=root ansible_sudo_pass="123"

2、编写 playbook 完成代码的打包、复制 与 解包

sudo vim deploy_projects.yml

- hosts: temp
  become: true
  gather_facts: False
  tasks:
    - name: tar zcvf project.tar.gz
      shell: tar zcvf /usr/EzrealerProjects/ProjectFolderNameBackup.tar.gz --exclude=*.git  --exclude=*.log --exclude=*.pyc --exclude=*.pdf --exclude=*.xls --exclude=*.xlsx   -C /usr/GitCodes/ ProjectFolderName
      when: ansible_ssh_host =='120.xxx.xx.174'

    - name: scp local to remote servers
      copy:
        src: "/usr/EzrealerProjects/ProjectFolderNameBackup.tar.gz"
        dest: '/usr/EzrealerProjects/'
    - name: tar zxvf /usr/EzrealerProjects/ProjectFolderNameBackup.tar.gz
      shell: tar zxvf /usr/EzrealerProjects/ProjectFolderNameBackup.tar.gz -C  /usr/EzrealerProjects

3、执行 playbook

ansible-playbook deploy_projects.yml
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值