使用Linux命令行管理DigitalOcean VPS水滴
DigitalOcean是云VPS主機(jī)市場中最炙手可熱的新生兒。雖然沒有提供像Amazon之類一樣的綜合服務(wù)業(yè)務(wù),但DigitalOcean定位于中小型企業(yè)和開發(fā)者,已經(jīng)成為基于Linux的最佳云VPS服務(wù)的強(qiáng)有力競爭者,這都得歸功于它們具有競爭力的價(jià)格和用戶友好的管理界面。
不管什么時(shí)候,當(dāng)你需要一個(gè)面向網(wǎng)絡(luò)的服務(wù)器用于你的個(gè)人項(xiàng)目,你都可以全速開動(dòng)一個(gè)“水滴”(DigitalOcean中VPS實(shí)例的昵稱),也可以在你不需要時(shí)殺掉它,沒必要為了讓你的VPS保持運(yùn)作而燒光了你的錢袋。盡管DigitalOcean基于網(wǎng)絡(luò)的管理界面已經(jīng)十分高效,但對于那些命令行界面的死忠派,它還是提供了基于命令行界面的水滴管理工具,它叫tugboat。多虧了這個(gè)命令行工具,所有復(fù)雜的水滴管理任務(wù)都可以簡單地轉(zhuǎn)變成一個(gè)腳本來完成。
在本文中,我打算講述怎樣使用tugboat來從命令行對DigitalOcean水滴進(jìn)行管理。
在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,因?yàn)樵贑entOS 6.5以及更早的版本上,默認(rèn)的Ruby不滿足Tugboat所需的最小版本(1.9及更高版本)。安裝Ruby 1.9及更高版本后,請按如下方式安裝tugboat。
- $ sudo gem install tugboat
tugboat首次使用配置
在安裝完后,就該進(jìn)行一次配置,其中包括授權(quán)tugboat訪問DigitalOcean帳號。
轉(zhuǎn)到https://cloud.digitalocean.com/api_access,并創(chuàng)建新的API密鑰,記錄客戶ID和API密鑰。
通過運(yùn)行以下命令來啟動(dòng)授權(quán)過程:
- $ tugboat authorize
在提示你輸入客戶ID和API密鑰時(shí),請輸入。它會(huì)詢問幾個(gè)其它問題,目前你可以接受默認(rèn)的回答。我們將會(huì)在后面自定義默認(rèn)設(shè)置。
現(xiàn)在,讓我們自定義默認(rèn)水滴設(shè)置,以反映你典型的使用狀況。要做到這一點(diǎn),首先檢查水滴提供的可用設(shè)置項(xiàng)(如,可用的鏡像、區(qū)域、大小)。
運(yùn)行以下命令,它會(huì)列出可用的水滴鏡像。選取使用一個(gè)默認(rèn)鏡像,并記錄相關(guān)的ID。
- $ tugboat images --global
類似,從可用區(qū)域中選取一個(gè)默認(rèn)的地理位置:
- $ tugboat regions
同時(shí),從可用的RAM大小中選擇一個(gè)默認(rèn)的水滴大小:
- $ tugboat sizes
現(xiàn)在,把你的默認(rèn)選擇放到~/.tugboat中。例如,我在這里自定義了默認(rèn)設(shè)置:區(qū)域在紐約,系統(tǒng)是Ubuntu 14.04,內(nèi)存512MB。如果你想要通過密鑰驗(yàn)證啟用SSH,設(shè)置“ssh_user”為root,這個(gè)我很快會(huì)講到。
- $ 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'
創(chuàng)建并添加SSH密鑰到DigitalOcean
要訪問水滴實(shí)例,一個(gè)安全的方式是通過密鑰驗(yàn)證的SSH連接到該實(shí)例。
事實(shí)上,你可以通過使用DigitalOcean來注冊SSH公鑰,為你的水滴實(shí)現(xiàn)自動(dòng)啟用密鑰驗(yàn)證。下面告訴你怎么做。
首先,生成一個(gè)公/私密鑰對(如果你還沒有)。
- $ ssh-keygen -t rsa -C "your@emailaddress.com"
假設(shè)生成的密鑰對由~/.ssh/id_rsa(私鑰)和~/.ssh/id_rsa.pub(公鑰)構(gòu)成,去將你的公鑰上傳吧,命令如下:
- $ tugboat add-key [name-of-your-key]
你可以任意給你的密鑰命名(如,“my-default-key”)。當(dāng)出現(xiàn)提示時(shí),輸入公鑰路徑(如,/home/user/.ssh/id_rsa.pub)。在密鑰上傳完成后,運(yùn)行以下命令來驗(yàn)證密鑰是否正確添加:
- $ tugboat keys
密鑰也應(yīng)該出現(xiàn)在DigitalOcean的SSH密鑰頁。如果你想要密鑰自動(dòng)使用到水滴中,添加密鑰ID到~/.tugboat中。
- ssh_key: '182710'
Tugboat的基本用法
這里列出了tugboat命令行的一些基本使用情況。
-
使用默認(rèn)設(shè)置創(chuàng)建新水滴。
- $ tugboat create
-
列出所有活動(dòng)水滴。
- $ tugboat droplets
-
顯示水滴的信息。
- $ tugboat info
-
關(guān)閉水滴,并移除鏡像。
- $ tugboat destroy
-
關(guān)閉水滴,但保持鏡像
- $ tugboat halt
-
為水滴創(chuàng)建快照,水滴必須先關(guān)閉。
- $ tugboat snapshot
-
調(diào)整水滴大小(增加或減少RAM大小),水滴必須先關(guān)閉。
- $ tugboat resize -s
如果你想要了解特定命令的更多選項(xiàng),運(yùn)行:
- $ tugboat help <command>
排障
-
當(dāng)我運(yùn)行tugboat命令時(shí),它出現(xiàn)以下錯(cuò)誤。
- /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,請參考此教程
-
當(dāng)我試著用gem來安裝Tugboat時(shí),出現(xiàn)了下面的錯(cuò)誤。
- /usr/local/share/ruby/site_ruby/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- json/pure (LoadError)
安裝以下gem來修復(fù)該問題。
- $ sudo gem install json_pure