一个QEMU包装器添加了流浪支持和共享文件夹

transient的Python项目详细描述


Demo Gif

瞬变

Documentation Status

transient是QEMU的一个薄型包装器,它提供了诸如 下载并构建磁盘映像、共享文件夹和SSH支持。在

动机

开发transient的主要动机是有一个简单的方法 为测试和开发创建短期虚拟机,特别是内核 以及管理程序开发。还有很多其他工具可以用来创建虚拟机, 例如vagrant或多个libvirt 基于解决方案。然而,它们几乎总是非常有状态的。这可能很困难 在CI环境中使用这些工具创建虚拟机 不总是适当地同步。而且,这些工具也会使其更加困难 在引导虚拟机时提供现有的内核/initramfs。在

此外,几乎所有基于linux的虚拟化工具最终都依赖qemutransient使此依赖关系透明,允许用户具有全部灵活性 基穆。例如,在尝试设置复杂的虚拟机时,这可能非常有用 可能难以用 其他工具。在

安装

transientPyPI上可用,因此最新的 版本可以与pip install transient一起安装。也可以从 GNU Guix,可与 guix install python-transient。要从源安装transient,请克隆此 存储库并从项目根目录运行pip install -e '.[dev]'。一如既往, pythonvirtual environments的用法 建议用于开发设置。开发环境也可以 通过从项目根目录运行make dev来构建。在

transient几乎没有依赖关系。在Ubuntu上,可以通过运行 apt-get install ssh qemu-system-x86 python3-pip。在

文件

transient的文档可在Read the Docs上找到。在

快速入门

transient主要是QEMU的包装器。它提供了一小套旗帜 用于向正在启动的VM添加附加功能。顾名思义, 它几乎完全是无状态的。这样可以避免有时可能发生的问题 随着基于libvirt的工具与实际系统状态“不同步”。在

例如,在下面的命令中,--之前的标志被传递到 transient。剩下的参数直接传递给QEMU。这个例子 将导致transient下载并运行centos7vm(从varant云) 1GB内存,使用文本控制台。此虚拟机将自动 退出时关闭,其磁盘将被销毁。在

transient run \
   -image centos/7:2004.01 \
   -- \
   -nographic -enable-kvm -m 1G

transient还支持vagrant样式的SSH连接。这将启动 并将标准输入和输出连接到SSH连接 而不是串行控制台。但是,当这个连接 关闭时,机器将自动关闭(与vagrant不同)。为 示例:

^{pr2}$

-ssh-console标志取决于图像是否具有正常的可变密钥对 为vagrant用户信任。在

建筑图像

开发transient的一个副作用是创建一个类似 可用于生成虚拟机磁盘映像的声明性文件。例如, 下面的文件将基于现有的vagrant映像构建Centos 7映像 centos/7:2004.01但安装了nano并且主机名发生了更改:

FROM centos/7:2004.01
RUN yum install -y nano
RUN echo 'myhostname' > /etc/hostname

有关建筑图像的其他信息,请参见 Building Images page 文件的。在

许可证

这个项目是根据麻省理工学院的许可条款授权的。查看许可证 文件以获取详细信息

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

推荐PyPI第三方库


热门话题
支持不同屏幕大小的java为什么要在安卓中使用fragment而不是activity   java从JTextField获取输入并将其放入if/else语句中   返回空结果的java复杂sql查询   在Java中如何确定三个骰子的直线?   java如何在我的web项目中配置log4J   上次修改的Java文件返回0   amazonwebservicesjava:Dhttps。未使用proxyHost   java Parse createdAt与当前时间的比较(以分钟为单位)   java sonar“测量过滤器为树形图”颜色显示灰色框而不是绿色框   目标c使用SWT Java创建NSPover   java最新版本tomcatembedloggingjuli与其他嵌入式构件不匹配。。这不是tomcat的一部分吗?   java Hibernate+Spring:无法筛选延迟加载的集合   java如何读取整个文件并列出文件中的项目?   java如何创建没有本地主机地址的ServerSocket对象   java使用Base64将BigInteger转换为字符串,并反转结果   java为什么我的JAXB解组器找不到导入模式中声明的元素?   使用SSL忽略的java Android SMTP邮件发件人   java我无法删除应用程序中的文件   java Tesseract:在hOCR文件中获取单词可信度(x_wconf)