インフラストラクチャ

前のステップでは、開発環境の立ち上げを、設定ファイルを使わずに、いくつかの簡単なコマンドで行いました。今度はアプリケーションをデプロイしましょう。

アプリケーションのデプロイに、Otto は3つのステップを踏みます:インフラを開始し、アプリケーションを構築してから、アプリケーションを起動します。この導入ガイドでは3つのステップを別々のページで扱います。

導入ガイドでは有名かつ一般的に知られている AWS にアプリケーションのデプロイを行いますが、Otto は多くの異なったプロバイダにデプロイできます。

AWS アカウントを持っていなければ、新しいものを作成してください 。導入ガイドでは、AWS 無料利用枠 (free-tier)の範囲内のリソースしか使いません。つまり、無料です。既に AWS アカウントを持っている場合、メモリの量によって少し課金があるかもしれませんが、多くても数ドル程度です。

Warning

AWS 無償利用枠が適用されていないアカウントの下では、これらの例を実行するにあたり課金される可能性があります。多くの場合、数ドル程度の課金がされるでしょうが、あらゆる課金に対して私達は責任を持ちません。

インフラストラクチャとは

アプリケーションをデプロイする前に必要なステップは、デプロイするためのインフラ構築です。Otto 内部の “infrastructure” (以下、インフラストラクチャ)は、対象のクラウド・プラットフォームとアプリケーションの実行に必要な最小リソースを参照します。

AWS を例に挙げると、Otto は VPC、サブネット、適切なルーティング・テーブル等を作成します。もし、これらの技術に慣れていなくても大丈夫です! それこそが Otto の重要の点です。Otto がベスト・プラクティスのインフラストラクチャを形成するので、初日からそれらの内容を知る必要がありません。

各プラットフォームごとに、Otto は複数の “flavor”(フレーバー)を知っています。これら flavor のターゲットは目標やユーザによって異なります。AWS の例では、2組の flavor は “simple” と “vpc-public-private” です。”simple” flavor は最小数のリソースを使い、単純化と費用のために冗長性と障害耐性を犠牲にします。しかし “vpc-public-private” は自動的にプライベート・ネットワーク、拠点ホスト(訳注;bastion host = ステップサーバのこと)、NAT インスタンス等を構築します。そして、これは実際に長期に渡りスケールするインフラです。

Otto は AWS の “simple” flavor をデフォルトとしますので、この導入ガイドではこの flavor を使います。infrastructure と flavor に関してはドキュメントをご覧ください。

起動

インフラストラクチャを起動するには otto infura を実行します。

このステップでは Terraform のインストール許可を尋ねるかもしれません。Otto は インフラの構築と管理をカバーするのに Terraform を使います。Otto は Terraform をインストールします。既に Terraform の最新版がインストールされていれば、尋ねられません。

Terraform をインストールしたら、Otto は AWS アクセス認証情報(credential)を尋ねてきます。こちらのページ から確認できます。

次に Otto はインフラストラクチャの構築を始めます。これには数分かかります。この間、非常に詳細な出力を参照できます。Otto が多くのクラウド・リソースを作成しているのが見えるでしょう。

$ otto infra
...

==> Building main infrastructure...
==> Executing Terraform to manage infrastructure...
    Raw Terraform output will begin streaming in below. Otto
    does not create this output. It is mirrored directly from
    Terraform while the infrastructure is being created.

    Terraform may ask for input. For infrastructure provider
    credentials, be sure to enter the same credentials
    consistently within the same Otto environment.

aws_vpc.main: Creating...
  cidr_block:                "" => "10.0.0.0/16"
  default_network_acl_id:    "" => "<computed>"
  default_security_group_id: "" => "<computed>"
  dhcp_options_id:           "" => "<computed>"
  enable_dns_hostnames:      "" => "1"
  enable_dns_support:        "" => "1"
  main_route_table_id:       "" => "<computed>"
  tags.#:                    "" => "1"
  tags.Name:                 "" => "otto"
aws_vpc.main: Creation complete
aws_internet_gateway.public: Creating...
  vpc_id: "" => "vpc-ac8f5ac8"

...

先に取り上げたインフラストラクチャ flavor により、どのような種類のリソースがどれだけ作成されるのか異なります。”vpc-public-private” のような flavor の場合、infra の初回実行時は数分かかります。

おめでとうございます! アプリケーションをデプロイするために、最低限必要なインフラストラクチャを起動しました。

もしこれまで AWS を使っていない場合や、自分自身で操作するつもりがなくても、Otto は業界のベスト・プラクティスを使い、単純なアプリケーションの起動と強固なインフラストラクチャを設定します。

状態

インフラストラクチャの状態は、いつでも otto status で見られます:

$ otto status
==> App Info
    Application:    otto-getting-started (ruby)
    Project:        otto-getting-started
    Infrastructure: aws (simple)
==> Component Status
    Dev environment: CREATED
    Infra:           READY
    Build:           NOT BUILT
    Deploy:          NOT DEPLOYED

“infra” が “READY” に見えるでしょう。ステップは完了です。

インフラストラクチャの準備が整っても、otto infra を複数回実行できます。Otto は存在しないリソースのみ作成します。

次へ

このステップでは、Otto を簡単に使う方法を学びました。Otto で初めてコンパイルする経験と、設定ファイルが無くても(zero configuration) いかに Otto が動作するかを見ました。この時点では開発のみ扱っていますが、Otto の力を感じ始めてもらえると嬉しく思います。

次に、まずインフラを構築することから、このアプリケーションをデプロイするプロセスを始めましょう。

このステップでは、Otto がどのようにインフラストラクチャを管理し、アプリケーションをデプロイ出来る簡単なインフラストラクチャの構築を学びました。

Otto の目標は、趣味またはプロフェッショナルにおけるプロダクション品質のインフラストラクチャを実際に構築することです。Otto 単一のコマンドにより、業界のベスト・プラクティスを形成します。

次は、デプロイのためにアプリケーションを構築します。