运行 Vagrant Fedora 22

Fedora 22 有很多很棒的特性,并且有带有 libvirt 支持的 Vagrant 其中之一. 不知道 Vagrant 有什么用? Vagrant 是一个程序,它使您能够轻松地创建可移植和可重现的开发环境,支持许多主机和来宾操作系统以及各种功能,例如同步文件夹、转发端口以及对著名供应商(如 Chef、Puppet 或 Ansible)的支持。 这还不是全部。 您可以将 Vagrant 配置为使用 Linux 容器(内置 Docker 支持)或著名的云服务,这样您甚至不必在计算机上运行开发虚拟机。

安装流浪者

要安装普通的 Vagrant 包,请运行:

# dnf install vagrant

这将安装你想要的基本 Vagrant 包,以防你只需要将 Vagrant 与 Docker 或当前不直接支持的提供程序一起使用 Fedora 如 VirtualBox. 这本质上是一个没有任何插件的精简版 Vagrant。

# dnf install vagrant-libvirt

如果您希望通过 libvirt 将 Vagrant 与 QEMU/KVM 虚拟化一起使用,请运行上述命令(推荐,因为这是我们可以支持的)。 它将安装基本的 Vagrant 包和 vagrant-libvirt 插件。 如果您还想避免每次从 Vagrant 虚拟化某些内容时都输入密码,请下载 vagrant-libvirt-doc 子包并运行以下命令以允许 vagrant 组无需身份验证即可管理 libvirt:

# dnf install vagrant-libvirt-doc
# cp /usr/share/vagrant/gems/doc/vagrant-libvirt-0.0.26/polkit/10-vagrant-libvirt.rules /usr/share/polkit-1/rules.d/

最后,如果你更喜欢 lxc 而不是 Docker,你也可以通过运行以下命令安装 vagrant-lxc 插件:

# dnf install vagrant-lxc

旧款 Fedora 的流浪者

不运行 Fedora 22了吗? 软件包已被反向移植到 Fedora 21 也可以在官方存储库中使用相当长的一段时间。 如果您正在运行 RHEL 或 CentOS,请查看我的 Copr 存储库,其中包含 vagrant1 软件合集.

上游包

我们打包 Vagrant 是因为我们希望看到一种更简单的安装和使用 Vagrant 的方法 Fedora,尤其是与 vagrant-libvirt 提供程序一起使用。 我们的软件包为 Vagrant 提供了直接的安装和更新,与上游提供的 RPM 不同,我们不捆绑 Vagrant 依赖项。 然而,这有一个我们无法解决的限制; 目前我们不支持将自定义框上传到 Atlas(官方 Vagrant 云),因为我们没有提供提供此功能的内部 Vagrant 插件。 这是因为上游决定使用我们无法交付的 RubyEncoder 二进制文件 Fedora 因为他们的许可。 请注意,这不会影响从 Atlas 下载图像。 如果您还需要上传,则必须抓取并安装 上游包 (也可作为 RPM 使用)。

入门

如果您还不了解 Vagrant,则需要花几分钟时间了解如何设置您的开发环境。 第一部分是了解 Vagrant box 和 Vagrantfiles 是什么。 Boxes 是提供者特定的图像,带有一些元数据,Vagrantfiles 是项目的配置文件。 要设置环境,您需要在项目的根目录中创建 Vagrantfile。 这是一个 example 最小的,相当空的,Vagrantfile:

Vagrant.configure(2) do |config|
  config.vm.box = "fedora-22"
end

如您所见,Vagrantfile 只是一个常规的 Ruby 文件,让您可以使用 Vagrant DSL 来定义您的开发环境。 在我们最小的 example 我们只设置了 ‘box’ 参数来定义我们的 Vagrant 盒子。 有了这个,我们已经可以告诉 Vagrant 通过运行来虚拟化我们的新开发环境

流浪起来

. 取决于我们的默认提供程序(libvirt in Fedora, VirtualBox 在上游),Vagrant 将尝试创建并启动虚拟机。 它还将通过一些默认选项配置您的环境,例如将项目目录同步到新创建的来宾上的 /vagrant。

这当然只是开始。 关于如何进一步设置项目的开发环境确实有很多选择,而且它们大多是特定于提供商的,所以请在阅读官方文档后阅读您的提供商的文档。 为您的第一个项目定义环境的一个好的开始将是一个默认的 Vagrantfile,它将在运行后为您生成

流浪初始化

. 它包含许多注释掉的选项及其描述,可以帮助您快速定义配置。

另一个很好的方法是研究开源项目的 Vagrantfiles; 例如 OpenShift 原点有 Ruby on Rails 上游.

得到一个盒子

正如我上面提到的,如果没有 Vagrant 盒子,你不会走得太远。 幸运的是,Vagrantfiles 可以以自动获取盒子的方式编写。 这是因为盒子托管在 Atlas 中,Vagrant 会通过匹配用户名/盒子模式自动从那里下载盒子,或者通过指定

config.vm.box_url

Vagrantfile 中的选项将 URL 设置为框。 正因为如此,新项目的开发者只需安装 Vagrant,检查源代码并附带 Vagrantfile 并运行

流浪起来

. 并不是说他们可以在任何支持的平台(包括各种 Linux、Mac OS 和 Windows)上调用命令。

如果您需要为您的项目选择一个盒子,您可以在 阿特拉斯,这里是官方托管盒子的地方,或者你已经可以尝试即将发布的官方 Fedora Cloud 盒子. 如果您需要特定的东西,您总是可以从头开始构建您的盒子。 为此,您可能会发现 维维 一个有用的工具。

有时,将您的环境建立在一个仅安装基本操作系统的盒子上会更方便,因为它更容易为其他人获得,并且维护只发生在 Vagrantfile 中的配置过程中,但您始终可以创建一个已经配置的盒子并且它是启动速度更快。 为了这,

vagrant package –output mynew.box

命令可能会派上用场,因为它可以根据当前已配置的状态创建一个新框。

在我们最小的 example, Vagrant 期望已经添加了一个名为“fedora-22”的框。 为此,我们可以下载预发布版盒子并添加它(盒子带有 .box 扩展名,但这不是硬性要求):

$ vagrant box add Fedora-Cloud-Base-Vagrant-22-20150521.x86_64.vagrant-libvirt.box --name fedora-22

开发过程

现在我们在项目目录中添加了一个最小的 Vagrantfile 并添加了框,我们真的准备好运行了

流浪起来

启动我们的机器。 一旦完成,我们的项目目录应该可以在我们的 VM 内的 /vagrant 中使用。 这在没有任何配置的情况下发生,因为任何 Vagrantfile 都有一些默认设置。 我们稍后可以更改它或添加其他共享文件夹。 要登录,我们运行

流浪者 ssh

以 vagrant 用户身份登录 sudo 访问(否则

vagrant ssh 配置

向我们展示了我们需要的 IP),我们可以像通常在主机上那样开发项目。

您注意到的一件事是我们的共享文件夹不会自动同步。 Vagrant 仅在启动和运行时使用 rsync 同步它们

流浪者rsync

. 为了避免这种情况,我们可以运行

vagrant rsync-auto

只要命令继续运行,它将自动进行同步。 但是如果你觉得 rsync 有点麻烦,你可以 设置 NFS,这要快得多。

我们的 example 完全简化为 Vagrant 让您创建多机环境,在节点之间设置网络,将端口转发到主机等等。

完成更改后,只需

流浪停止

机器。 你可以随时回来跑步

流浪起来

把它带回来。 如果要删除 VM,请运行

流浪破坏

. 非常简单,并保持您的主机系统清洁。 您可能已经想到,Vagrant VM 几乎是普通的 VM,因此您可以通过 virt-manager 等其他软件来管理它们。 没错,但是 Vagrant 将某些状态与每台机器相关联,因此我建议仅使用 Vagrant 管理它们。 您可以使用 virt-manager 打开图形用户界面或删除域,如果您无法使用 Vagrant 这样做的话。

更多关于流浪者

由于本文无法带您了解有关 Vagrant 的所有内容,因此您可以在此处找到其他资源:

这里有来自 Fedora 社区,其博客可以帮助您在 Vagrant 上启动和运行 Fedora (如果您也写有关 Vagrant 的博客,请在评论中提及您自己):