---
author: ''
category: 技术
comments_data:
- date: '2014-09-03 18:03:00'
  message: 水滴
  postip: 60.29.248.92
  username: 微博评论
- date: '2014-09-03 20:03:03'
  message: 不知道数据储存损坏的概率如何
  postip: 58.23.18.73
  username: 微博评论
- date: '2014-09-03 20:33:05'
  message: Repost
  postip: 42.156.137.59
  username: 微博评论
- date: '2014-09-20 18:22:20'
  message: 现在好像没有arch了，而且ssh连接也会出错
  postip: 182.18.32.90
  username: ''
count:
  commentnum: 4
  favtimes: 0
  likes: 0
  sharetimes: 3
  viewnum: 14069
date: '2014-09-03 17:38:00'
editorchoice: false
excerpt: DigitalOcean是云VPS主机市场中最炙手可热的新生儿。虽然没有提供像Amazon之类一样的综合服务业务，但DigitalOcean定位于中小型企业和开发者，已经成为基于Linux的最佳云VPS服务的强有力竞争者，这都得归功于它们具有竞争力的价格和用户友好的管理界面。
fromurl: http://xmodulo.com/2014/07/manage-digitalocean-vps-droplets-command-line-linux.html
id: 3744
islctt: true
largepic: /images/p/201409/03/173829c4rrbfahhibahpwn.jpg
permalink: /article-3744-1.html
pic: /images/p/201409/03/173829c4rrbfahhibahpwn.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: DigitalOcean是云VPS主机市场中最炙手可热的新生儿。虽然没有提供像Amazon之类一样的综合服务业务，但DigitalOcean定位于中小型企业和开发者，已经成为基于Linux的最佳云VPS服务的强有力竞争者，这都得归功于它们具有竞争力的价格和用户友好的管理界面。
tags:
- 命令
- Linux
thumb: false
title: 使用Linux命令行管理DigitalOcean VPS水滴
titlepic: false
translator: GOLinux
updated: '2014-09-03 17:38:00'
---

[DigitalOcean](http://xmodulo.com/go/digitalocean)是云VPS主机市场中最炙手可热的新生儿。虽然没有提供像Amazon之类一样的综合服务业务，但DigitalOcean定位于中小型企业和开发者，已经成为基于Linux的最佳云VPS服务的强有力竞争者，这都得归功于它们具有竞争力的价格和用户友好的管理界面。


[![](https://camo.githubusercontent.com/8dfe323ab3bd63de9909fdc59fbdb303a7c1fab2/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333834312f31343530313632373530305f326566323735616331635f7a2e6a7067)](https://camo.githubusercontent.com/8dfe323ab3bd63de9909fdc59fbdb303a7c1fab2/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333834312f31343530313632373530305f326566323735616331635f7a2e6a7067)


不管什么时候，当你需要一个面向网络的服务器用于你的个人项目，你都可以全速开动一个“水滴”（[DigitalOcean](http://xmodulo.com/go/digitalocean)中VPS实例的昵称），也可以在你不需要时杀掉它，没必要为了让你的VPS保持运作而烧光了你的钱袋。尽管DigitalOcean基于网络的管理界面已经十分高效，但对于那些命令行界面的死忠派，它还是提供了基于命令行界面的水滴管理工具，它叫[tugboat](https://github.com/pearkes/tugboat)。多亏了这个命令行工具，所有复杂的水滴管理任务都可以简单地转变成一个脚本来完成。


在本文中，我打算讲述**怎样使用tugboat来从命令行对DigitalOcean水滴进行管理**。


### 在Linux上安装tugboat


在Debian，Ubuntu或者Linux Mint上安装tugboat：



```
$ sudo apt-get install ruby-dev
$ sudo gem install tugboat 

```

在Fedora上安装tugboat：



```
$ sudo yum install ruby-devel
$ sudo gem install tugboat 

```

要在CentOS上安装tugboat，首先[安装或升级到最新的Ruby](http://ask.xmodulo.com/upgrade-ruby-centos.html)，因为在CentOS 6.5以及更早的版本上，默认的Ruby不满足Tugboat所需的最小版本（1.9及更高版本）。安装Ruby 1.9及更高版本后，请按如下方式安装tugboat。



```
$ sudo gem install tugboat 

```

### tugboat首次使用配置


在安装完后，就该进行一次配置，其中包括授权tugboat访问DigitalOcean帐号。


转到<https://cloud.digitalocean.com/api_access>，并创建新的API密钥，记录客户ID和API密钥。


[![](https://camo.githubusercontent.com/9d49bd5c554296237e97ed313f70a1c3b58d9173/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333833362f31343638383239393231355f666432383261303134325f7a2e6a7067)](https://camo.githubusercontent.com/9d49bd5c554296237e97ed313f70a1c3b58d9173/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333833362f31343638383239393231355f666432383261303134325f7a2e6a7067)


通过运行以下命令来启动授权过程：



```
$ tugboat authorize 

```

在提示你输入客户ID和API密钥时，请输入。它会询问几个其它问题，目前你可以接受默认的回答。我们将会在后面自定义默认设置。


[![](https://camo.githubusercontent.com/b3b1ce86ffda386af6766df4144292a37b581f7e/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353539362f31343638353132323130315f646261353066633836625f7a2e6a7067)](https://www.flickr.com/photos/xmodulo/14685122101/)


现在，让我们自定义默认水滴设置，以反映你典型的使用状况。要做到这一点，首先检查水滴提供的可用设置项（如，可用的镜像、区域、大小）。


运行以下命令，它会列出可用的水滴镜像。选取使用一个默认镜像，并记录相关的ID。



```
$ tugboat images --global 

```

[![](https://camo.githubusercontent.com/2478dee018a4e938ff91aae9bc5284dc001878aa/68747470733a2f2f6661726d332e737461746963666c69636b722e636f6d2f323930302f31343638383239393137355f653737653734666131655f7a2e6a7067)](https://camo.githubusercontent.com/2478dee018a4e938ff91aae9bc5284dc001878aa/68747470733a2f2f6661726d332e737461746963666c69636b722e636f6d2f323930302f31343638383239393137355f653737653734666131655f7a2e6a7067)


类似，从可用区域中选取一个默认的地理位置：



```
$ tugboat regions

```

同时，从可用的RAM大小中选择一个默认的水滴大小：



```
$ tugboat sizes 

```

[![](https://camo.githubusercontent.com/3fdc0a4378973b04c89e499e3b30f22bd470439e/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333835382f31343530313636313233385f343330346538626466625f6f2e706e67)](https://camo.githubusercontent.com/3fdc0a4378973b04c89e499e3b30f22bd470439e/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333835382f31343530313636313233385f343330346538626466625f6f2e706e67)


现在，把你的默认选择放到~/.tugboat中。例如，我在这里自定义了默认设置：区域在纽约，系统是Ubuntu 14.04，内存512MB。如果你想要通过密钥验证启用SSH，设置“ssh\_user”为root，这个我很快会讲到。



```
$ vi ~/.tugboat 

```



---



```
---
authentication:
  client_key: XXXXXXXXXXXXXXXXXXX
  api_key: XXXXXXXXXXXXXXXXXXXX
ssh:
  ssh_user: root
  ssh_key_path: /home/dev/.ssh/id_rsa
  ssh_port: '22'
defaults:
  region: '4'
  image: '3240036'
  size: '66'
  ssh_key: ''
  private_networking: 'false'
  backups_enabled: 'false'

```

### 创建并添加SSH密钥到DigitalOcean


要访问水滴实例，一个安全的方式是通过[密钥验证](http://xmodulo.com/2012/04/how-to-enable-ssh-login-without.html)的SSH连接到该实例。


事实上，你可以通过使用[DigitalOcean](http://xmodulo.com/go/digitalocean)来注册SSH公钥，为你的水滴实现自动启用密钥验证。下面告诉你怎么做。


首先，生成一个公/私密钥对（如果你还没有）。



```
$ ssh-keygen -t rsa -C "your@emailaddress.com"

```

假设生成的密钥对由~/.ssh/id\_rsa（私钥）和~/.ssh/id\_rsa.pub（公钥）构成，去将你的公钥上传吧，命令如下：



```
$ tugboat add-key [name-of-your-key] 

```

你可以任意给你的密钥命名（如，“my-default-key”）。当出现提示时，输入公钥路径（如，/home/user/.ssh/id\_rsa.pub）。在密钥上传完成后，运行以下命令来验证密钥是否正确添加：



```
$ tugboat keys 

```

[![](https://camo.githubusercontent.com/83220ff178dff29fb42ff5782bcf336be23b80bd/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836392f31343530313835333339375f336433663433363562315f7a2e6a7067)](https://camo.githubusercontent.com/83220ff178dff29fb42ff5782bcf336be23b80bd/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836392f31343530313835333339375f336433663433363562315f7a2e6a7067)


密钥也应该出现在DigitalOcean的[SSH密钥页](https://cloud.digitalocean.com/ssh_keys)。如果你想要密钥自动使用到水滴中，添加密钥ID到~/.tugboat中。



```
ssh_key: '182710'

```

### Tugboat的基本用法


这里列出了tugboat命令行的一些基本使用情况。


1. 使用默认设置创建新水滴。



```
$ tugboat create
```
2. 列出所有活动水滴。



```
$ tugboat droplets
```
3. 显示水滴的信息。



```
$ tugboat info
```


[![](https://camo.githubusercontent.com/072f24ab8b997de2a447ccbcad0a7d1dbeb881dd/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353539332f31343530313632373434305f353833353530366432615f7a2e6a7067)](https://www.flickr.com/photos/xmodulo/14501627440/)


1. 关闭水滴，并移除镜像。



```
$ tugboat destroy
```
2. 关闭水滴，但保持镜像



```
$ tugboat halt
```
3. 为水滴创建快照，水滴必须先关闭。



```
$ tugboat snapshot
```
4. 调整水滴大小（增加或减少RAM大小），水滴必须先关闭。



```
$ tugboat resize -s
```


 如果你想要了解特定命令的更多选项，运行：



```
$ tugboat help <command> 

```

[![](https://camo.githubusercontent.com/c09480574cc9ce3fa84740423f2d52e279f365b4/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333930302f31343638383031333332325f346661363038306335655f7a2e6a7067)](https://camo.githubusercontent.com/c09480574cc9ce3fa84740423f2d52e279f365b4/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333930302f31343638383031333332325f346661363038306335655f7a2e6a7067)


### 排障


1. 当我运行tugboat命令时，它出现以下错误。



```
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': /usr/lib/ruby/gems/1.8/gems/tugboat-0.2.0/lib/tugboat/cli.rb:12: syntax error, unexpected ':', expecting kEND (SyntaxError)
```

Tugboat要求Ruby 1.9及更高版本，你需要升级Ruby来解决该问题。对于CentOS，请参考[此教程](http://ask.xmodulo.com/upgrade-ruby-centos.html)
2. 当我试着用gem来安装Tugboat时，出现了下面的错误。



```
/usr/local/share/ruby/site_ruby/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- json/pure (LoadError)
```


 安装以下gem来修复该问题。



```
$ sudo gem install json_pure 

```



---


via: <http://xmodulo.com/2014/07/manage-digitalocean-vps-droplets-command-line-linux.html>


原文作者：[Dan Nanni](http://xmodulo.com/author/nanni)


译者：[GOLinux](https://github.com/GOLinux) 校对：[Caroline](https://github.com/carolinewuyan)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出