More Related Content Similar to 02.python.开发最佳实践
Similar to 02.python.开发最佳实践 (20) 02.python.开发最佳实践3. • 期望达到的目标
– 通过标准化、自动化降低对开发、测试、生产环境的沟通
障碍
• 降低互相理解各自环境的难度
• 降低定位问题难度
– 让每次代码提交都能知道是否能―正常运行‖
• 刚开始―正常运行‖仅仅意味着进程可以正常启动,随着覆盖度越来
越高,除性能、漏报、误报这些,大部分都应该是能被测试到的
– 加快―开发->测试->部署‖的时间,避免反复沟通,反复调
整
• 大致思路 – DevOps
– 基础设施代码化:Infrastructure As Code
– 持续集成(CI): Continuous Integration
– 持续交付(CD): Continuous Delivery
• http://book.douban.com/subject/6862062/
6. • Python 社区是一个变化非常快的社区
– 知识和工具都需要及时更新,跟进社区的变化
• Python 开发的最佳实践(推荐阅读)
– The Hitchhiker’s Guide to Python!
• 英文版:http://docs.python-guide.org/en/latest/
• Python 自身的包管理工具(推荐阅读)
– Python 套件管理程序简介
• http://t.cn/zYdfQqV
– Python 的虚拟环境及多版本开发
• http://t.cn/zjOzu0y
– Hitchhiker’s Guide:
• Linux:http://t.cn/zYdfQqI
• Windows:http://t.cn/zYdfQqf
7. • 主要工具(Python 包管理三大利器)
– pip
• Python 的包管理工具,原有 easy_install 不再维护
• http://www.pip-installer.org/en/latest/
– virtualenv
• Python 的环境管理工具,隔离 Python 不同环境的影响
• http://www.virtualenv.org/en/latest/
– virtualenvwrapper
• virutalenv 的增强工具包,实现了很多很方便的工具
• http://virtualenvwrapper.readthedocs.org/en/latest/
12. vagrant + veewee = 构建环境的利器!
目前 veewee 对 vagrant v1.1.x 版本兼容性还有问题
因此我们还在 vagrant v1.0.x 这个版本上
13. 制作
通常是运维人员
使用
通常是开发人员、测试人员
基本概念和基本流程
templates 虚拟机配置模版
basebox 虚拟机模版
box 虚拟机文件vagrant box repackage 'base'
vagrant basebox build 'ESPP-BASE' --nogui –force
vagrant basebox export 'ESPP-BASE'
vagrant basebox define 'ESPP-BASE' 'PA.10.04.4.x64-base'
box 虚拟机实例
vagrant init
vagrant box remove 'base'
vagrant box add 'base' ESPP-BASE.box
vagrant up
vagrant ssh
vagrant status
vagrant halt; vagrant suspend; vagrant resume
vagrant v1.0.x 的官方文档:http://docs-v1.vagrantup.com/v1/docs/index.html
15. • 从―虚拟机文件‖创建―虚拟机实例‖
– cd ~/vagrant(进入 vagrant 的工作目录)
– vagrant init
– vagrant box remove 'base'
– vagrant box add 'base' ESPP-BASE.box
– vagrant up
• 启动并使用―虚拟机实例”
– cd ~/vagrant(进入 vagrant 的工作目录)
– vagrant ssh
– vagrant status
– vagrant halt; vagrant suspend; vagrant resume
使用者视角的演示
16. • 打包”虚拟机实例”
– cd ~/vagrant(进入 vagrant 的工作目录)
– vi Vagrantfile
– 方法一:vagrant box repackage 'base'
– 方法二(管理员):vagrant package 'base' --base
'ESPP-base' --output base.box
使用者视角的演示
http://docs-v1.vagrantup.com/v1/docs/vagrantfile.html
17. • 配置”虚拟机实例”的具体方法
– cd ~/vagrant(进入 vagrant 的工作目录)
– vi Vagrantfile
• 如何修改”虚拟机实例”配置
– http://docs-v1.vagrantup.com/v1/docs/vagrantfile.html
• 如何配置多个”虚拟机实例”
– http://docs-v1.vagrantup.com/v1/docs/multivm.html
• 介绍示例 Vagrantfile 的内容
使用者视角的演示
19. • 从―虚拟机配置模版‖创建―虚拟机模版‖
– cd ~/vbox(进入 vagrant 的管理目录)
– vagrant basebox define 'ESPP-BASE' 'PA.10.04.4.x64-base'
– vagrant basebox build 'ESPP-BASE' --nogui --force
– vagrant basebox ssh 'ESPP-BASE'
• 导出―虚拟机模版‖
– vagrant basebox export 'ESPP-BASE'
– ESPP-BASE.box 就是可以给他人使用的虚拟机模版
• 介绍―虚拟机模版文件‖
– definition.rb
– preseed.cfg
– *.sh
管理员视角的演示
23. • 如何排错?
• 查文档!
– vagrant 的文档写得不错——全面、简单、易懂
– http://docs-v1.vagrantup.com/v1/docs/index.html
– http://docs-v1.vagrantup.com/v1/docs/getting-
started/index.html
• 可能需要 console 登上去才能解决的问题
– 安装过程中、各种限制、需要看进展、……
– export DISPLAY='10.52.32.1:0.0'
– vagrant basebox build 'ESPP-BASE' --force
25. • veewee 的虚拟机配置模版目录
– /var/lib/gems/1.8/gems/veewee-0.3.7/templates/
• 用户目录中的环境
– .vagrant
• 记录虚拟机 UUID 和状态,不用管
– ~/.vagrant.d/
• vagrant 的通用配置,例如 vagrant 这个用户的 ssh_key
– ~/VirtualBox VMs/
• VirtualBox 的虚拟机目录,不用管
– ~/vbox/
• 管理员创建虚拟机模版的工作目录(可以是任意目录)
– ~/vagrant/
• 使用 vagrant 的工作目录(可以是任意目录)
– ~/vagrant/Vagrantfile
• vagrant 的配置文件,最好是每个项目配置一个
26. • 安装 vagrant + veewee
– http://gitlab.lab.intra.nsfocus.com/devops-
document/tree/master/Infrastructure/Vagrant/Installa
tion.md
28. • 推荐给大家的文档
– Vagrant 快速入门
• http://docs-v1.vagrantup.com/v1/docs/getting-started/index.html
– Vagrant 手册
• http://docs-v1.vagrantup.com/v1/docs/index.html
– Vagrant 教程
• http://gitlab.lab.intra.nsfocus.com/devops-
document/tree/master/Infrastructure/Vagrant
– Python 开发环境最佳实践
• http://gitlab.lab.intra.nsfocus.com/devops-
document/tree/master/Python/Python.Best.Practice
– 持续关注 vagrant 和 veewee 的变化
• 是不是支持 vmware 啦?
• veewee 是不是兼容 vagrant 1.1.x 啦?
• ……
• Python 社区是个发展非常快的社区