執行 otto compile 以後,會自動依據所在的目錄去猜測是哪種語言開發的,並且產生以下目錄跟檔案:
- .otto/
- .ottoid
- 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,看起來這裡是要特別設定的地方。
- build
執 行 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 上的機器。
2 則留言:
嗨您好
在其它網站看到您PO的文章
冒昧想請教 C語言的問題
不知道可不可以
謝謝 !!
你要問什麼??
張貼留言