DC/OS環境をCLIで操作する

はじめに

前回(AWS上にDC/OS環境を構築する)では、DC/OSで用意されたCloudFormationテンプレートを使って、AWS上にDC/OS環境を構築し、Sparkの画面に接続するところまでを行いました。

今回はCLIを使ってDC/OS環境を操作してみたいと思います。

やってみた

DC/OS環境の構築

DC/OS環境の構築は前回の記事を参照してください。

CLIのインストール

手順はDC/OSのドキュメントに従います。事前に要求される環境は以下の通り。

  • cURL
  • Python 2.7.x or 3.4.x
  • Pip
  • Git

CLIをインストールする環境は Amazon Linuxで、以下のように上記のソフトウェアが導入済みとなっています。

$ curl -V
curl 7.40.0 (x86_64-redhat-linux-gnu) libcurl/7.40.0 NSS/3.21 Basic ECC zlib/1.2.8 libidn/1.18 libssh2/1.4.2

$ python -V
Python 2.7.10

$ pip -V
pip 8.1.2 from /usr/local/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg (python 2.7)

$ git --version
git version 2.7.4

まず、pipを使ってvirtualenvをインストールします。

$ sudo pip install virtualenv
$ virtualenv --version
15.0.2

作業用ディレクトリ(今回はtmp下に作成)を作り、移動します。

$ cd ~ && mkdir dcos && cd dcos

インストールスクリプトをダウンロードします。

$ curl -O https://downloads.dcos.io/dcos-cli/install.sh

インストールスクリプトを走らせます。この際にDC/OSのDnsAddressを指定します。

$ bash install.sh . http://<DnsAddress>

インストールされたことを確認します。

$ cd ./bin/
$ ./dcos --version
dcoscli.version=0.4.6
dcos.version=1.7-open

CLIを使ってみる

CLIの設定の確認

CLIの設定情報を確認します。

$ ./dcos config show
core.dcos_url=http://<DnsAddress>
core.reporting=True
core.ssl_verify=false
core.timeout=5

なお、この設定は/home/$USER/.dcos/dcos.tomlに書かれています。

$ cat /home/$USER/.dcos/dcos.toml
[core]
ssl_verify = "false"
dcos_url = "http://<DnsAddress>"
timeout = 5
reporting = true

CLIが接続するDC/OSクラスタの変更

core.dcos_urlが、CLIが接続するDC/OSクラスタです。

$ ./dcos config show core.dcos_url
http://<DnsAddress>

なので、ここを書き換えれば、CLIが接続するDC/OSクラスタを変更できます。

$ ./dcos config set core.dcos_url http://<別のDnsAddress>

DC/OSクラスタへのログイン

CLIでDC/OSへログインするためには、以下のコマンドを実行します。

$ ./dcos auth login

Please go to the following link in your browser:

    http://<別のDnsAddress>/login?redirect_uri=urn:ietf:wg:oauth:2.0:oob

Enter authentication token:

上記の表示されたURLにアクセスすると、ログイン画面が表示されます。好きなログイン方法を選択するとTokenが表示されるので、[Enter authentication token:]に入力すると...

Login successful!

と表示され、CLIからDC/OSへログインできます。

クラスタノードの確認

dcos nodeコマンドで、DC/OSクラスタに含まれるノードの情報を見ることができます。

$ ./dcos node
 HOSTNAME      IP                        ID
10.0.2.64  10.0.2.64  aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S1
10.0.2.65  10.0.2.65  aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S2
10.0.2.66  10.0.2.66  aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S5
10.0.2.67  10.0.2.67  aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S0
10.0.2.68  10.0.2.68  aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S3
10.0.7.62  10.0.7.62  aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S4

Marathonによるアプリケーションデプロイ

Marathonでアプリケーションをデプロイします。サンプルとしてnginxが提供されているので、これを実行してみます。

$ ./dcos marathon app add https://dcos.io/docs/1.7/usage/nginx.json

アプリケーションの状態を確認します。nginxがちゃんとデプロイされていることがわかります。

$ ./dcos marathon app list
ID      MEM   CPUS   TASKS  HEALTH  DEPLOYMENT  CONTAINER  CMD
/nginx  128  0.0625   1/1    ---       ---        DOCKER   None

Marathonの画面で見たところ。ちゃんとNginxが登録されてますね。

Marathon

tcos marathon appでは、その他にstart,stop,restart,kill,removeなどが用意されていて、アプリケーションの操作はほぼ全部できるようになっています。

パッケージのインストール

DC/OSにパッケージをインストールします。前回同様にSparkをインストールしてみます。

$ ./dcos package install spark
Installing Marathon app for package [spark] version [1.0.0-1.6.1-2]
Installing CLI subcommand for package [spark] version [1.0.0-1.6.1-2]
New command available: dcos spark
DC/OS Spark is being installed!

	Documentation: https://docs.mesosphere.com/usage/services/spark/
	Issues: https://docs.mesosphere.com/support/

インストールされたペッケージを確認します。

$ ./dcos package list
NAME   VERSION        APP     COMMAND  DESCRIPTION
spark  1.0.0-1.6.1-2  /spark  spark    Spark is a fast and general cluster comput

サービスの確認

dcos serviceコマンドで、インストールしたパッケージの稼働状況がサービスとして登録されていることが確認できます。

$ ./dcos service
NAME                          HOST                      ACTIVE  TASKS   CPU    MEM    DISK  ID
marathon                   10.0.5.28                     True     2    1.063  1152.0  64.0  aaaec8c5-0674-4dca-b9c8-fd70f70d1911-0000
spark     ip-10-0-2-67.ap-northeast-1.compute.internal   True     0     0.0    0.0    0.0   aaaec8c5-0674-4dca-b9c8-fd70f70d1911-0001

GUIで見たところ。

DC_OS

タスクの確認

dcos taskコマンドで、タスク一覧を確認することができます。

$ ./dcos task
NAME   HOST       USER  STATE  ID
nginx  10.0.2.65  root    R    nginx.3c547bc6-436b-11e6-aa1e-3a0d432635e8
spark  10.0.2.67  root    R    spark.f09a4647-436c-11e6-aa1e-3a0d432635e8

DC/OSクラスタからのログアウト

作業完了後にはログアウトしておきましょう。

$ ./dcos auth logout

さいごに

DC/OSのCLIを使って操作をしてみました。GUIと同等のことがCLIで出来るのはとても便利ですね!