使用ansible搭建python多版本開發環境

hiyang發表於2019-02-16

背景

在學習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…

相關文章