terraform + digitalocean

Terraform 對 DigitalOcean provider 的說明文件:

有例子當第一個雛型來抄抄改改還是比較快,所以主要參考資料裡的 example 來改 (要先 clone 下來),下面是我邊做邊記錄下來的步驟:

  1. 產生 ssh key:ssh-keygen -f your_key_file -t rsa
  2. 進 DigitalOcean 帳號裡,新增 ssh key,把剛剛產生的 public key 填入 (就 your_key_file.pub)  ,這邊主要參考 https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets
  3. 到 DigitalOcean 帳號的 API / Tokens 下,去新增 token ,並把 token 複製起來
  4. 用 curl -X GET -H “Content-Type: application/json” -H “Authorization: Bearer <your_token>” “https://api.digitalocean.com/v2/account/keys” 取得剛剛新增的 ssh key 的 key id  ,這個步驟主要參考 https://developers.digitalocean.com/documentation/v2/#list-all-keys
  5. 編輯 main.tf ,修改上個步驟取得的 ssh key id ,並把 connection 裡的 key file 改為步驟 1 所產生的 private key file 。
  6. export DIGITALOCEAN_TOKEN=”your_token”
  7. 執行 terraform plan / apply

參考資料:

OpsWork / Terraform / Vagrant 小感

Vagrant 其實不太能拿來跟 OpsWork 或 Terraform 相比,不過有了 push 之後,算是有個堪用的 deploy 方法…

前一陣子看到 Terraform ,只要寫好腳本(或者該說是計劃),這工具就會自動幫你把環境佈署到雲端,比如說,你有 Web application、Web Server、Database、HAProxy … 等等,在腳本描述好關係之後,Terraform 可以自動幫你佈署到 AWS 、DigitalOcean、CloudStack、Docker、Google cloud 、OpenStack、Heroku … 等地方,非常的方便。但如果要用在內部的環境,可能就沒辦法 (除非內部自架了 CloudStack 或 OpenStack)。

OpsWorks 是在 DevOps gitter 裡看到的,Google 了一下,這是 Amazon 提供的服務,做的事情其實跟 Terraform 蠻相近的,跟 Amazon 的服務整合度更高。我是還沒試用過,不知道好不好用。

Vagrant 本身是操作虛擬機器的好幫手,在 Google Altas 時,看到 Vagrant 有提供 push 這子指令,這可以用來做 deploy 。比如說,你在 Vagrantfile 裡描述了 Web application server、Web Server、Database server … 等等,在本地端可以用 vagrant up  啟動,進行驗證,那要實際佈署到遠端時,就可以用 push 來做。push 的對象(或者該說是方式?)可以是 Altas、FTP/SFTP、Heroku 或執行自訂的腳本,所以看起來或許適合我現在的情境。

順便記一些連結: