hashicorpのottoを触ってみた① ~ローカル環境構築
hashicorpのottoを触ってみたのでメモ
ottoは開発しているアプリケーションの内容を解釈して、自動的に開発環境を作成してくれるツールです。 例えば、goのプロジェクトを作成していた場合にはgoに必要な環境をinstallした状態の開発環境を作成します。 その流れを書いていきます。
ottoのインストール
ottoのインストールはhttps://ottoproject.io/downloads.html ここから適したバイナリファイルを落とすだけです。 落としたバイナリはそのままだと実行できないので /usr/local/bin 等に移動させるなどしてPATHを通しましょう。
ottoのappfileの作成
環境を作りたいプロジェクトのrootで
otto compile
これを実行すると
.otto .ottoid
が作成されます。
.ottoの中を見ていくと .otto/appfile/ にAppfile.compiledというファイルがあります
その中身を開くと
{ "File": { "ID": "1b090cd9-75e2-a4d1-22fa-658f945d2ae5", "Path": "/Users/hoge/_go/src/hoge/Appfile", "Source": "", "Application": { "Name": "hoge", "Type": "go", "Dependencies": null }, "Project": { "Name": "hoge", "Infrastructure": "hoge" }, "Infrastructure": [ { "Name": "hoge", "Type": "aws", "Flavor": "simple", "Foundations": [ { "Name": "consul", "Config": null } ] } ], "Customization": null, "Imports": null }, "Vertices": [ { "File": { "ID": "1b090cd9-75e2-a4d1-22fa-658f945d2ae5", "Path": "/Users/hoge/_go/src/hoge/Appfile", "Source": "", "Application": { "Name": "hoge", "Type": "go", "Dependencies": null }, "Project": { "Name": "hoge", "Infrastructure": "hoge" }, "Infrastructure": [ { "Name": "hoge", "Type": "aws", "Flavor": "simple", "Foundations": [ { "Name": "consul", "Config": null } ] } ], "Customization": null, "Imports": null }, "Dir": "", "NameValue": "hoge" } ], "Edges": [] }
のようになっていて、otto compile
した結果このプロジェクトはgoを使っていると判断してるみたいです。
その後
otto dev
を叩くと、virtual boxに開発環境を作成してくれます。
実行内容を見てみると
==> default: [otto] Downloading Go 1.5... ==> default: [otto] Untarring Go... ==> default: [otto] Making GOPATH...
なにかしらgo の環境を整えているのが見られます。
otto dev ssh
として構築した環境にsshでつなぎ
vagrant@precise64:/opt/gopath/src/hoge $ go version go version go1.5 linux/amd64
goがインストールされてます。
このようにottoはプロジェクトの構成を解析してそれに適した環境を自動的に作成してくれます。
次回はAppfileや本番環境構築らへんについて書いていけたらなと思います。