资讯专栏INFORMATION COLUMN

使用ansible搭建python多版本开发环境

KaltZK / 3753人阅读

摘要:恰好最近在学习,决定使用来部署的多版本环境。说明这里一个只能建立一个开发环境,多个开发环境需要执行多次由于具有幂等性,多次相同的执行并不会导致覆盖。

背景

在学习python过程中,centos系统自带的python版本比较滞后。在测试过程中,往往需要多个版本,但又不想影响系统自带的版本;尤其是在学习django过程中,python版本切换更加频繁,因此有了多版本切换需求。

在网上查了相关的文档,起初写了几个脚本,完成多版本的部署和切换,最终效果不太理想。

恰好最近在学习ansible,决定使用ansible来部署python的多版本环境。

更新说明

v1.0 基本实现了python多环境的部署;
v1.1 使用role重新组织了playbook,增加了卸载功能pyuninstall
v1.1.1 由于网络问题,安装python往往过慢,增加使用本地安装包进行安装,默认并没有启用,可以修改use_local_python_targz: true启用。

快速使用

克隆并配置好对应主机的ip后,直接运行playbook,默认会安装python3.6.0;
在命令行运行py360即可启动虚拟环境,运行pyd即可关闭虚拟环境;

部署方法 1 确保你所使用的环境已经安装的ansible,并可以正常使用;远程执行的密钥已经添加; 2 下载playbook
git clone https://git.coding.net/echohiyang/pyinstall.git

或者下载指定的版本

wget https://coding.net/u/echohiyang/p/pyinstall/git/archive/v1.1.1.zip
3 修改hosts文件,在pythonserver组中加入你的主机ip 4 修改变量 python版本 roles/pyinstall/vars/main.yml
python_version_to_install: 3.6.0
python_version: 3.6.0
python_alias: py360

python_version_to_install 将要安装的python版本,所要安装的版本已经存在时,安装步骤会跳过;
python_version_to_deploy 指向的python_version_to_install已经存在或者正在被安装,则会创建python的虚拟环境,别名为python_alias;实际上就是用哪个版本创建python虚拟开发环境;
python_alias:创建虚拟环境的别名

5 运行playbook进行安装
ansible-play pyinstall.yml
6 运行playbook进行卸载
ansible-play pyuninstall.yml

部署结束

使用方法

前面部署过程中已经添加了python_alias别名,可以直接使用别名来启动python虚拟环境。

说明

这里一个只能建立一个开发环境,多个开发环境需要执行多次;由于ansible具有幂等性,多次相同的执行并不会导致覆盖。

目录说明(默认)
/usr/local/pyenv            主目录
/usr/local/pyenv/path.d/    自定义的PATH变量
声明

此项目直接引用了以下两个开源项目
https://github.com/yyuu/pyenv...
https://github.com/yyuu/pyenv...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40767.html

相关文章

  • 一些小团队的自动化运维实践经验

    摘要:行业内各巨头的自动化运维架构都各种功能各种酷炫,如下图,让人可望不可及。面对这么多问题,我就想啊,如何在低成本情况下实现自动化运维。自动扩缩容通过配置告警规则,调用相应就可以实现实战以上就是笔者关于自动化运维的一些实践。 行业内各巨头的自动化运维架构都各种功能各种酷炫,如下图,让人可望不可及。现在最终的样子大家都知道了,但问题是如何根据自己团队当前的情况一步步向那个目标演进?笔者所在团队,三...

    princekin 评论0 收藏0
  • 使用pipenv代替virtualenv管理python

    摘要:前言第一次接触到是因为看到董明伟大神的使用管理你的项目,之前可能和大家的选择类似使用或者来管理的包环境。是针对的包的多版本管理,通过将包安装到一个模块来作为的包虚拟环境,通过切换目录来实现不同包环境间的切换。 前言 第一次接触到 pipenv 是因为看到@董明伟大神的《使用pipenv管理你的项目》,之前可能和大家的选择类似使用 virtualenv 或者 pyenv 来管理 pyth...

    whidy 评论0 收藏0
  • DevOps 基于Walle的小型持续集成实战(一)概述

    摘要:该文章用于概述一个小型持续集成环境的搭建的方案什么是持续集成持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回造成每天会有多次的版本发布。 该文章用于概述一个小型持续集成环境的搭建的方案 什么是持续集成? 持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回...

    Yangyang 评论0 收藏0
  • 初创公司如何实现 Ansible 机房自动部署发布

    摘要:在只有少量服务器的情况下,大多数运维人员会选择手动更新,减少自动化部署发布的开发成本。五自动化部署发布示例简要说明下我们的项目如何使用实现了多个环境的自动化部署发布。 showImg(https://segmentfault.com/img/bVJEL6?w=500&h=250); 一、面临的问题 一个完整的程序开发流程少不了部署发布这个环节,而部署发布是一个重复的过程,最基本的操作包...

    Karuru 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<