MENU

usacloud を使って任意の時間にアーカイブバックアップを取得する

こんにちは。アミーです。

さっそくですが、さくらのクラウドにはアーカイブという機能があります
他のクラウドでいうとスナップショットに近く、ディスクイメージを保存しておけるものになります。

さくらのクラウドの機能として自動バックアップというものがあり、アーカイブを自動で取得してくれる機能があります。
しかしながら曜日は選択できるものの、時間は指定できません。また曜日と保持世代しか選択できないため、特定の日付というものが難しいです。

そこで usacloud というさくらのAPIを実行できるツールを用いて好きな時間にバックアップを取ろうと思います。

目次

usacloud のインストール

インストールに関しては外部にHTTPSができる環境であればどこにインストールしても問題ありませんが、今回は直接サーバにインストールしようと思います。

インストールマニュアル
https://docs.usacloud.jp/usacloud/installation/start_guide/

# curl -fsSL https://github.com/sacloud/usacloud/releases/latest/download/install.sh | bash

インストールされたことを確認

# usacloud help
CLI to manage to resources on the SAKURA Cloud

Usage:
usacloud [global options] [options] [arguments] [flags]
usacloud [command]

Available Commands:
completion Generate completion script
config Management commands for Configuration file/Profile
help Help about any command
iaas SubCommands for IaaS
rest Invoke SAKURA cloud API directly
update-self Update Usacloud to latest-stable version
version Show version info
web-accelerator SubCommands for WebAccelerator

Flags:
--profile string the name of saved credentials
--token string the API token used when calling SAKURA Cloud API
--secret string the API secret used when calling SAKURA Cloud API
--zones strings permitted zone names
--no-color disable ANSI color output
--trace enable trace logs for API calling
--fake enable fake API driver
--fake-store string path to file store used by the fake API driver
--process-timeout-sec int number of seconds before the command execution is timed out
--argument-match-mode string how to compare the argument and resource name when identifying the resource to be manipulated options: [partial/exact]
-v, --version show version info
--private-key-path option[string] path to an RSA 2048 bit private key PEM format
--service-principal-id option[string] the ID of the service principal
--service-principal-key-id kid the kid of the service principal
-h, --help help for usacloud

Use "usacloud [command] --help" for more information about a command.

続いてマニュアルに従ってAPIキーを取得してください。
APIキーを取得後、usacloud config を実行してキー登録をしてください。

# usacloud config
Setting SakuraCloud API Token => *****************
Enter token:
Setting SakuraCloud API Secret=> *****************
Enter secret:
Setting SakuraCloud API Service Principal ID (optional)=>
Enter service principal ID:
Setting SakuraCloud API Service Principal Key ID (optional)=>
Enter service principal key ID:
Setting SakuraCloud API Private Key PEM Path (optional)=>
Enter private key PEM path:
Setting SakuraCloud API Token Endpoint (optional)=>
Enter token endpoint:
Setting SakuraCloud Zone=>
Enter Zone[tk1a/tk1b/is1a/is1b/is1c/tk1v/all]: tk1a
Setting Default Output Type=>
Enter Default Output Type[table/json/yaml]: table
Written your settings to /root/.usacloud/default/config.json
Would you like to switch to profile "default"?(y/n) [n]: y

現時点でのマニュアルではプリンシパルについて記載がありませんが、こちらも機会があれば検証していきたいと思います。

アーカイブリストの取得を確認します。
usacloud [引数] -h で使い方などは確認できます。他の使い方なども機会があれば紹介していきたいと思います。
ひとまず今回はAPIキーが正しく登録されているか確認のために実行します。
さくらクラウド公式提供のアーカイブがずらずら並びます。

# usacloud archive list --names "AlmaLinux 9"
+------+--------------+-----------------------------------+-------------------------+--------+--------------------------------------+
| Zone | ID | Name | Tags | Scope | Description |
+------+--------------+-----------------------------------+-------------------------+--------+--------------------------------------+
| tk1a | 113502030245 | AlmaLinux 8.9 (cloudimg) | [@size-extendable ar… | shared | cloud-initを利用可能なアーカイ… |
| tk1a | 113502030251 | AlmaLinux 8.9 64bit | [@size-extendable ar… | shared | 管理ユーザ名は「root」です。\nroo… |
| tk1a | 113601439310 | KUSANAGI Business Edition 9.5(… | [almalinux9.4 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113601439346 | KUSANAGI Premium Edition 9.5(A… | [almalinux9.4 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113602242867 | KUSANAGI Business Edition 9.6(… | [almalinux9.4 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113602242889 | KUSANAGI Premium Edition 9.6(A… | [almalinux9.4 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113700541676 | KUSANAGI Business Edition 9.6…. | [almalinux9.5 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113700541692 | KUSANAGI Premium Edition 9.6.8… | [almalinux9.5 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113701601206 | KUSANAGI Security Edition 10.0… | [almalinux9.5 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113701786738 | AlmaLinux 9.6 (cloudimg) | [@size-extendable ar… | shared | <div class="lang ja"… |
| tk1a | 113701786741 | AlmaLinux 9.6 64bit | [@size-extendable ar… | shared | <div class="lang ja"… |
| tk1a | 113702569646 | KUSANAGI Business Edition 9.7…. | [almalinux9.6 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113702569753 | KUSANAGI Premium Edition 9.7.1… | [almalinux9.6 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113702569822 | KUSANAGI Security Edition 10.2… | [almalinux9.6 arch-6… | shared | <div class="lang ja"… |
| tk1a | 113703019916 | AlmaLinux 9.7 64bit | [@size-extendable al… | shared | <div class="lang ja"… |
| tk1a | 113703020354 | AlmaLinux 9.7 (cloudimg) | [@size-extendable ar… | shared | <div class="lang ja"… |
+------+--------------+-----------------------------------+-------------------------+--------+--------------------------------------+

アーカイブを取得する前の事前情報取得

いくつかオプションがありますが、必須としてバックアップを取得するディスクIDを調べる必要があります。
今回はコントロールパネルであれば、

  • 左のメニューからストレージ→目的ディスク→対象のディスク確認
  • サーバ→目的のサーバ→ディスク

APIでも同じように取得可能です。

# usacloud disk list --names XXXXXX
+------+--------------+---------------+------+-----------------------------+------+------+------------+----------------------+-------------+
| Zone | ID | Name | Tags | Server | Plan | Size | Connection | Storage | Description |
+------+--------------+---------------+------+-----------------------------+------+------+------------+----------------------+-------------+
| tk1a | XXXXXXXXXXXX | XXXXXXXXXXX | - | XXXXXXXXXXXXXX | ssd | 20GB | virtio | sac-tk1a-iscsi5-st10 | - |
+------+--------------+---------------+------+-----------------------------+------+------+------------+----------------------+-------------+

取得

事前に取得した id や任意の名前をつけて実行します。

# usacloud archive create --source-disk-id "XXXXXXXXXX" --name "sakuralab" -y

取得には時間がかかります。

[tk1a] archive/create: started…
[tk1a] archive/create: 10s elapsed
[tk1a] archive/create: 20s elapsed

~~~

デフォルトをテーブルにしているのでアウトプットの指定がなければテーブル形式で出力されます。

+------+--------------+-----------+------+-------+-------------+
| Zone | ID | Name | Tags | Scope | Description |
+------+--------------+-----------+------+-------+-------------+
| tk1a | XXXXXX | sakuralab | - | user | - |
+------+--------------+-----------+------+-------+-------------+

以下のコマンドでも確認できます。

# usacloud archive list --names "sakuralab"

何故かテーブル形式だとソースディスクが確認できませんが、json 形式などでは確認できます。
またコントールパネル上でも確認ができます。

実際にコマンドで取得できたら、あとは cron などに設定することで任意のタイミングで取得可能です。
名前やタグつけも可能です。うまく調整することで正しく取得できたかというチェックをすることも可能です。

この状態は削除処理がないため、作成されたままになります。
ローテート処理なども別途紹介できればと思っています。

ここまで読んでいただきありがとうございました。

お問い合わせ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ネットアシスト案件チーム所属
さくらのクラウド検定 2024年 第1回試験 合格済み

目次