V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
dylanninin
V2EX  ›  Python

使用 Ansible 自动化安装 pyenv + pyenv-virtualenv,支持 OS X 和 Debian 哦

  •  
  •   dylanninin ·
    dylanninin · 2017-06-20 10:45:04 +08:00 · 2325 次点击
    这是一个创建于 2501 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知大家是如何安装 pyenv,以及 pyenv-virtualenv 的。

    昨天看到 说说我对 Python 装饰器的理解 - V2EX 后,打算重新搭建下 Python 开发环境。之前工作中用 virtualenv + virtualenvwrapper 较多,自从 Ruby 环境管理工具从 rvm 更换到 rbenv 后,想一想也是时候使用 pyenv 了。

    现在 DevOps 已全面往 ansible 迁移,对 rbenv 也熟悉,所以想着直接用 Ansible 来安装初始化;意外的是,遇到的问题还挺多(相反,使用 ansible-rbenv 就没有遇到什么问题)。特此发贴,希望对大家有所帮助。

    使用 ansible-pyenv

    GitHub 上搜索到 https://github.com/dirn/ansible-pyenv 这个项目,最近更新是 2 年以前,问题多到不可用,现在做了修复,Travis-CI 也跑通了(只是慢得无法仍受)。

    目前暂未合并,要使用可以按以下步骤:

    $ # 1. clone ansible-pyenv into your roles, and name dirn.pyenv
    $ git clone https://github.com/dylanninin/ansible-pyenv /path/to/your/ansible/roles/dirn.pyenv
    $
    $ # 2. add python playbook, see python.yml
    $ cat python.yml
    #!/usr/bin/env ansible-playbook
    ---
    - name: deploy python env
      hosts: all
      roles:
        # https://github.com/dirn/ansible-pyenv
        - role: dirn.pyenv
          pyenv_runcom: ~/.bashrc
          pyenv_versions:
            - 2.7.11
            - 3.5.3
          pyenv_default_versions:
            - 3.5.3
          pyenv_project_versions:
            - 3.5.3
    $
    $ # 3. edit your inventory, see inventory
    $ cat inventory
    [vagrant]
    vagrant-1404
    vagrant-1604
    
    [local]
    localhost ansible_connection=local
    $
    $ # 4. layout of current directory
    $ tree -L 2
    .
    ├── inventory
    ├── python.yml
    └── roles
        └── dirn.pyenv
    
    2 directories, 2 files
    $ # 5. just play it with specified host, localhost as example
    $ ansible-playbook python.yml -l localhost
    

    这样就可以自动化安装 pyenv、pyenv-virtualenv 了。当然,事先需要安装 Ansible

    另外,dirn.pyenv 中可能有一些不合理的地方,欢迎大家提建议。

    题外话

    https://github.com/pyenv/pyenv 上安装 pyenv 已经足够简单,似乎不足以使用 Ansible 等自动化工具,但 Ansible 带来的变化其实非常大,主要是:

    • 自动化。这可能是最明显、最可感知的收效,一两个服务器配置无所谓,一旦多起来了就会重复操作。现在可以自动化,还可以多台机器并行执行。
    • 标准化。『每一片雪花都独一无二』,同样适用于服务器、开发人员;人工操作总会有差异性,规模化之后会很难维护,但『雪崩后没有一片雪花觉得自己有责任』。现在可以做到『标准化』,避免此类问题。
    • 思维变化。ansible 帮助重新理解 provisioning/configuring 等,以前 手工操作、使用 shell script、使用 Dash 的 snippets 等,中间可能会遇到各类问题和中断,都不能保证服务器抵达某一种『状态』。现在可以做到了,而且是『一致性状态』。

    有机会专门介绍下 Ansible。

    参考

    4 条回复    2017-06-20 11:25:28 +08:00
    xiaomeimei
        1
    xiaomeimei  
       2017-06-20 11:20:06 +08:00
    不错不错!!
    xiaomeimei
        2
    xiaomeimei  
       2017-06-20 11:21:18 +08:00
    不过我现在用 docker
    lzjun
        3
    lzjun  
       2017-06-20 11:21:38 +08:00
    有机会专门介绍下 redmine
    descusr
        4
    descusr  
       2017-06-20 11:25:28 +08:00
    是啊是啊,我也想看看这方面的介绍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1679 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:46 · PVG 00:46 · LAX 09:46 · JFK 12:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.