DigitalOceanでのRiggerを使用したDeisの展開
Deisからの記事
序章
Deisは、独自のサーバーでのアプリケーションの展開と管理を簡素化するオープンソースのプライベートPlatform as a Service(PaaS)です。 DockerやCoreOSなどのテクノロジーを活用することで、Deisは、選択したホスティングプロバイダーで、Herokuと同様のワークフローとスケーリング機能を提供します。 DeisはDockerコンテナで実行できるアプリケーションをサポートし、DeisはCoreOSをサポートする任意のプラットフォームで実行できます。
このガイドでは、Deisプロジェクトの新しいツールであるRiggerを使用して、新しく改善されたDeisプロビジョニングプロセスについて説明します。
プレビュー
時間がない場合は、この高速化されたターミナルレコーディング(約1分程度です!)は、この記事の残りの部分で何をするかを示しています。
前提条件
Riggerは独自の依存関係管理を処理するように設計されていますが、Deisクラスターをプロビジョニングする前にいくつかの設定を行う必要があります。 自宅でこのガイドに従うには、次のものが必要です。
- DigitalOcean APIにアクセスするためのDigitalOceanパーソナルアクセストークン(パーソナルアクセストークンの生成方法に従ってください)(トークンは読み取り/書き込みである必要があります)
- SSHキーペア( DigitalOceanドロップレットでSSHキーを使用する方法に従ってください)
このチュートリアルのすべてのコマンドは、ローカルのMacまたはLinuxワークステーションで実行できます(OS X> =10.10およびDebian/Ubuntuがテストされました)。 ドロップレットで実行することもできますが、必須ではありません。
zip
、make
、およびgit
ユーティリティは、RiggerでDeisクラスターをプロビジョニングするために使用するワークステーションにインストールする必要があります。
たとえば、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
注:この記事はDeisバージョン1.12.0用に作成されました。
ステップ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) [enter or paste your DigitalOcean token here] 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) ... #? [enter a number] You chose: 1) /Users/sgoings/.ssh/id_dsa ... output snipped ... Enter passphrase for /Users/sgoings/.ssh/id_dsa: [enter your ssh passphrase] Rigger has been configured on this system using ${HOME}/.rigger/<id>/vars To use the configuration outside of rigger, you can run: source "${HOME}/.rigger/<id>/vars"
あなたはすべて難しい部分で終わりました!
ステップ3—利益!
より正確には、rigger
を実行してDigitalOceanにインフラストラクチャをプロビジョニングしてから、Deisをデプロイします。
私たちがする必要があるのは実行することだけです:
./rigger provision
警告: Mac OS XでRiggerを実行している場合、次のエラーメッセージが表示される場合があります。
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
その場合は、前提条件のセクションで説明されているように、sudo xcodebuild -license
コマンドを使用してXcodeライセンスに同意する必要があります。
DigitalOceanでのRiggerを使用したDeisプロビジョニングプロセスには約15分かかり、次のようになります。
- Terraform は自動的にダウンロードされ、
${HOME}/.rigger
にインストールされて、Riggerで使用できるようになります。 - Deisクライアント(
deis
およびdeisctl
)は${HOME}/.rigger/<id>/bins
にダウンロードされます - Terraform は、DigitalOceanで3つのCoreOSドロップレットをプロビジョニングするために使用されます
DEISCTL_TUNNEL
は、新しくプロビジョニングされたDigitalOceanドロップレットの1つを調査することによって決定されます- xip.io は、クラスターへの単純なDNSエントリポイントを設定するために使用されます
deisctl install platform
が実行されますdeisctl start platform
が実行されます
警告: DigitalOceanでインフラストラクチャをプロビジョニングするときに次のエラーが表示される場合は、DOアクセストークンが読み取り/書き込みであることを確認してください。
3 error(s) occurred: * digitalocean_droplet.deis.1: Error creating droplet: Error creating droplet: API Error: 403 Forbidden * digitalocean_droplet.deis.0: Error creating droplet: Error creating droplet: API Error: 403 Forbidden * digitalocean_droplet.deis.2: Error creating droplet: Error creating droplet: API Error: 403 Forbidden
その後、./rigger provision
を再度実行できます。
ステップ4—プレイタイム!
Riggerを使用してDeisクラスターを作成したら、それにアプリをデプロイする必要があります。
まず、空きディレクトリスペースに戻ります。
cd ../
次に、Deisプロジェクトからサンプルアプリを入手します。
git clone https://github.com/deis/example-nodejs-express.git
新しく作成したディレクトリに移動します。
cd example-nodejs-express
すべてのrigger
環境変数をこのシェルにロードします。
source "${HOME}/.rigger/<id>/vars"
次に、このDeisクラスターに管理者アカウントを登録します。
deis auth:register http://deis.${DEIS_TEST_DOMAIN}
アカウントを作成するための情報の入力を求められます。
Outputusername: [ enter a username ] password: [ enter a password ] password (confirm): [ enter the same password ] email: [ enter an email for this user ] Registered <username> Logged in as <username>
公開鍵を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? [ enter number ]
rigger configure
ステップで選択した秘密鍵と一緒に使用する公開鍵を選択する必要があります。
Deisクラスターを指すgitリモートを追加します。
deis apps:create
次のように表示されます。
OutputCreating Application... done, created hearty-kingfish Git remote deis added remote available at ssh://git@deis.${DEIS_TEST_DOMAIN}:2222/hearty-kingfish.git
今、それを押してください!
git push deis master
これにはしばらく時間がかかる場合があります。 最終的に、出力の最後に次のように表示されます。
Output-----> Launching... done, hearty-kingfish:v2 deployed to Deis http://hearty-kingfish.${DEIS_TEST_DOMAIN} To learn more, use `deis help` or visit http://deis.io
さあ、そのURLをブラウザにロードしてください! (アプリは非常にシンプルで、「Powered byDeis」と出力するだけです)
ステップ5—すべてをノックダウンします!
派手な新しいDeisクラスターを少し試してみたら、すべてを分解することをお勧めしますね。 それは簡単です。
rigger
ディレクトリに戻ります。
cd ../rigger
次に、それを破壊します:
./rigger destroy
結論
このガイドでは、開発者、オペレーター、およびオープンソースの貢献者の生活を楽にするためにDeisチームがどこに向かっているのかを知ることができました。 Deis クラスターのプロビジョニングは、インフラストラクチャプロバイダーとしての Terraform と超高速のDigitalOceanの組み合わせのおかげで、Riggerで簡単にプロビジョニングできるようになりました。