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や本番環境構築らへんについて書いていけたらなと思います。