みなさん、こんにちは。GMOインターネット株式会社の斉藤です。この記事は前回の「sshfsが開発終了になったので代わりにRcloneを使ってみる」の続きになります。今回はRcloneでConoHaオブジェクトストレージを操作してみたいと思います。
ConoHaオブジェクトストレージ
最初にConoHaオブジェクトストレージについて簡単に紹介いたします。
このサービスはGMOインターネット株式会社が提供しているホスティングサービスConoHaのサービスの一つです。ストレージサービスの一種で「上限無制限で容量を追加できる」「データ転送料金が無料」「多重データ保護」と言った特徴を備えています。
オブジェクトストレージへのアクセスはREST APIを通じて行います。なのでcurlなどのコマンドラインツールでも良いですし、各種プログラミング言語のSDKも揃っていますので、それらを使ってアクセスするのがよく使われる方法だと思います。
Rcloneから接続してみよう
前回からのおさらいですが、Rcloneはリモート接続を行う前に設定をする必要があります。リモートストレージ毎に「プロバイダー」と呼ばれるコネクタが用意されていて、それぞれ固有の設定を持っています。ConoHaオブジェクトストレージでは「Swift」というプロバイダーを使用します。これはConoHaオブジェクトストレージがOpenStackと言うクラウド基板をベースとしており、そのオブジェクトストレージがSwiftと言う開発名だからです。
https://rclone.org/swift/
設定
設定を進めるにあたって、前回と同じようにRcloneの対話的コマンドを使うのですが,その前にOpenStackの認証に必要な環境変数をシェルに登録しましょう。
ConoHaのコントロールパネルにログインして、左側のメニューにあるAPIを選びます。
ConoHaコントロールパネルの「API」メニュー
ここで必要になるのは、
ユーザ名
パスワード
Account Service(のURL)
リージョン名
テナントID
になります。リージョン名はURLにあるconoha.ioの前の部分で「tyo1」などになります。これらをシェルの環境変数に設定します。以下はbashの例です。ターミナルから以下をそのまま入力します。もちろんシェルスクリプトなどにまとめても良いですし、.bash_profile等に書いてシェル実行時に設定されるようにしても良いでしょう。
export OS_USERNAME=gncu******
export OS_PASSWORD=[PASSWORD]
export OS_AUTH_URL=https://identity.tyo1.conoha.io/v2.0
export OS_REGION_NAME=tyo1
export OS_TENANT_ID=[TENANT_ID]
設定できたか確認するために以下を実行してみましょう。
env | grep OS_
環境変数が表示されればOKです。
次にRcloneの設定を行います。以下を実行してください。
rclone config
ストレージの種類を選ぶ際に、30番の「OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH) (swift)」を選択します。
$ rclone config [←ターミナルからrclone configと入力して開始します]
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n [←nを入力。新規にリモート設定を作成します]
name> conoha-ojs [←リモート設定の名前を入力します。よく使うので短い方が良いです。後で変更可能]
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
1 / 1Fichier
\ (fichier)
2 / Akamai NetStorage
\ (netstorage)
3 / Alias for an existing remote
\ (alias)
4 / Amazon Drive
\ (amazon cloud drive)
(中略…)
46 / seafile Storage> sftp
Storage> swift [←swiftと入力します]
Option env_auth.
Get swift credentials from environment variables in standard OpenStack form.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (false).
1 / Enter swift credentials in the next step.
\ (false)
/ Get swift credentials from environment vars.
2 | Leave other fields blank if using this.
\ (true)
env_auth>
次の設問は2の「Get swift credentials from environment vars.」を選びます。
認証情報を先ほど設定した環境変数から取得すると言う意味になります。
Option env_auth.
Get swift credentials from environment variables in standard OpenStack form.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (false).
1 / Enter swift credentials in the next step.
\ (false)
/ Get swift credentials from environment vars.
2 | Leave other fields blank if using this.
\ (true)
env_auth> 2
残りの設問は全てオプションなので、Enterキーを押し続けてスキップします。
最後に以下の確認が表示されますが、これにyで答えて設定は完了です。簡単でしたね!
--------------------
[conoha-ojs]
type = swift
env_auth = true
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>
Current remotes:
接続する
rcloneにはいくつかのサブコマンドがあり、これでファイルを操作します。
オブジェクトストレージの文脈では、ストレージ上にあるものを一般的に「オブジェクト」と呼びます。ファイルとは呼びません。ただここではわかりやすくするため「ファイル」と表記します。
rclone [サブコマンド] [パラメーター]
しかし、オブジェクトストレージには現在何もファイルがありません。なので、rclone ls conoha-ojs: のようなコマンドを叩いても何も出てこないはずです。ただ、エラーも出ていないはずなのでこれで接続はおそらくうまくいっています。rclone copy等のコマンドで適当なファイルをオブジェクトストレージに送ってみましょう。ファイルの名前が表示されるはずです。
マウントする
もちろんマウントすることもできます。ローカルに適当なディレクトリを「マウントポイント」として作成して、以下のコマンドを実行します。
rclone mount --daemon conoha-ojs: [マウントポイント]
オブジェクトストレージはREST APIで操作することが前提となってはいますが、マウントできるとローカルのファイルシステムのように操作できるのでとても利便性が高いです。
もちろん、オブジェクトストレージはLinuxなどのファイルシステムとは互換性がありません。先ほどお話ししたようにストレージ上に存在するものは「ファイル」ではなく「オブジェクト」ですし、パーミッションやディレクトリも無いのです。
なので完全な代替にはなりません。操作がしやすくなるだけで、利用者側はオブジェクトストレージの特性をきちんと把握しておく必要があるでしょう。
おわりに
RcloneからConoHaオブジェクトストレージを扱ってみました。最初の設定も簡単ですし、とても使いやすいクライアントです。オブジェクトストレージには他にも多くのクライアントがありますので、用途に合わせて選んでみると良いですね。
それではまた次回お目にかかりましょう。
[PR]
私が働いているGMOインターネット株式会社ではエンジニアを含め採用を強化しています。
募集職種 | GMOインターネット株式会社採用
「いきなり応募するもなぁ」と言う方は、Twitter DMで私に直接ご相談いただいても構いません。社内の雰囲気、開発現場の雰囲気、人間関係、待遇など、社内の人物からリアルな情報を知りたいという方はお気軽にどうぞ。