Cloud-initをWindowsで使ってみる。

投稿者: | 1月 21, 2025

体調が絶不調。というか背中がめちゃ痛い。何をしててもいたい。整体に行った。背中の骨が何個が歪んでて、前方の胸に圧力をかけててもこっとしている様子。そりゃ痛いだろうということで直してもらった。あと、踵の骨もずれていて、踵痛くない?と。実は2ヶ月くらいいたい。それも直してもらった。どうやら、いろんなところの骨が歪んでいるらしく、修理?に普段の倍の時間がかかった。まだ炎症していたところは痛いが、痛みの質が全然違う。

なんやかんやで体、ボロボロだったのね。

 

閑話休題

 

今度は、WIndowsでCloud-initを使ってみる。

参考にさせていただいたページは、以下。以下に書かれているようにやればいい。

以上ではなく。。。いくつか追記。

 

注意点

  • サポートOSを確認したほうがいい。Windows 11 / Windows Server 2025はまだうまく動かない。実際、Windows Server 2025で動かすと、うまく行ったり、うまくいかなかったり

            サポートOSは以下に書かれている。

  • タネのOSを作る時、リカバリパーティションなどは先頭に持っていった方がいい。先頭に持っていっておくと、展開時にディスクサイズを増やしたとき、起動時にディスクを最大化してくれる。

            先頭に持っていく方法は、https://www.blog.slow-fire.net/2022/08/19/windows-server-2022でvmを作るとディスク拡張ができない%E3%80%82/

 

コメント

リンク先やWebを見ていると以下の画面を開きっぱなしにして、設定するようにと書かれている。

よくみると、Sysprepしてシャットダウンをすると書いていある。これは、

C:\Proaram Files\Cloudbase Solutions\Cloudhase-init\confにあるUnattend.xmlを利用したsysprepである。

要するにConfディレクトリで、

%systemroot%\system32\sysprep\sysprep.exe  /generalize /oobe /shutdown /unattend:"Unattend.xml"

してあげればいい。これがめんどくさい、わからない人は、リンクの通りにやればいい。よって、後でこの画面の作業が実行できるので、チェックをオフにしてFInishをクリックしても問題ない。

自分はUnattend.xmlを書き換えて、Rearm countが増えないように、プロファイルをコピーをする記述をいれたがちゃんと動いた。

 

設定ファイルは以下

  • cloudbase-init.conf:設定ファイル
  • cloudbase-init-unattend.conf: sysprep時に参照される設定ファイル
  • Unattend.xml:Sysprepに使うファイル

 

以下を実行した。パスワードは、OSのパスワード要件に合わせる必要がある。govcが使える前提。

USERDATAFILE=userdata-windows.yaml
METADATAFILE=metadata-windows.yaml
cat << EOF > ${USERDATAFILE}
#cloud-config
write_files:
- encoding: gz+b64
content: H4sIAAAAAAAAAytJLS4x5AIAGzdZfAYAAAA=
path: C:\\vmware-guestinfo-cloudinit-datasource.txt
EOF

cat << EOF > ${METADATAFILE}
instance-id: windows2022-1
local-hostname: windows2022-1
admin-password: passwordTemp1234
EOF

USERDATA=$(gzip -c9 <${USERDATAFILE} | { base64 -w0 2>/dev/null || base64; })
METADATA=$(gzip -c9 <${METADATAFILE} | { base64 -w0 2>/dev/null || base64; })

source ~/govc-vcenter.sh
VM_NAME=Win-cloud-init1


govc vm.change -vm "$VM_NAME" \
-e guestinfo.userdata="${USERDATA}" \
-e guestinfo.userdata.encoding="gzip+base64"
govc vm.change -vm "$VM_NAME" \
 -e guestinfo.metadata="${METADATA}" \
 -e guestinfo.metadata.encoding="gzip+base64"
govc vm.power -on ${VM_NAME}

仮想マシンにデータを付与したので、ISOイメージなどのマウントは不要。何度か再起動すると立ち上がる。

ちなみに、ユーザデータ、メタデータを入れないでも、ディスクは最大まで拡張されている。(Linuxだとデータがないと拡張されない。)

Sysprepの代わり(結果としてSysprepはしているが)として、使えることがわかった。便利。

 

ただ、「どこに書いてあったんですか、誰が言ったんですか?、サポートされていますか?」勢の人にはおすすめできないが。

コメントを残す