CoreOSクラスターでCloudSlangを使用してDocker環境をクリーンアップする方法

前書き

CoreOSは、Dockerコンテナーとサービスディスカバリーを利用して、クラスター環境を迅速にスピンアップすることに重点を置いたLinuxディストリビューションです。 CoreOSを初めて使用する場合は、https://www.digitalocean.com/community/tutorial_series/getting-started-with-coreos-2 [Getting Started with CoreOS]チュートリアルシリーズをご覧ください。

ただし、Dockerイメージは、Dockerホスト上で非常に多くのディスク容量を占有する可能性があります。 ベースイメージのサイズは数百MBで、カスタムイメージは1 GBに簡単に到達できます。 アプリ用の新しいDockerイメージのリリースが多数ある場合、サーバーストレージに簡単に蓄積できます。古い画像や未使用の画像を時々消去しないと、サーバーのディスク容量が不足する可能性があります。

CloudSlangは、ワークフローまたは略してフローを使用してプロセスを簡単に自動化できるオープンソースのオーケストレーションソリューションです。 フローには、タスクとナビゲーションロジックのリストが含まれます。 タスクは、Pythonスクリプト、Javaメソッド、または別のフローを実行するアクションを含む操作を呼び出すことができます。 CloudSlang言語では、テキストで再利用可能な方法でフローを定義できます。また、既存のコンテンツ(Docker、OpenStack、およびユーティリティ)を使用して、デプロイされたアプリケーションを管理するか、独自のカスタムフローを作成できます。

このチュートリアルでは、CloudSlangを使用してCoreOSクラスターにデプロイされた各マシンのDocker環境をクリーンアップします。 既存のコンテンツを使用するため、CloudSlangファイルを編集する必要はありません。

前提条件

開始する前に、次のものが必要です。

  • sudo non-root userを含むUbuntu 14.04ドロップレット(CloudSlangサーバーになります)。

  • CloudSlangサーバー上のhttps://www.digitalocean.com/community/tutorials/how-to-install-java-on-ubuntu-with-apt-get[Java(バージョン7以降)がインストールされている]。 JREのみをインストールし、JDKをインストールする必要はありません。

  • 3台のCoreOSマシンのクラスター。 まだ持っていない場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-coreos-cluster-on-digitalocean [このチュートリアル]。

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

このステップでは、CloudSlangサーバーに「+ unzip +」をインストールします。

まず、パッケージリストが最新であることを確認します。

sudo apt-get update

次に、解凍​​をインストールします。

sudo apt-get install unzip

ステップ2-CloudSlangのダウンロード

このセクションでは、CloudSlang CLIツールと利用可能なコンテンツ(定義済みの操作とフロー)をダウンロードします。 CloudSlang CLIは、フローの実行に使用できるコマンドラインインターフェイスツールです。

まず、CloudSlang CLIアーカイブをダウンロードします。

wget https://github.com/CloudSlang/cloud-slang/releases/download/cloudslang-0.7.29/cslang-cli-with-content.zip

アーカイブを解凍します。

unzip cslang-cli-with-content.zip

これにより、 `+ cslang +`ディレクトリが作成されます。 そのディレクトリの内容をリストする場合、

ls ~/cslang

次の3つのディレクトリがあります。

  • 外部Pythonライブラリに使用される + python-lib +

  • CloudSlang CLIファイルを含む「+ cslang 」。 ` cslang / bin `フォルダーには、CLIの起動に使用される ` cslang `という名前のファイルが含まれています。 ` cslang / lib +`には、アプリケーションに必要な依存関係が含まれています。

  • + content +。既製のCloudSlangコンテンツが含まれています。 実行するフローは「+ content / io / cloudslang / coreos 」にあり、「 cluster_docker_images_maintenance.sl +」と呼ばれます。 このフローは、クラスター内のすべてのマシンで繰り返され、未使用のDockerイメージを削除します。

ステップ3-秘密鍵の追加

CloudSlangには、CoreOSクラスターへのSSHキーアクセスが必要です。 この手順では、CloudSlangサーバーで新しいキーペアを作成し、公開キーをCoreOSクラスターに追加することでこれを追加します。

まず、https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys—​2 [このチュートリアル]の手順1および2に従って、パスフレーズなしでキーペアを作成します。 キーペアを取得したら、CoreOSクラスター内の各マシンに公開キーを追加する必要があります。

まず、CloudSlangサーバーで公開キーを取得します。

cat ~/.ssh/id_rsa.pub

「+ ssh-rsa 」で始まり「 @ +」で終わる長い出力が表示されます。 これをコピーして、次のコマンドで使用します。

CoreOSサーバーの1つにSSHで接続し(デフォルトのユーザー名は + core +)、次のコマンドを実行して公開キーを追加します。

echo "" >> ~/.ssh/authorized_keys

CoreOSクラスター内のサーバーごとにこれを行う必要があります。

ステップ4-フローの実行

このセクションでは、フローを実行し、その動作を確認します。

フローを実行するには、CloudSlangサーバーで、最初に `+ / cslang / bin +`ディレクトリに移動します。

cd ~/cslang/cslang/bin/

CLIを起動するには、「+ cslang +」という実行可能ファイルを実行します。

./cslang

しばらくすると、CloudSlangのようこそ画面が表示されます。

0.7.26-SNAPSHOT
Welcome to CloudSlang. For assistance type help.

CLIで次のコマンドを入力し、「++」をクラスター内のいずれかのCoreOSサーバーのIPアドレスに置き換えます。

custom_prefix(cslang>)
run --f  ../../content/io/cloudslang/coreos/cluster_docker_images_maintenance.sl --i coreos_host=,coreos_username=core,private_key_file=~/.ssh/id_rsa --cp ../../content/

`+ run `コマンドはフローをトリガーします。 `-f `はフローへのパスを指定します。 `-i `はフロー入力を指定します:CoreOSホストとユーザー名、および関連するプライベートSSHキー。 `-cp `は、フローが他の操作とフローに依存する場合のクラスパスを指定します。 このフローにはさまざまな依存関係があるため、親の ` content +`フォルダーを指定できます。スキャンは再帰的であるため、サブディレクトリもスキャンされます。

制御ロジックは、最初にクラスターからマシンのIPアドレスを取得してから、マシンを反復処理し、未使用のイメージをクリアします。 まず、すべてのイメージを取得し、実行中/停止中のコンテナーをチェックして未使用のイメージのみを残します。 次に、未使用のイメージを削除します。 最後に、ぶら下がり画像でも同じことを行います。

フローの実行中、CLIは実行されるタスク名を表示します。 フローが終了すると、CLIはフロー出力やフロー結果などの有用な情報を出力します。

この場合、フローの結果はSUCCESS(クラスターで未使用のDockerイメージがクリアされたことを意味します)またはFAILURE(問題が発生したことを意味します)のいずれかになります。 このフローには、「+ number_of_deleted_images_per_host +」という出力が1つあります。これは、クラスター内のすべてのホストで削除されたイメージの数です。

すべてがうまくいった場合、次のような出力が表示されるはずです。

...

Flow : cluster_docker_images_maintenance finished with result : SUCCESS
Execution id: 101600001, duration: 0:02:06.180

実行に関する詳細情報が必要な場合は、CLIによって + bin`フォルダーに作成される + execution.log`ファイルを確認してください。

結論

これで、CoreOSクラスター内のすべての未使用のDockerイメージが削除されました!

このチュートリアルでは、UbuntuマシンでCloudSlangを実行する方法と、CloudSlang CLIを使用してフローをトリガーする方法を見てきました。 また、既製のワークフローを使用してDocker環境をクリーンアップしました。

_Copyright 2015年6月9日、Hewlett-Packard Development Company、L.P. Permission._で再現