如何在Ubuntu12.10VPS上使用DigitalOcean作为Vagrant中的提供者
关于流浪者
Vagrant 是一款功能强大的开源软件,用于配置和部署多个开发环境。 它旨在在 Linux、Mac OS X 或 Windows 上运行,尽管它带有 VirtualBox 以满足虚拟化需求,但它也可以与其他提供商一起使用,例如 VMware 或 AWS。
在本教程中,我们将设置 Vagrant 以使用 DigitalOcean 作为提供者。 这意味着您将能够使用 DO droplets (VPS) 作为开发机器从 Vagrant 进行部署。 本教程假设您已经在您的环境中安装了 Vagrant,建议您参考之前的两篇关于 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 创建了 这个插件 。
流浪者——第 3 条