LoginSignup
5
1

More than 1 year has passed since last update.

usacloudを使ってさくらのクラウドでサーバを作ったりスペックを変更したりスイッチと接続したりする

Last updated at Posted at 2022-05-05

概要

さくらのクラウド用の公認CLIクライアント usacloud を使って、
CLIからサーバを作成したり、作成したサーバのスペックを変更したり、スイッチと接続したりする。

準備

作りたいサーバの設定を記載した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
        (後略)

コントロールパネルを見ると以下の感じでサーバが作られている。(画像は割愛しているがディスクも作られている。)
server1.png

作成したサーバを確認する

方法は幾通りかあるけれども、とりあえずここでは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 

処理が完了した後にコントロールパネルのマップを見ると
以下の様にサーバが作成されてスイッチに接続されていることが分かる。

local1.png

リモートコンソールでサーバの設定を確認すると以下のように設定されていることが確認できる。

image.png

以下のコマンドを実行してサーバとディスクは削除する。

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 

処理が完了した後にコントロールパネルのマップを見ると
インターネットとスイッチのそれぞれに接続されている事が分かる。
loAndglo1.png

が、スイッチに接続されコントロールパネル上ではローカルのIPアドレスも表示されているが、
あくまでコントロールパネルの表示のみで、サーバにはIPアドレスの設定はされていない状態になっている。
jsonのDisksの部分でIPアドレスを指定したとしても反映されないため、サーバへの設定は別途手立てが必要。
一方で、グローバルのIPはサーバにちゃんと設定されている。

最後に以下のコマンドでスイッチとサーバとディスクを削除する。

usacloud server shutdown -y testme
usacloud server delete --with-disks -y testme
usacloud switch delete -y testme_sw

おわり

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1