概要
さくらのクラウド用の公認CLIクライアント usacloud を使って、
CLIからサーバを作成したり、作成したサーバのスペックを変更したり、スイッチと接続したりする。
準備
- usacloudのインストールは終わっていてAPIキーの設定も済んでいる
まだの人は 公式ドキュメントのこのページ を見て実施しておく
作りたいサーバの設定を記載したjsonのベースを生成する
公式のドキュメントを見ながら書いてもいいけど、
usacloud server create --example
を実行すると
設定例を出力してくれるのでこれをベースにやっていく。
まず、 usacloud server create --example >> global.json
を実行してファイルを生成しておく。
インターネットにのみ接続されたサーバを作る
global.json を以下の感じに修正する。
{
"Zone": "is1b",
"Name": "testme",
"Tags": [
"tag1",
"tag2",
"temp"
],
"CPU": 1,
"Memory": 1,
"GPU": 0,
"Commitment": "standard",
"Generation": "default",
"InterfaceDriver": "virtio",
"BootAfterCreate": true,
"NetworkInterfaces": [
{
"Upstream": "shared"
}
],
"Disks": [
{
"DiskPlan": "ssd",
"SizeGB": 20,
"OSType": "ubuntu2004",
"EditDisk": {
"HostName": "testme",
"Password": "superhimitsustring"
}
}
],
"NoWait": false
}
以下のコマンドを実行してサーバを作る。
usacloud server create -y --parameters global.json
# 以下実行結果
[is1b] server/create: started...
[is1b] server/create: 10s elapsed
[is1b] server/create: 20s elapsed
(後略)
コントロールパネルを見ると以下の感じでサーバが作られている。(画像は割愛しているがディスクも作られている。)
作成したサーバを確認する
方法は幾通りかあるけれども、とりあえずここでは2通りのやりかたを記載する。
- 既存のサーバもまとめて一覧で表示する
usacloud server ls
# 以下実行結果
+------+--------------+---------------------+------------------+-----+--------+-----+--------------------+----------------+----------------+----------------+
| Zone | ID | Name | Tags | CPU | Memory | GPU | IPAddress | Upstream(Mbps) | InstanceStatus | InstanceHost |
+------+--------------+---------------------+------------------+-----+--------+-----+--------------------+----------------+----------------+----------------+
| is1b | 119999250561 | myvpn | - | 1 | 1 | 0 | 999.999.999.999/24 | shared/100 | up | sac-is1b-sv453 |
| is1b | 188209999113 | golang_django_train | - | 1 | 1 | 0 | 192.168.1.14/24 | switch/1000 | down | - |
| is1b | 999900463618 | container01 | - | 1 | 2 | 0 | 192.168.1.10/24 | switch/1000 | up | sac-is1b-sv722 |
| is1b | 999900584997 | temp_usacloud | - | 1 | 1 | 0 | 999.999.999.998/24 | shared/100 | up | sac-is1b-sv499 |
| is1b | 999900815646 | testme | [tag1 tag2 temp] | 1 | 2 | 0 | 777.777.777.777/24 | shared/100 | up | sac-is1b-sv541 |
+------+--------------+---------------------+------------------+-----+--------+-----+--------------------+----------------+----------------+----------------+
- 名前で絞り込む
usacloud server read testme
# 以下実行結果
+------+--------------+--------+------------------+-----+--------+-----+--------------------+----------------+----------------+----------------+
| Zone | ID | Name | Tags | CPU | Memory | GPU | IPAddress | Upstream(Mbps) | InstanceStatus | InstanceHost |
+------+--------------+--------+------------------+-----+--------+-----+--------------------+----------------+----------------+----------------+
| is1b | 999900815646 | testme | [tag1 tag2 temp] | 1 | 2 | 0 | 777.777.777.777/24 | shared/100 | up | sac-is1b-sv541 |
+------+--------------+--------+------------------+-----+--------+-----+--------------------+----------------+----------------+----------------+
ちなみにどちらの方法でも --output-type json
をつけるとjsonの形で出力してくれる。
スペックをアップしてみる
以下のコマンドを実行するとサーバのシャットダウンとスペックアップとサーバの起動が行われる。
# testme の部分はサーバのIDやコントロールパネル上の名前、tagでもOK
usacloud server update --memory 2 testme
コントロールパネルからだとサーバをシャットダウンして、スペックを変更して、サーバを起動してと
それぞれ操作しないといけないけどusacloudを使うとひとまとめで実行してくれるので便利。
作ったサーバを削除する
削除しよう。削除する場合はシャットダウンしてから削除するというプロセスが必要。
以下の2つのコマンドを実行する。
usacloud server shutdown -y testme
usacloud server delete -y --with-disks testme
delete 実行時に--with-disksをつけないとディスクは削除されないので注意。
スイッチに接続するサーバを作成する
まずはスイッチを作成してそのIDを控える。
usacloud switch create -y --name testme_sw
# 以下実行結果
------+--------------+-----------+------+-------------+--------+
| Zone | ID | Name | Tags | Description | Type |
+------+--------------+-----------+------+-------------+--------+
| is1b | 999900818888 | testme_sw | - | - | switch |
+------+--------------+-----------+------+-------------+--------+
実行結果から作成したスイッチのIDは 999900818888 だと確認できる。
global.jsonを以下のように編集してlocal.jsonとして保存する。
{
"Zone": "is1b",
"Name": "testme",
"Tags": [
"tag1",
"tag2",
"temp"
],
"CPU": 1,
"Memory": 1,
"GPU": 0,
"Commitment": "standard",
"Generation": "default",
"InterfaceDriver": "virtio",
"BootAfterCreate": true,
"NetworkInterfaces": [
{
"Upstream": "999900818888",
"UserIPAddress": "192.168.1.99"
}
],
"Disks": [
{
"DiskPlan": "ssd",
"SizeGB": 20,
"OSType": "ubuntu2004",
"EditDisk": {
"HostName": "testme",
"Password": "superstring",
"EnableDHCP": false,
"IPAddress": "192.168.1.99",
"NetworkMaskLen": 24,
"DefaultRoute": "192.168.1.254"
}
}
],
"NoWait": false
}
変更している部分は
- NetworkInterfaces で接続するスイッチのIDを指定している。
IPアドレスはサーバの設定ではなくコントロールパネルに表示されるIPの設定値 - EditDisk
の部分。
続いて以下のコマンドを実行してサーバを作成する。
usacloud server create -y --parameters local.json
処理が完了した後にコントロールパネルのマップを見ると
以下の様にサーバが作成されてスイッチに接続されていることが分かる。
リモートコンソールでサーバの設定を確認すると以下のように設定されていることが確認できる。
以下のコマンドを実行してサーバとディスクは削除する。
usacloud server shutdown -y testme
usacloud server delete --with-disks -y testme
インターネットとスイッチの両方に接続するサーバを作成する
global.jsonを以下のように編集してlocalAndGlobal.jsonとして保存する。
{
"Zone": "is1b",
"Name": "testme",
"Tags": [
"tag1",
"tag2",
"temp"
],
"CPU": 1,
"Memory": 1,
"GPU": 0,
"Commitment": "standard",
"Generation": "default",
"InterfaceDriver": "virtio",
"BootAfterCreate": true,
"NetworkInterfaces": [
{
"Upstream": "shared"
},
{
"Upstream": "999900818888",
"UserIPAddress": "192.168.1.99"
}
],
"Disks": [
{
"DiskPlan": "ssd",
"SizeGB": 20,
"OSType": "ubuntu2004",
"EditDisk": {
"HostName": "testme",
"Password": "himitsuhimitsu"
}
}
],
"NoWait": false
}
変更している部分は
- NetworkInterfaces でUpstreamの記述が2つある
の部分。
以下のコマンドを実行してサーバを作成する。
usacloud server create -y --parameters localAndGlobal.json
処理が完了した後にコントロールパネルのマップを見ると
インターネットとスイッチのそれぞれに接続されている事が分かる。
が、スイッチに接続されコントロールパネル上ではローカルのIPアドレスも表示されているが、
あくまでコントロールパネルの表示のみで、サーバにはIPアドレスの設定はされていない状態になっている。
jsonのDisksの部分でIPアドレスを指定したとしても反映されないため、サーバへの設定は別途手立てが必要。
一方で、グローバルのIPはサーバにちゃんと設定されている。
最後に以下のコマンドでスイッチとサーバとディスクを削除する。
usacloud server shutdown -y testme
usacloud server delete --with-disks -y testme
usacloud switch delete -y testme_sw
おわり