DockerでIDCFクラウドのCLIを実行する
Dockerコンテナ上でCLIを実行するデザインパターンを以前調べましたが、今回はIDCFクラウドのCLIのイメージを作ってみます。virtuanemvで仮想環境を用意しても良いのですが、Dockerイメージでコマンドを配布するとホストマシンの環境を汚さずにお試しで実行できます。CLIの配布形式としてもDockerイメージは便利に使えます。
プロジェクト
今回作成したリポジトリはこちらです。
Dockerfile
ベースイメージはオフィシャルのPythonの2.7 ONBUILDを使います。ONBUILDでビルドに必要な処理をするためDockerfileはとても簡単です。
FROM python:2-onbuild
requirements.txt
IDCFのリポジトリにはrequirements.txtが同梱されていません。依存するパッケージの追加と、cloudstack-apiもGitHub経由でインストールするように定義します。
httplib2
simplejson
argparse
prettytable==0.5
parsedatetime==0.8.7
lxml
-e git+https://github.com/idcf/cloudstack-api#egg=cloudstack-api
ONBUILDのベースイメージがrequirements.txtファイルのCOPYとpip install
をしてくれます。
FROM python:2.7
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ONBUILD COPY requirements.txt /usr/src/app/
ONBUILD RUN pip install --no-cache-dir -r requirements.txt
ONBUILD COPY . /usr/src/app
docker-compose.yml
IDCFクラウドコンソールのAPI Keyから環境変数を設定します。
- IDCF_COMPUTE_HOST: エンドポイント
- IDCF_COMPUTE_API_KEY: API Key
- IDCF_COMPUTE_SECRET_KEY: Secret Key
idcfcli:
build: .
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
- IDCF_COMPUTE_HOST=
- IDCF_COMPUTE_API_KEY=
- IDCF_COMPUTE_SECRET_KEY=
command: ["/usr/local/bin/cloudstack-api","listVirtualMachines","-t=id,name,state"]
使い方
リポジトリからgit clone
します。docker-compose.yml.defaultをdocker-compose.ymlにリネームして環境変数を設定します。
$ git clone https://github.com/masato/docker-idcfcli.git idcfcli
$ cd idcfcli
$ mv docker-compose.yml.default docker-compose.yml
$ vi docker-compose.yml
Docker Composeからコンテナを起動します。デフォルトのコマンドはlistVirtualMachinesを実行しています。
$ docker-compose build
$ docker-compose run --rm idcfcli
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
任意のコマンドは以下のように実行します。
$ docker-compose run --rm idcfcli cloudstack-api listVirtualMachines -t=id,name,state
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
エイリアスの作成
~/.bashrc
などにエイリアスを定義しておきます。
alias idcf-cli='docker-compose run --rm idcfcli cloudstack-api'
エイリアスを使うとよりCLIらしくなります。
$ idcf-cli listVirtualMachines -t=id,name,state
+--------------------------------------+------+---------+
| id | name | state |
+--------------------------------------+------+---------+
| xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | seed | Running |
+--------------------------------------+------+---------+
Author And Source
この問題について(DockerでIDCFクラウドのCLIを実行する), 我々は、より多くの情報をここで見つけました https://qiita.com/masato/items/15fecceef53b6ef36ff8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .