LoginSignup
4
1

More than 1 year has passed since last update.

さくらのクラウドのWindows Serverプランでcloud-initを使ってIP設定とログインパスワードを変更する

Posted at

cloud-initはサーバの初期設定を自動化する仕組みです。

cloud-initは多くのクラウドサービスで利用可能で、さくらのクラウドでも利用できるようになりました。

きっかけ

さくらのクラウドでWindows Serverにミドルウェアをプリインストールしてディスクからアーカイブを作成し、サーバを複製するような使い方をしようとしました。
しかし、ネットワーク情報の書き換え(IPアドレス等)とAdministratorのパスワード変更などを手動でする必要がありました。
そこでcloud-initが利用できないか試してみようと思い、検証してみました。

cloud-initが利用できるアーカイブイメージを作成する

提供されているWindows Serverのパブリックアーカイブはcloud-initに対応していないので、対応したアーカイブイメージを作成します。
対応したイメージを作成するために一旦サーバを作成します。

1. Windows Serverプランのサーバを作成する

さくらのクラウドにログインしコントロールパネルからサーバとディスクを作成します。
選択できるディスク容量はWindowsの場合100GBからになります。

サーバが作成されるまでしばらく待ちます。

2. 初期設定を行う

さくらのクラウドのコントロールパネルから作成したサーバを開き、コンソールからWindowsの初期設定を行います。
パスワードの設定まで完了すると、リモートディスクトップ接続ができるようになります。

3. 作成したサーバにリモートディスクトップ接続を行う

リモートディスクトップクライアントから接続を行います。
筆者はMacを使っているので、 Microsoft Remote Desktop for Mac をよく利用します。

さくらのクラウドのコントロールパネルからサーバのIPアドレスを確認し、
ユーザは、Administrator パスワードは初期設定で指定したパスワードを入力し接続します。

4. cloudinit-baseをWindows Serverにインストールする

Windows Serverでcloud-initを有効にするために、cloudinit-baseというソフトウェアをインストールします。
こちらからダウンロードできます。

Windows Server上でダウンロードするためにはセキュリティの設定を一時的に以下の手順で変更する必要があります。

  1. スタートメニューからサーバマネージャーを起動
  2. 左側メニューの ローカル サーバー を選択
  3. 右側に表示されている項目の中から、 IE セキュリティ強化の構成 を選択
  4. ダイアログが表示され、 Administrator グループUsers グループオフ を選択しOKをクリック

変更後、Internat Explorerを開き https://cloudbase.it/cloudbase-init/ にアクセスします。

インストーラーは複数存在しますが、 Stable Cloudbase-Init x64 を選択します。

実行をクリックします。
スクリーンショット 2022-05-25 11.40.09.png

Nextをクリック
2.PNG
チェックし、Nextをクリック
3.PNG
Nextをクリック
4.PNG
Serial port for loggingでCOM1を選択
Run Cloudbase-Init service as LocalSystemをチェック
Nextをクリック
5.PNG
Installをクリック
6.PNG
待ちます
7.PNG
このままFinishをクリック
8.PNG

5. cloudbase-initの設定を行う

ファイルの作成と設定ファイルの変更を行います。
手動での手順も説明していますが、PowerShellでこれらの作業を自動で行えるようにしました。
以下からps1ファイルをダウンロードしていただき、実行してください。
https://raw.githubusercontent.com/tar-xzvff/sacloud-cloudbase-init/main/cloudbase-init.ps1

手動の手順

以下のディレクトリにファイルを作成します。
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\site-packages\cloudbaseinit\metadata\services\sakuracloudservice.py

リンク先の内容をコピーしてファイルを作成します。
このファイルはさくらのクラウドが提供するmeta-dataを元にネットワーク設定情報を生成するPythonのコードです。
https://raw.githubusercontent.com/tar-xzvff/sacloud-cloudbase-init/main/sakuracloudservice.py

以下の設定ファイルの内容を変更します。
C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf

リンク先の内容をコピーして変更します。
https://raw.githubusercontent.com/tar-xzvff/sacloud-cloudbase-init/main/cloudbase-init.conf

以上でcloud-initを使う準備が整いました。

6. サーバをシャットダウンする

シャットダウンします。

7. ディスクからアーカイブを作成する

cloudbase-initをインストールしたサーバのディスクからアーカイブを作成します。
手順は以下のリンクになります。

作成したアーカイブをサーバ作成時に指定するとでcloud-initに対応したWindowsServerのサーバを作成することが可能です。

cloud-initを動かしてみる

作成したアーカイブから新たにサーバを作成しても良いですが、ここでははじめに作成したサーバでcloud-initを動かしてみます。

さくらのクラウドのAPIでサーバの起動リクエスト時に UserBootVariables.CloudInit.UserData を指定することでサーバに対してmeta-dataとuser-dataが渡されてそれに従ってcloud-initが動作します。
https://developer.sakura.ad.jp/cloud/api/1.1/server/#put_server_serverid_power

パスワードを変更する場合(P@assWordにする)

curl -i -X PUT \
   --user 'Access token':'Access token secret' \
   -H "Content-Type:application/json" \
   -d \
'{
  "UserBootVariables": {
    "CloudInit": {
      "UserData": "#ps1_sysnative \r\n $HostName = hostname \r\n [ADSI]$UpdateUser = \"WinNT://$HostName/Administrator,User\" \r\n $UpdateUser.SetPassword( \"P@assWord\" ) \r\n $UpdateUser.SetInfo()"
    }
  }
}' \
 'https://secure.sakura.ad.jp/cloud/zone/<ゾーン>/api/cloud/1.1/server/<サーバのリソースID>/power'

ホスト名を変更する場合(cloudbase-init-test.example.comに変更する)

curl -i -X PUT \
   --user 'Access token':'Access token secret' \
   -H "Content-Type:application/json" \
   -d \
'{
  "UserBootVariables": {
    "CloudInit": {
      "UserData": "#cloud-config \r\n set_hostname: cloudbase-init-test.example.com"
    }
  }
}' \
 'https://secure.sakura.ad.jp/cloud/zone/<ゾーン>/api/cloud/1.1/server/<サーバのリソースID>/power'

起動するとフル コンピューター名がset_hostnameで指定した値になっています。
9.PNG

注意点

ホスト名を変更をした後にログインしようとしたところパスワードが異なるようでログインできませんでした。
そのため、パスワードを変更 -> シャットダウン -> ホスト名を変更 という流れで動作確認をしました。
1回cloud-initからパスワード設定が必要なのかなと思いました。
この辺りはcloudbase-initのドキュメントなどを読みながら動きを今後理解したいと思います。

参考させていただいたWebサイト等

https://intl.cloud.tencent.com/jp/document/product/213/32364
https://manual.iij.jp/p2/pub/f-1-3.html

4
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
4
1