如何在Ubuntu12.10VPS上使用DigitalOcean作为Vagrant中的提供者

来自菜鸟教程
跳转至:导航、​搜索

关于流浪者

Vagrant 是一款功能强大的开源软件,用于配置和部署多个开发环境。 它旨在在 Linux、Mac OS X 或 Windows 上运行,尽管它带有 VirtualBox 以满足虚拟化需求,但它也可以与其他提供商一起使用,例如 VMware 或 AWS。

在本教程中,我们将设置 Vagrant 以使用 DigitalOcean 作为提供者。 这意味着您将能够使用 DO droplets (VPS) 作为开发机器从 Vagrant 进行部署。 本教程假设您已经在您的环境中安装了 Vagrant,建议您参考之前的两篇关于 Vagrant 的文章:

  1. 如何在运行 Ubuntu 12.04 的 VPS 上安装 Vagrant
  2. 如何在你自己的运行 Ubuntu 的 VPS 上使用 Vagrant

安装 DigitalOcean: Vagrant 集成插件

要安装插件,您必须执行两个快速步骤。 首先,运行安装插件的命令:

vagrant plugin install vagrant-digitalocean

接下来是添加新盒子到 Vagrant 的命令(还记得之前文章中的盒子是什么吗?):

vagrant box add digital_ocean https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box

配置项目以使用此提供程序运行

为了使用这个插件,你需要某种形式让 Vagrant 与 DigitalOcean 通信。 这就是 API 存在的原因,也是您现在必须登录 DigitalOcean 帐户并生成新的 API 密钥以进行身份验证的原因。 导航到 https://www.digitalocean.com/api_access 并单击 Create 以生成新的 API 密钥。 您将在配置中使用它以及上面显示的客户端 ID。

现在您已经安装了插件,添加了 DO 特定框,并且您已准备好 API 密钥。 让我们创建一个将使用它们的项目。 在之前的文章中,我们一直在使用一个项目来说明 Vagrant 如何使用其默认提供程序:VirtualBox。 现在让我们为 DigitalOcean 云服务器创建另一个项目。 为它创建一个根目录(在上一个项目文件夹之外)并在其中导航:

mkdir test_project2
cd test_project2

接下来,运行初始化命令:

vagrant init

这将创建所需的 Vagrantfile。

在我们编辑此文件之前,让我们创建使用 DigitalOcean 进行身份验证所需的 SSH 密钥。 运行以下命令以生成 SSH 密钥对:

ssh-keygen -t rsa

您可以按回车键接受默认值。 这会将 SSH 私钥和公钥放置到我们将在下面的 Vagrantfile 配置中指定的路径中。 有关生成 SSH 密钥的更多信息,请查看 本教程 。 现在让我们编辑 Vagrantfile 并配置它:

nano Vagrantfile

找到以下行:

config.vm.box = "base"

并将其替换为:

config.vm.box = "digital_ocean"

在其下方,添加以下行:

config.ssh.private_key_path = "~/.ssh/id_rsa"
config.vm.provider :digital_ocean do |provider|
    provider.client_id = "YOUR CLIENT ID"
    provider.api_key = "YOUR API KEY"
    provider.image = "Ubuntu 12.10 x64"
    provider.region = "New York 2"
  end

在第一行中,您指定了 SSH 私钥文件的路径。 这意味着提供商将使用您的公钥创建一个新的 DigitalOcean SSH 密钥,该公钥位于该路径中,扩展名为 .pub(您之前创建的那个)。 接下来的两行用于 DO API,因此请确保在需要的地方替换为您的客户端 ID 和 API 密钥。 使用该图像,您可以指定要部署的云服务器类型,而您可以使用区域选择您希望在其中创建 Droplet 的 DigitalOcean 数据中心。 要查看可用选项,请查看 DO droplet 创建页面

您可以在 vm.provider 块中添加一些其他设置:

  • provider.size:表示创建新 VPS 时要使用的大小的字符串(例如 1GB)。 目前,它默认为 512MB。
  • provider.ssh_key_name:一个字符串,表示创建用于 VPS 身份验证的 DigitalOcean SSH 密钥时要使用的名称。 它默认为流浪者。

保存文件并退出。 现在您可以运行 vagrant up 命令指定 DigitalOcean 提供程序来部署您的新 VPS:

vagrant up --provider=digital_ocean

如果您收到以下错误:

The secure connection to the DigitalOcean API has failed. Please
ensure that your local certificates directory is defined in the
provider config.

    config.vm.provider :digital_ocean do |vm|
      vm.ca_path = "/path/to/ssl/ca/cert.crt"
    end

This is generally caused by the OpenSSL configuration associated
with the Ruby install being unaware of the system specific ca
certs.

这意味着您缺少与 DigitalOcean 通信所需的根证书。 要修复它,请打开 .bashrc 文件:

nano ~/.bashrc

并在底部添加以下行:

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

保存文件并退出。 再次打开 Vagrantfile 并在您指定区域的那一行下方添加以下行(顺序不是那么重要,但它必须是 vm.provider 块的一部分):

provider.ca_path = "/etc/ssl/certs/ca-certificates.crt"

保存文件并退出。 现在再次尝试部署 VPS:

vagrant up --provider=digital_ocean

现在应该在您的帐户中,在指定区域并使用您想要的图像创建一个液滴。 您可以在您的 DO 帐户中查看。 您基本上可以像使用 VirtualBox 客户机一样使用它。

支持的命令

提供程序支持以下 Vagrant 子命令:

  • vagrant destroy:销毁 droplet 实例。
  • vagrant ssh:使用配置的用户帐户登录到 droplet 实例。
  • vagrant halt:关闭液滴实例的电源。
  • vagrant provision:运行配置的provisioners并rsyncs任何指定的config.vm.synced_folder。
  • vagrant reload:重新启动 droplet 实例。
  • vagrant rebuild:销毁 droplet 实例并使用之前分配的相同 IP 地址重新创建它。
  • vagrant status:输出液滴实例的状态(活动、关闭、未创建)。

非常感谢 Shawn Dahlen 创建了 这个插件

流浪者——第 1 条

流浪者——第 2 条

流浪者——第 3 条

文章提交者:Danny