顯示具有 terraform 標籤的文章。 顯示所有文章
顯示具有 terraform 標籤的文章。 顯示所有文章

星期四, 10月 01, 2015

vagrant 的後繼者 - otto

主要是看入門指南跟摸索後的筆記。
執行 otto compile 以後,會自動依據所在的目錄去猜測是哪種語言開發的,並且產生以下目錄跟檔案:
  • .otto/
  • .ottoid
.ottoid 應該要加入到版本控制系統裡,這檔案如果被刪除可能會出錯;.otto 目錄下則是放產生出來的檔案:
  • appfile 資料夾裡只有  Appfile.compiled 跟 version 兩個檔案,Appfile.compiled 的格式看起來是 json ,我猜是給 otto 使用的。
  • data
    • 只有 dev_ip 檔案,是放開發環境的 IP 資訊,建議不要編輯
  • compiled
    • infra-xxxxx 資料夾裡的檔案是 terraform 的設定檔,建議不要編輯
    • app
      • build
        • build-node.sh 看起來是建置環境用的腳本,裏面會依據你專案類型去安裝必要的套件,例如 nginx、nodejs runtime、python 等等。
        • template.json 是 packer 用的 template 檔案,裏面就呼叫了 build-node.sh 去安裝必要的套件。
      • deploy
        • main.tf 是 terraform 的設定檔
      • dev
        • Vagrantfile 就開發環境用的 Vagrantfile,這裏面 private_network 的 IP 跟 .otto/data/dev_ip 是一樣的。
      • foundation-consul
        • app-build 資料夾裡放的是 upstart.conf (upstart script) 跟 main.sh 。main.sh 裡自動下載並安裝 consul ,然後產生 consul service description 。除了 consul ,也設置了 dnsmasq。
        • app-deploy 資料夾裡只有 main.sh,就簡單的啟動 consul 服務。
        • app-dev 資料夾裡跟 app-build 一樣有兩個檔案,但 main.sh 裡啟動的 consul 服務是 bootstrap server。這邊的檔案會配置到開發環境裡。
        • app-dev-dep 資料夾裡只有 main.sh ,只有產生 consul service description 跟重新載入 consul 服務。
        • deploy 資料夾裡是 terraform 的設定檔,主要檔案是 main.tf,先不多著墨。main.tf 裡用到的變數則是定義在 variables.tf,看起來這裡是要特別設定的地方。
看起來照預設設定是佈署到 Amazon VPC 上。
執 行 otto dev 以後,會開始下載 vagrant box ,這時間有點久,等下載完成會設置開發環境。等到完成以後,使用 otto dev ssh 就可以登入,/otto/foundation-1/ 下可以看到 main.sh ,這些檔案的原始檔是在 .otto/compiled/app/foundation-consul/app-dev 下。
執行你的 web application 以後,開另外一個 terminal,執行 otto dev address 可以看到 IP,接著就可以到瀏覽器輸入 IP:port 看到畫面了。
用 otto infra 就會在 Amazon 上建立 infrastructure。infra 看起來主要是配置 VPC 裡的 gateway、subnet、routing 與資源等等。(目前只支援 AWS)
用 otto build 是會建立 Amazon image ,最後就是用 otto deploy 佈署上去。
在 infra, build, deploy 時,都會問 AWS 的資訊,在問了以後,otto 會存到加密過的檔案裡。如果不想 otto 問這些,也可以預先設置好這些環境變數:AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SSH_PUBLIC_KEY_PATH
一般來說,otto 會自動猜測,使用猜出來的 Appfile,也可以自己手寫 Appfile (完整的 Appfile 說明)。如果有使用到相依的服務,也可以在 Appfile 裡寫 https://ottoproject.io/intro/getting-started/deps.html 。
otto dev destroy 是清除掉開發環境,otto infra destroy 跟 otto deploy destroy 則是清理 Amazon 上的機器。

星期一, 8月 17, 2015

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 或執行自訂的腳本,所以看起來或許適合我現在的情境。
順便記一些連結: