4. VCP CLI操作説明書

4.1. 概要

オンデマンド構築機能で オブジェクトストレージ機能である Amazon S3 および Azure Blob Storage を操作するコマンドを 提供する。

対象とするクラウドプロバイダーは、以下の通り。

4.2. VCPとクラウドオブジェクトストレージの概念の対応付け

VCP上でクラウドオブジェクトストレージを扱う際のモデルは、以下のようにする。

VCP

AWS(s3)

Azure(Blog Storage)

volume

ストレージアカウント

volume

Bucket

Container

file

object

Blob

参考 Azure のBlob Storageのモデル

image1

4.3. 機能概要

Linux環境(JupyterNotebook、もしは各VcNode上)で実行できるコマンドラインツールを提供する。

コマンドラインツールは、 vcpcli と呼ぶ。

vcpcli の機能は以下の通り。

Usage:
  vcp storage [--debug] create [--no-verify] [--public] <bucket_path>
  vcp storage [--debug] drop [--no-verify] <bucket_path>
  vcp storage [--debug] ls [--no-verify] <path>
  vcp storage [--debug] cp [--no-verify] <src_path> <dest_path>
  vcp storage [--debug] rm [--no-verify] <path>
  vcp configure
  vcp -h
  vcp --version

Options:
  -h --help    ... ヘルプを表示
  --public     ... createコマンドのオプション。作成するvolumeやfileをpublic-access可能とする
  --debug      ... デバッグモード
  --no-verify  ... Vaultへのアクセス時にSSLの検証を省く

Commands:
  configure  ... 設定ファイルのテンプレートを出力する
  storage    ... ストレージの操作

    create   ... ボリュームを作成
    drop     ... ボリュームを削除
    ls       ... ボリューム、オブジェクトの一覧を表示する。引数は接頭辞。
    cp       ... オブジェクトをコピーする
    rm       ... オブジェクトを削除する

Parameters:
  path: storage種別://volume名/file名 ... storage種別(aws-s3|azure-blob)

Environment variables:
  TOKEN: VCC APIアクセストークン
  VCPCLI_CONFIG_DIR: 設定ファイルconfig.ymlがあるディレクトリ(デフォルト $HOME/.vcpcli)

4.4. 認証情報の取得方法

AWS、Azure にアクセスするめの認証情報(アクセスキーなど)は、VC コントローラ上のVaultサーバから取得する。

そのため、vcpcli を利用するためには、VCP SDKと同様にVC コントローラアクセス用のアクセストークンのが必要である。

認証サーバのVaultサーバ上の保存場所は、設定ファイルに記述する。

設定ファイルについては後述

...
aws:
  access_key: vault://cubbyhole/aws_access_key
  secret_key: vault://cubbyhole/aws_secret_key
  region:

azure:
  tenant_id: vault://cubbyhole/azure_tenant_id
  client_id: vault://cubbyhole/azure_client_id
  client_secret: vault://cubbyhole/azure_client_secret

  #
  azure_resource_group_name: fillme
  # 設定する
  azure_location: fillme
...

4.5. ユーザ操作説明

4.5.1. インストール手順

vcpcli をツールを実行するサーバにインストールする方法は、以下の通り。

  1. vcpcliが使用するVCコントローラアクセス用CA証明書のインストール

    • CA証明書がインストールできない場合は、 --no-verify オプション を使用する。

  2. 必要とするライブラリ、ツールのインストール方法

    • AWS API呼出用の python ライブラリをpipインストールする。

    requirements.txt

    awscli==1.11.139
    docopt==0.6.2
    azure-cli==2.0.59
    ruamel.yaml==0.15.74
    
    • TOKENという環境変数にVCC APIアクセストークンを設定する

4.5.2. 設定手順

vcpcli の設定ファイルは、 $HOME/.vcpcli/config に下記のように記述する。

$HOME/.vcpcli/config.yml の例:

vcc:
  # VCコントローラのIPアドレス
  host: 192.168.1.1

aws:
  access_key: vault://cubbyhole/aws_access_key
  secret_key: vault://cubbyhole/aws_secret_key
  # VPNカタログの情報と同じ
  region: ap-northeast-1

azure:
  tenant_id: vault://cubbyhole/azure_tenant_id
  client_id: vault://cubbyhole/azure_client_id
  client_secret: vault://cubbyhole/azure_client_secret

  # VPNカタログの情報と同じ
  azure_resource_group_name: fillme
  azure_location: fillme

4.5.3. コマンド概要

  • volume作成

  • volume削除

  • オブジェクトのアップロード

  • オブジェクトのダウンロード

  • ボリュームの一覧表示

  • オブジェクトの一覧表示

  • オブジェクトの削除

4.5.3.1. volume作成

export TOKEN=VCCアクセストークン
vcp storage create [--public] aws://<bucketname>

AzureのBlobにおけるストレージアカウントとBlobコンテナをvcpcliでは 両方ボリュームとみなす。

export TOKEN=VCCアクセストークン
vcp storage create azure://<storage_account_name>
vcp storage create [--public] azure://<storage_account_name>/<container_name>
vcp storage create azure://<storage_account_name>
vcp storage create azure://<storage_account_name>/<container_name>

4.5.3.2. volume削除

export TOKEN=VCCアクセストークン
vcp storage drop azure://<storage_account_name>
vcp storage drop azure://<storage_account_name>/<container_name>

4.5.3.3. オブジェクトのアップロード

export TOKEN=VCCアクセストークン
vcp storage cp <local_src_path> aws://<bucketname>/<dest_path>
vcp storage cp <local_src_path> azure://<storage_account_name>/<container_name>/<dest_path>

すでに同じ名前のオブジェクトがある場合は上書きする。

4.5.3.4. オブジェクトのダウンロード

export TOKEN=VCCアクセストークン
vcp storage cp aws://<bucketname>/<src_path> <local_dest_path>
vcp storage cp azure://<storage_account_name>/<container_name>/<src_path> <local_dest_path>

4.5.3.5. ボリュームの一覧表示

export TOKEN=VCCアクセストークン
vcp storage ls aws://
vcp storage ls azure://

コンテナの一覧

export TOKEN=VCCアクセストークン
vcp storage ls azure://<storage_account_name>/

4.5.3.6. オブジェクトの一覧表示

export TOKEN=VCCアクセストークン
vcp storage ls aws://<bucketname>/<path>
vcp storage ls azure://<storage_account_name>/<container_name>/<path>

4.5.3.7. オブジェクトの削除

export TOKEN=VCCアクセストークン
vcp storage rm aws://<bucketname>/<path>
export TOKEN=VCCアクセストークン
vcp storage rm azure://<storage_account_name>/<container_name>/<path>

4.6. 制限事項

4.6.1. Bucket名 / ストレージアカウント名の制限

  • AWS S3 のBucket 名称は 3 ~ 63 文字の長さで、英数字と . (ピリオド) および - (ハイフン) を使用可能

  • Azure のストレージアカウントは 3 〜 24 文字の長さで、英数小文字と数字を使用可能

4.6.2. 操作の制限

  • AWS S3, Azure Files の疑似ディレクトリ構造はサポートしない。(フォルダのコピーと削除は利用できない)

  • AWS S3 と Azure Files間のcopy(cp)は、vcpcli 実行マシン上に一時ファイルを作成する。大きなファイルサイズの転送時は、実行マシン上の残りディスク容量を超えないように注意する。