DigitalOceanでRiggerを使用してDeisをデプロイする

http://deis.io [Deis]の記事

前書き

DeisはオープンソースのプライベートPlatform as a Service(PaaS)であり、独自のサーバーへのアプリケーションのデプロイと管理を簡素化します。 DockerやCoreOSなどのテクノロジーを活用することにより、Deisは、選択したホスティングプロバイダーで、Herokuに類似したワークフローとスケーリング機能を提供します。 DeisはDockerコンテナで実行できるアプリケーションをサポートし、DeisはCoreOSをサポートする任意のプラットフォームで実行できます。

このガイドでは、DeisプロジェクトのRiggerという新しいツールを使用して、新しく改善されたDeisプロビジョニングプロセスを順を追って説明します。

プレビュー

時間があまりない場合は、この加速化されたhttps://asciinema.org/ [端末の録音](わずか1分程度!)で、この記事の残りの部分でこれから行うことを示します。

asciicast

前提条件

Riggerは独自の依存関係管理を処理するように設計されていますが、Deigクラスターをプロビジョニングする前にいくつかの設定を行う必要があります。 自宅でこのガイドに従うには、次のものが必要です。

  • DigitalOcean APIにアクセスするDigitalOceanパーソナルアクセストークン(https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2 [パーソナルアクセストークンを生成する方法])(トークンは読み書き可能である必要があります

  • SSHキーペア(https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets[DigitalOcean DropletsでSSHキーを使用する方法]に従ってください)

このチュートリアルのすべてのコマンドは、ローカルのMacまたはLinuxワークステーションで実行できます(OS X> = 10.10およびDebian / Ubuntuがテストされました)。 ドロップレットで実行することもできますが、必ずしも必要ではありません。

RiggerでDeisクラスターをプロビジョニングするために使用するワークステーションには、「+ zip 」、「 make 」、および「 git +」ユーティリティをインストールする必要があります。

たとえば、Ubuntuシステムを使用している場合は、次のコマンドを使用してインストールします。

sudo apt-get update
sudo apt-get install zip make git

この記事では、 `+ git `ユーティリティを使用してRiggerとサンプルアプリケーションをダウンロードします。 ` zip `および ` make +`ユーティリティは、Riggerプロビジョニングスクリプトによって使用されます。

Mac OS Xを実行している場合、gitを使用するにはXcodeライセンス契約に同意する必要もあります。

sudo xcodebuild -license

ステップ1-Riggerのインストール

Riggerをインストールするには、最初に `+ git +`を使用してダウンロードします。

git clone https://github.com/deis/rigger.git

作成されたディレクトリに移動します。

cd rigger

次に、次のコマンドを実行します。

./rigger

最初に実行すると、次のように表示されます。

OutputDownloading rerun from GitHub...

出力の最後に、使用可能なコマンドのリストが表示されます。

OutputAvailable commands in module, "rigger":
checkout: "checkout the Deis repo with version: $VERSION into directory: $DEIS_ROOT"
configure: "initialize a rigger varsfile to use with future commands"
  [ --advanced]: "configure all the nitty gritty details of the infrastructure and Deis deployment"
  [ --provider <>]: "which cloud provider to use to provision a Deis cluster"
  [ --version <>]: "choose what version of Deis to deploy"
create-registry: "Create a local dev registry"
deploy: "Install and Deploy Deis"
destroy: "destroy all infrastructure created by the provision step"
provision: "provision new infrastructure and deploy Deis to it"
  [ --cleanup]: "destroy cluster after action"
setup-clients: "download and stage deisctl and deis clients for your own use"
shellinit: "show the current sourceable environment variables (useful for eval-ing)"
  [ --file <>]: "use a specific file"
shell-reset: "an eval-able output that unsets variables that have been injected by rigger"
  [ --file <>]: "use a specific file"
test: "run a test suite on the provisioned Deis cluster"
  [ --type <smoke>]: "provide a type of test to run"
upgrade: "Tests upgrade path for Deis"
  [ --to <master>]: "Define version of Deis to upgrade to"
  [ --cleanup]: "destroy cluster after action"
   --upgrade-style <graceful>: "choose the style of upgrade you'd like to perform"

ステップ2-Deisデプロイメントの構成

プロバイダーとしてDigitalOceanを使用し、Deisの特定のバージョンを使用するようにDeisデプロイメントを構成するには、以下を呼び出すだけです。

./rigger configure --provider "digitalocean" --version "1.12.0"

その後、リガーはいくつか質問をします。 すべて次のようになります。

Output-> What DigitalOcean token should I use? DO_TOKEN (no default)

You chose: ******

-> Which private SSH key should be used? SSH_PRIVATE_KEY_FILE [ /Users/sgoings/.ssh/id_dsa ]
1) /Users/sgoings/.ssh/id_dsa
2) ...
#?
You chose: 1) /Users/sgoings/.ssh/id_dsa

... output snipped ...

Enter passphrase for /Users/sgoings/.ssh/id_dsa:

Rigger has been configured on this system using ${HOME}/.rigger//vars
To use the configuration outside of rigger, you can run:

 source "${HOME}/.rigger//vars"

難しい部分はすべて完了しました!

ステップ3-利益!

またはより正確に: `+ rigger +`を実行してDigitalOceanにインフラストラクチャをプロビジョニングし、Deisをデプロイします!

実行する必要があるのは、実行するだけです:

./rigger provision

DigitalOceanでのRiggerによるDeisプロビジョニングプロセスは約15分かかり、次のようになります。

  1. https://terraform.io [Terraform]は自動的にダウンロードされ、Riggerが使用するために `+ $ {HOME} /。rigger +`にインストールされます。

  2. Deisクライアント( + deis +`および `+ deisctl +)は、 `+ $ {HOME} /。rigger // bins +`にダウンロードされます

  3. https://terraform.io [Terraform]は、DigitalOceanで3つのCoreOSドロップレットをプロビジョニングするために使用されます

  4. `+ DEISCTL_TUNNEL +`は、新しくプロビジョニングされたDigitalOcean Dropletsの1つを調査することによって決定されます

  5. http://xip.io [xip.io]は、クラスターへの単純なDNSエントリポイントを設定するために使用されます

  6. `+ deisctl install platform +`が実行されます

  7. `+ deisctl start platform +`が実行されます

ステップ4-プレイタイム!

Riggerを使用してDeisクラスターを作成したら、アプリをデプロイする必要があります!

最初に、いくつかの空きディレクトリスペースに戻ります。

cd ../

次に、Deisプロジェクトからサンプルアプリを取得します。

git clone https://github.com/deis/example-nodejs-express.git

新しく作成したディレクトリに移動します。

cd example-nodejs-express

すべての `+ rigger +`環境変数をこのシェルにロードします。

source "${HOME}/.rigger//vars"

次に、このDeisクラスターに管理アカウントを登録します。

deis auth:register http://deis.${DEIS_TEST_DOMAIN}

アカウントを作成するための情報を入力するよう求められます。

Outputusername:
password:
password (confirm):
email:
Registered
Logged in as

Deisクラスターに公開キーを追加します。

deis keys:add

以下が表示されます。

OutputFound the following SSH public keys:
1) deiskey.pub deiskey
2) id_dsa.pub sgoings
0) Enter path to pubfile (or use keys:add <key_path>)
Which would you like to use with Deis?

`+ rigger configure +`ステップで選択した秘密鍵と一緒に公開鍵を選択する必要があります。

Deisクラスターを指すようにgitリモートを追加します。

deis apps:create

以下が表示されます。

OutputCreating Application... done, created
Git remote deis added
remote available at ssh://git@deis.:2222/.git

今、それを押してください!

git push deis master

これにはしばらく時間がかかる場合があります。 最終的に、出力の最後に次が表示されるはずです。

Output-----> Launching...
      done, :v2 deployed to Deis

      http://

      To learn more, use `deis help` or visit http://deis.io

先に進んで、そのURLをブラウザーにロードしてください! (アプリは非常にシンプルで、「Powered by Deis」と印刷されます)

ステップ5-それをすべてノックダウン!

おしゃれな新しいDeisクラスターを少し試してみたら…​おそらくそれをすべて分解することをお勧めします。 それは簡単です。

`+ rigger +`ディレクトリに戻ります:

cd ../rigger

次に、それを破壊します。

./rigger destroy

結論

このガイドでは、開発者、オペレーター、オープンソースの貢献者の生活を楽にするために、Deisチームがどこに向かっているのかを見ることができました。 http://deis.io [Deis]クラスターのプロビジョニングは、内部でのhttps://terraform.io [Terraform]とインフラストラクチャプロバイダーとしての超高速のDigitalOceanの組み合わせのおかげで、Riggerで簡単に行えるようになりました。