仮想マシンに Azure Files をドライブとしてマウントする際には、 Azure Files を接続するコマンドをAzureポータルから取得して、仮想マシンのOS内でそのコマンドを実行させる必要があります。
このとき仮想マシンのシリアルコンソールを利用すると仮想マシンにログインすることなく設定できるのではないかと思い、試してみました。
あわせて仮想マシンを再起動したあとにも自動的に再接続されるようになっているのかについても調べてみました。
シリアルコンソールを利用してAzureファイルを接続する方法
以下の流れで実施していきます
1.Azureポータル上で接続コマンドを取得
ファイル共有を作成したストレージアカウントから[ファイル共有]のページを開き、接続したいファイル共有の右側の[…]をクリックし、続けて[接続]をクリックします、
ポップアップが表示されるので、利用したいドライブを選択して、powershellコマンドをコピーします。
コマンドの取得は以上です。
2.シリアルコンソールでコマンドを実行
コマンドを実行する前に「ブート診断の設定」だけ確認してください。
[参考] もしシリアルコンソールが利用できない状態であった場合
もしシリアルコンソールを開いた際に「カスタムブート診断ストレージアカウントを使用する必要があります」などと以下のような画面が出てきた場合には、ブート診断設定を変更する必要があります。
記事の下部「[参考] 仮想マシン作成後にブート診断をカスタムストレージアカウント利用に変更する」で手順を載せているので参考にしてください。
シリアルコンソールでコマンドを実行
仮想マシンの画面から[シリアルコンソール]を開くとコンソールが表示されます。
少し待つとSACのコマンド画面が表示されるので以下の順番でコマンドを入力し、コマンドプロンプトを開きます。
#コマンドプロンプトのチャネルを作成
cmd
#コマンドプロンプトのチャネルが何番かを検索
ch
#上記の確認結果をもとにコマンドプロンプトのチャネルへ移動(今回はチャネル「1」であった)
ch -si 1
ちなみにSACとは [Special Administration Console] の略です。
上記の入力が終わると、以下の画面が出てくるので[Enter]を押して次に進みます。
「ユーザ名」「ドメイン」「パスワード」が求められるので、仮想マシン作成時に指定したユーザ名とパスワードを入力します。
ドメインは参加してなければ空欄(何も押さずにEnter)でOKです。
すると見覚えのあるコマンドプロンプトの画面が表示されますので「powershell」と入力してpowershellを開きます。
シリアルコンソールへの値の貼り付けの方法は「右クリック⇒貼り付け」もしくは、[Shift]+[Ctrl]+[V]で貼り付けが可能です。
上記の「Azureポータル上で接続コマンドを取得」で取得したコマンドを入力していきますが、ここで単に貼り付けを行うとエラーとなります。
理由はTest-NetConnectionのコマンドがエラーになるからです。
エラーの理由は分かりませんが、同じコマンドを仮想マシンの中で実行したらエラーにはならなかったので、シリアルコンソール特有の制限があるのかもしれません。
ちなみにpowershellのコマンドを張り付ける際には、2つ連続で続く文字が3つ連続で続く文字に変換されます。
下部の「シリアルコンソールでpowershellを利用して値を張り付ける際の挙動には注意が必要」にもまとめていますが、その点も注意してください。
上記Test-NetConnectionのコマンドがエラーとなるので、その結果を利用したif文も機能しませんので、先ほどコピーしたコマンドの中のif文の中身の部分だけを実行していきます。
「cmdkey」コマンドは[cmd]と入力して、コマンドプロンプトに戻してから実行します。
[CMDKEY: Credencial added successfully]と出力されればOKです。
再度[powershell]と入力してpowershellを起動してから「New-PSDrive」コマンドを実行します。
コマンドが実行出来たら最後に「Get-PSDrive」コマンドでドライブがマウントされているかどうかを確認します。
Zドライブがあることが確認できました。
これでシリアルコンソールを利用してAzureファイルを接続する方法は以上になります。
仮想マシン再起動後も接続が維持されているかを確認する
シリアルコンソールをAzureファイルを接続できることは確認できましたが、仮想マシンが再起動しても接続が維持されているか、についても確認していきます。
確認もシリアルコンソールを利用して確認します。
流れとしては以下の通りです。
- 仮想マシンを再起動
- シリアルコンソールでドライブを確認
仮想マシンを再起動
シリアルコンソール上部にも再起動ボタンがあるのでそちらを利用して再起動しても構いません。
アクティビティログに再起動のログとして出てきていたので、Azureポータル上で「再起動」を押す行為と同じかと思います。
シリアルコンソールでドライブを確認
「シリアルコンソールでコマンドを実行」の手順と同じようにpowershellを開き「Get-PSDrive」を実行します。
確認してみると、Zドライブが表示されません。
再起動後は接続が維持されないのか?と思いましたが、仮想マシンにOSログインして確認してみたところ、なんと接続されていました。
このフォルダにファイルを置くこともできたので正常に機能しています。
結果としても少しもやもやした感じですが、シリアルコンソール上では確認できないが、仮想マシン再起動後も接続を維持することは可能でした。
[参考] 仮想マシン作成後にブート診断をカスタムストレージアカウント利用に変更する
シリアルコンソールを利用するためにはブート診断設定を「カスタムストレージアカウント」で有効化する必要があります。
仮想マシンを作成する際にも選択できますが、デフォルトでは「マネージドストレージアカウントで有効」となっているので、もしデフォルト設定で仮想マシンを作成してしまった場合には変更してください。
ブート診断をカスタムストレージアカウント利用に変更する
仮想マシンの画面の[ブート診断]を開き、[設定]をクリックします。
設定画面が出てくるので[カスタムストレージアカウントで有効にする]にチェックを入れて、ストレージアカウントを指定し、上部の「保存」をクリックすれば完了です。
気づいたこと
シリアルコンソールでpowershellを利用して値を張り付ける際の挙動には注意が必要
シリアルコンソールの扱いに苦戦したので書き残しておきます。
最初powershellを実行するところまではスムーズにいったのですが、いざAzureファイルをマウントするコマンドを入力したらエラーとなりました。
エラーの詳細を細かく見ていくうちに、入力したはずのコマンドが少しおかしくなっている、正確には「2つ連続で続く文字は3つ連続で続く文字になっている」ということに気づきました。
例えば「connection」が「connnection」になってしまっているなどです。
なので貼り付けをする際にはコマンドを張り付けた後に、これらの重複個所を訂正する必要があるのでそれがとてもめんどくさいと感じました。
もしかしたら重複しない張り付け方法などがあるのかもしれませんので、少し調べてみたいと思います。
ちなみにシリアルコンソール上でのコマンドプロンプトへの貼り付けに対しては上記のような事象は発生しませんでした。