BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AtlasのワークフローとVagrant Push

AtlasのワークフローとVagrant Push

原文(投稿日:2014/12/24)へのリンク

AtlasHashicorp新しいプロダクトだ。VagrantやPacker, Terraform, Consulといった,同社が長年に渡ってリリースしてきたオープンソースツールのスイートを活用して,開発から製品化へと流れるアプリケーションのワークフローの統合を目標とする。

Atlasでは,大きく5つのステージからなるアプリケーションデリバリワークフローをモデル化している。

Atlasワークフローの5ステージ

開発者はVagrantを使って,アプリケーションのコードをPackerプッシュする。Packerはそれを元に,ひとつのアーティファクト(完全に構成されたマシンイメージ)を構築する。生成されたアーティファクトは,Atlasのアーティファクトレジストリにストアされる。その後はTerraformが,アーティファクトをAmazon Web Serviceのようなプロバイダにデプロイする。TerraformとConsulがサービスをローンチし,その状態を監視すると同時に,自動スケーリングと自動回復を実現する。

Atlasには,これら5つのステージを視覚化するダッシュボードが用意されている。その内容はDevelopment,Operation,Runtimeという,主に3つのエリアに分かれている。

AtlasはVagrant Cloudの代替であり,Developmentエリアはその大部分を引き継ぐものだ。実行中のVagrant環境をインターネット経由で共有するVagrant Shareの管理や,自分のVagrant Boxをリストアップできる。アプリケーションを登録しておいて,後でデプロイしたマシンイメージに組み込むことも可能だ。

Operationは"ビルドコンフィギュレーション"へのアクセスを提供する。ビルドコンフィギュレーションは,登録されているアプリケーションのコードと,アーティファクト生成のさまざまなステップを記述したPackerテンプレートを組み合わせたものだ。

RuntimeエリアにはTerraformのステートが含まれている。これは,インフラストラクチャの望ましい状態を記述したものだ。そのインフラストラクチャを構成するビルドコンフィギュレーションによって生成されたアーティファクトも,このエリアに含まれる。

アーティファクトのビルドログを示すAtlasのダッシュボード

Atlasの特徴のひとつに,不変(immutable)なインフラストラクチャを重視している点がある。Atlasは,運用マシンのイメージ全体,Atlasのアーティファクトレジストリ内のアーティファクトをデプロイする,という原則に基づいて動作する。一度デプロイされたイメージが変更されることはない。変更を要する場合には,新たなイメージに置き換えるのだ。Hashicorpは道(Tao),すなわち,同社の全製品の背景にある哲学の理解に役立つガイドラインを公開している。

Atlasのドキュメントには,簡単な導入資料(getting started)が提供されていて,白紙状態のスレートから,完全に機能するAWSホストの“Hello World”サイトまで,簡単なワークフローのイテレーションをガイドしてくれる。ワークフローの全ステップの実行を含む一通りの操作を実施するには,およそ1時間が必要だ。

Atlasはまだ無償の技術プレビューであるため,いくつかの機能が不足している。例えば,ローンチモニタのステージは,現在はまだ見ることができない。Hashicorpでは,2015年の初めには,主要な機能をすべて完成させて,有償での運用を開始したいと考えている。

Vagrant Push

vagrant pushはVagrant 1.7の新機能である。Atlasのワークフローには重要なものだが,それ単独でも使用することができる。“vagrant up”がアプリケーション開発環境を構築するのと同じように,“vagrant push”は,さまざまな方法でアプリケーションをデプロイする。Atlas以外にもVagrant 1.7では,FTP/SFTP, Heroku, ローカル実行(Local Exec)の3つの方法が選択できる。

vagrant pushは他の機能と同様,Vagrantfileで設定を行う。FTPを使用するには,次のように指定する。

config.push.define "ftp" do |push|
  push.host = "ftp.company.com"
  push.username = "username"
  push.password = "mypassword"
end

"vagrant push"を実行すると,Vagrantfileを含むディレクトリのすべてのコンテントが,"ftp.company.com"にアップロードされる。

この記事に星をつける

おすすめ度
スタイル

BT