sacloud / usacloud

usacloud:rabbit: : CLI client for the Sakura Cloud:cherry_blossom::cloud:
Apache License 2.0
53 stars 13 forks source link

interface-add-for-switch を同一サーバーに複数回行うと、IPアドレスの設定がされない #268

Closed xenophy closed 6 years ago

xenophy commented 6 years ago
    usacloud server interface-add-for-switch \
        --ipaddress 10.0.0.1 \
        --nw-masklen 24 \
        --switch-id xxxxxxxxx \
        --assumeyes \
        "Target Server"

    usacloud server interface-add-for-switch \
        --ipaddress 10.0.1.1 \
        --nw-masklen 24 \
        --switch-id yyyyyyyyy \
        --assumeyes \
        "Target Server"

NICを複数さして、スイッチに接続すると、yyyyyyyyyのNICに設定されるIPアドレス「10.0.1.1」が設定されず、xxxxxxxxxへ接続されているNICのIP「10.0.0.1」が「10.0.1.1」に上書きされてしまいます。

3回、4回やっても対象のNICにIPは設定されず、先頭のスイッチのIPアドレスが書き換わってしまいます。

yamamoto-febc commented 6 years ago

IPアドレスの設定はさくらのクラウド側の「ディスクの修正」という機能を利用しています。 「ディスクの修正」では最初のNIC(eth0など)のみが対象となっており、 2番目以降のNICヘのIPアドレス設定はスタートアップスクリプトやAnsibleなどのツールを用いて自前でプロビジョニングする必要があります。

https://manual.sakura.ad.jp/cloud/storage/modifydisk/about.html#ip

なお、usacloud server interface-add-for-switchでは複数個NICを追加するときのために--without-disk-editというオプションを用意しています。このオプションは「ディスクの修正」をスキップするためのもので、複数個NICを追加した際にディスクの修正で最初のNICのIPアドレスが変更されてしまうことを防ぐためのものです。

複数個NICを追加する場合はこの--without-disk-editオプションを指定してNICを追加した上で自前でプロビジョニングをおこなってください。

FYI: 以下はTerraform for さくらのクラウドの例ですが、サーバにNICを追加しプライベートIPを割り当てる例です。 https://github.com/yamamoto-febc/teratail-sakuracloud-terraform-examples/blob/master/03_basic02/sakura.tf#L57-L61

xenophy commented 6 years ago

ご回答ありがとうございました。 --without-disk-edit でNICだけ差して、スタートアップスクリプト/Ansible等で設定する形ですね。 RESTの「ディスクの修正」が対応してなければできませんよね...

ありがとうございました。