【DevOps】借助 Ansible 与 Tmux +Tmuxp 实现程序的自动化部署与启动

需求场景


在工作中,我会经常遇到一种情况,比如需要快速爬一批数据,或者需要大规模的数据分析,此时我们通常的做法是,写一个爬虫或者写一个数据分析程序,然后把程序分别上传到各个服务器,并启动;如果服务器数量庞大,手动做这些事情的时间成本较高,于是我们借助 Ansible + Tmux +Tmuxp 实现 程序的自动化部署 与 启动 两个流程;


程序的自动化多机部署


步骤

1、需要部署的程序
2、tmuxp 启动脚本
3、ansible 部署脚本(部署 程序 与 tmuxp 启动脚本)

Tmuxp 启动脚本

sudo vim tmuxp_temp_program.yaml

session_name: TmuxpTempProgram
windows:
- window_name: TmuxpTempProgram
  layout: tiled
  shell_command_before:
    - cd /usr/tempcode # run as a first command in all panes
  panes:
    - python temp_program.py           # pane no. 1

Ansible 部署脚本

sudo vim deploy_code.yml
- hosts: temp
  become: true

  tasks:
    - name: deploy temp_program.py
      copy:
        src: "./temp_program.py"
        dest: '/usr/tempcode/temp_program.py'
        
    - name: deploy tmuxp for temp_program
      copy:
        src: "./tmuxp_temp_program.yaml"
        dest: '/usr/tempcode/tmuxp_temp_program.yaml'
        
	- name: deploy tmuxp for temp_program
	  shell: tmuxp load ./usr/tempcode/tmuxp_temp_program.yaml      

ansible-playbook  deploy_code.yml

这里有几点要注意:

1、ansible 是 无法读取到我们配置的环境变量的,但是可以读到 /usr/bin ,因此,如果直接使用 tmuxp、pip、python 等命令,需要把这些命令安装到 /usr/bin 或者 创建软链接到 /usr/bin 下,我这里会为需要的模块单独创建个软链接,用来和系统的链接分开,比如:

sudo ln -s $(which pip) /usr/bin/ezpip

2、直接执行 tmuxp 会卡住,因为 tmuxp 不会有返回值,而是一个开启新 session 和 新窗口的操作,所以这一步是无法实现的,最后无奈只能手动 tmuxp load 了,这个问题留着以后想办法解决一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值