社会人2年目になりました。
上司のサポートをいただきながら案件に取り組んでおり、その過程で得られた知見を記事にまとめて共有しようと思います。
はじめに
案件にて、Azure VM に SSMS (SQL Server Management Studio) を追加インストールするようにと依頼がありました。
Download SQL Server Management Studio (SSMS) | Microsoft Learn
既に 2 台の VM にはインストール済みだったのですが、今回の依頼で担当している全てのVMに入れる必要が出てきました。
途中から案件に入った私にとっては、 この作業経験が初めてだったので苦労しました。今回の作業で遭遇した問題点と解決策をまとめて記事にしてみようと思います。
今回の作業で使う SSMS のインストーラーですが、以前インストールした時と同じバージョンのもの(ローカルに保存済み)を使うことになりました。 ローカル PC にある SSMS-Setup-JPN.exe を Azure VM へコピー&ペーストを試したところ、まさかのエラーが発生。
えーなんでだろ、何かの設定してないのかな?と迷っていると公式リファレンスでこんな記述見つけました。
Windows 仮想マシンとの間のコピーと貼り付け: Azure – Azure Bastion | Microsoft Learn
なんと、ファイル転送はサポートされていないことが判明しました。
今回は気を取り直して、別の方法を試すことにしました。
Azure Storage 経由で SSMS インストーラーを VM に転送しインストール作業を完了できましたので、その手順について解説します。
前提条件
次の項目を事前に作成する。
- Azure Bastionがデプロイされた仮想ネットワーク
- 仮想ネットワークにデプロイされたAzure VM
作成できたらBastion経由で接続できることを確認。
ちなみにローカルからコピペしようとすると右下に表示されます。
ローカルからのファイル転送
VMにAzure CLIをインストール
“https://azcliprod.blob.core.windows.net/msi/azure-cli-2.58.0-x64.msi”
VMのブラウザにこのurlをコピペしてインストールします。(テキストはコピペ可能)
その後PowerShellでazコマンド打つと確認できます。
適当なストレージアカウントを作成しファイルをアップロード
まずストレージアカウントを作成します。
サイドバーにあるデータストレージ/コンテナーからコンテナー作成し、ファイルをアップロードでき完了。
VMにストレージアカウントに対する権限を付与(ストレージBLOB共同作成者)
ストレージアカウントに対する権限付与は、以下記事を参考にさせていただきました。
AzureシステムマネージドIDを使ったVM→Blobへのアップロード #Azure – Qiita
Azure VM上でポータルログインできないように認証の設定がされているので、マネージドID利用する方法を選びました。
VM上でコマンド実行
Powershell ではなくコマンドプロンプトを使用します。
<認証>
az login --identity
<ダウンロード実行>
az storage blob | Microsoft Learn
az storage blob download --container-name コンテナ名 --name ファイル名 --file ダウンロード先パス\ファイル名 --account-name ストレージアカウント名 --auth-mode login
こちらを利用して、
az storage blob download --container-name ssmsexefile --name SSMS-Setup-JPN.exe --file C:\Users\tomioka-test01\Downloads\SSMS-Setup-JPN.exe --account-name tomiokasqlserver20250325 --auth-mode login
–container-name
VMのダウンロードフォルダに転送完了しました。
これでやっとSSMSをインストールできます。あとはexeファイル実行するだけです。
感想
そもそもなぜファイルのコピペはサポートされていないのでしょうか?
セキュリティの問題なのか、ビジネス的に採算とれないからなのか…。
様々な推察はできますが、なかなか確定したことは分からないです。
社会人2年目は、こういった疑問を自分で解決することを目標に頑張ろうと思います。