用于与流浪虚拟机交互的python绑定。

python-vagrant的Python项目详细描述


##简介

python vagrant是一个python模块,它在
`vagrant`命令行可执行文件周围提供一个薄包装,允许对vagrant
虚拟机(框)进行编程控制。此模块可用于:

-启动流浪虚拟机(vm)(`up`).
-终止流浪虚拟机(`destroy`).
-停止流浪虚拟机而不销毁它(`halt`).
-查询虚拟机或虚拟机的状态(`status`).
-获取ssh配置信息对ss有用进入虚拟机。(`host`,`port`,…)
-在多虚拟机环境中运行"vagrant"命令
(http://vagrantup.com/v1/docs/multi vm.html),方法是使用"vm\u name"参数。
-使用init()基于命名的基本框初始化虚拟机。
-添加、删除和列出框(`box add`,`box remove`,`box list`).
-provisioning vms-up()接受诸如"no-provision"、"provision"和"provision-with"这样的选项,并且有一个"provision()"方法。
-使用Sahara Gem(https://github.com/jedi4ever/Sahara)中的沙盒模式。

这个项目开始是因为我想要为v所以我可以用织物编程访问我的流浪箱。给我写信让我知道你是如何使用python vagrant的。我想分享更多的用例。-Todd Deluca


api
试图与"vagrant"api术语保持一致,以方便已经熟悉vagrant的用户进行
知识转移。随着时间的推移,
python vagrant api已经改变,以更好地匹配下划线"vagrant"cli,并且
将随着该cli中的更改而变化。

包版本号的格式为"0.x.y"。最初的"0"反映了这个项目的贝塔性质。当发生向后不兼容的更改时,数字"x"将递增。当添加向后兼容的功能或错误修复时,数字"y"将递增。





强烈建议使用最新版本的vagrant。
-vagrant需要virtualbox、vmware或其他受支持的提供商。
-python 2.7(此软件包唯一测试过的版本)或python
3.3或更高版本。
-可选择sahara gem for vagrant。它将允许您使用
`sandboxvagrant`.






>cd~
git clone git@github.com:toddeluca/python vagrant.git
cd python vagrant
python setup.py install


从fabric.api导入vagrant
导入env,execute,task,run

@task
def mytask():
run('echo$user')



v=vagrant.vagrant()
v.up()
env.hosts=[v.user\hostname\u port()]
env.key\filename=v.keyfile()
env.distable_known_hosts=true对于Vagrant Box IP更改很有用。
执行(mytask)在Vagrant主机上运行Fabric任务。


另一个示例演示如何将Vagrant多虚拟机功能与Fabric一起使用:

从Fabric.api导入Vagrant

@task
def start(machine\u name):
"使用vagrant启动指定的计算机"
v=vagrant.vagrant()
v.up(vm\u name=machine\u name)
具有设置(host\u string=v.user\u hostname\u port(vm\u name=machine\u name),
key\u filename=v.keyfile(vm\u name=机器名称),
禁用已知主机=true):
run("echo hello")


默认情况下,python vagrant实例是安静的,这意味着它们捕获stdout
和stderr。对于"loud"实例,使用"vagrant.vagrant(quiet_stdout=false)"。
将"quiet_stderr=false"设置为更大声的版本。


根据用户的需要,可以通过改变子进程的环境和发送stdout和stderr的位置来定制与子进程之间的通信。蚂蚁进程可以通过使用out-cm和err-cm参数,或者使用vagrant的quiet-stdout和quiet-stderr参数来沉默。

`

v=vagrant.vagrant(quiet_stdout=true,quiet_stderr=true)
v.up();通常噪声

ss到
一个文件,也许用来记录和分析自动化过程的结果。这可以使用
"vagrant.\uu init\uu`.


的"out-cm"和"err-cm"参数来完成。例如,将子进程的stdout和stderr记录到文件
"deployment.log":

log-cm=vagrant.make-u-file-cm('deployment.log')
v=vagrant.vagrant(out-cm=log_cm,err_cm=log_cm)
v.up()通常有噪音



"vagrantfile"可以期望环境变量存在
,并相应地执行操作。环境变量可以由"python vagrant"设置。

``python
import vagrant


os廑env['use廑nfs']=1'

v.env=os廑env
v.up();也可以将env传递给vagrant子进程环境可以在实例化时传递。


``python
import vagrant


os-env=os.environ.copy()
os-env['use_nfs']='1'

v=vagrant.vagrant(env=env)
assert v.env.env.env.env.env.env.up()将把env.env.env.unv.env.vagrant(env=env=env)
assert v.env.env.env.env.env.env.env.env.up()将把env.env.up/>##贡献

如果您使用python和vagrant,并且此项目不符合您的要求,请在github上打开一个问题或请求,网址为
https://github.com/toddeluca/python vagrant。


有关贡献和作者的详细列表,请参见changelog.md。

发出pull请求时,请包括单元测试,以测试您的更改
,并确保任何现有测试仍然有效。请参阅下面的测试部分。



它包括
下载框和多次启动和停止虚拟机。

r/>


手动测试控制vagrant子命令的输出发送位置的功能
控制台或devnull:

>;>;导入vagrant
>;>;导入os
>;>;vagrantfile='/users/tfd/proj/python vagrant/tests/vagrantfiles/single-box''
>;>>展示一个安静的流浪汉。相当于出局m=流浪者。devnull_cm
…v1=流浪者。流浪者(流浪者文件)
>;>v1.destroy();输出到/dev/null
>;>相当于out_cm=流浪汉。stdout_cm
…v2=vagrant.vagrant(vagrantfile,quiet_stdout=false)
>;>v2.destroy();stdout发送到控制台
=>;默认值:未创建虚拟机。继续…
v3=vagrant.vagrant(vagrantfile,out_cm=vagrant.stdout_cm)
>;>v3.destroy();输出到控制台
=>;默认值:未创建虚拟机。继续…
v4=vagrant.vagrant(vagrantfile,out_cm=vagrant.devnull_cm)
>;>v4.destroy();输出到控制台
>;>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有作为接口的属性的java Hibernate实体类   在Java中检查int l,r的条件l+1<r的最快方法   java如何更新TornadFX ComboBox Kotlin   java Tomcat未调用控制器api   java在Android Studio中的alertdialog中打开新活动   xml VScode Java/Maven环境问题不同的计算机   java我需要修改循环中的一个文本字符串,这样程序就可以复制粘贴相同的字符串,但数字会增加   java如何从Twilio响应消息中获取内容   从Java5+diamond运算符开始初始化泛型集合的java方法   在java中循环,直到用户按下enter键   java如何找到组件属于哪个面板?   java我想计算一个代码需要的总迭代次数   <data 安卓:type=“*/*”/>不允许使用java字符串类型   解析我有一个带有开始日期和目标日期的字符串,我想在Java中获取日期并保存在变量中   在mongodb中使用ReflectionDBObject类插入java对象?