Azure

Azure FilesをLinuxからマウントする記事

皆様、こんにちは。
在宅勤務による運動不足を解消するために縄跳びをやってみたところ、
見事にひざと足首を痛めて毎日涙目な×3です。

今回はAzure FilesをLinuxからマウントして、起動時の自動マウントまでを検証してみたいと思います。

構築自体はとても簡単なので、構築手順については割愛させていただきます。

それではやっていきましょう

事前に作成したファイル共有(kaketestshare)

事前にアクセスキーブレードからkey1のキー情報を控えておいてください。
また、ファイル共有のプロパティからURL情報を確認しておいてください。
実施環境:CentOS 7.7

まず、Linux側でマウントする要件を満たしているかを確認しましょう。
①Linuxに cifs-utils が導入されているかを確認します。

# rpm -qa | grep cifs-utils

筆者の環境ではcifs-utils-6.2-10.el7.x86_64が仮想マシンをデプロイした段階ですでに導入されていました。

②Linux側で445のポートが解放されているか?(cifsが445を使用)
Azure Filesへの接続に445番ポートを使用します。仮想マシンのFirewallやNSGで通信を制限していないか確認しましょう。

③ストレージアカウント側のFirewallで仮想マシンへの制限を掛けていないか。

上記が確認できたら事前準備です。
マウントポイント用のディレクトリを作成します。

mkdir /mnt/kakeshare

実はマウントだけであれば、もう実施は可能となっています。
以下コマンドで実際にマウントしてみましょう。

mount -t cifs //kaketeststo.file.core.windows.net/kaketestshare /mnt/kakeshare/ -o vers=3.0,username=<ストレージアカウント名>,password=<キー1の値>,serverino

コマンドの解説ですが、まず-tでcifsファイルシステムを指定、
そのあとの//kaketeststo~/kaketestshareまでがファイル共有のURLです。
で、事前に作成していたマウント先(/mnt/kakeshare)を指定します。

マウントオプションについてですが、versでSMBのバージョンを指定、username,passwordでストレージアカウントへアクセスするための資格情報を指定、serverinoはinode番号をサーバーから返却された番号を使用するためのオプションです。

そして実行後、dfコマンドを実行すると・・・

//kaketeststo.file.core.windows.net/kaketestshare 5368709120       0 5368709120   0% /mnt/kakeshare

今回指定したファイル共有がキチンとマウントされてますね。

自動マウントについては、まず/etc/fstabファイルに以下の様に記載します。

//kaketeststo.file.core.windows.net/kaketestshare /mnt/kakeshare  cifs nofail,vers=3.0,username=<ストレージアカウント名>,password=<キー1>,serverino

# <ストレージアカウント名>,<キー1>はご自身の環境のものを入力してください。

編集を保存して、そのまま以下コマンドを実行。
※事前にマウントしていた場合はアンマウントをしてから実行してくださいね。

mount -a

なにもエラーがなく、プロンプトが返ってきたらおそらくマウント成功です。
dfコマンドで確認しましょう。

//kaketeststo.file.core.windows.net/kaketestshare 5368709120       0 5368709120   0% /mnt/kakeshare

通常のマウントと同様にマウントされていることが確認できました。
これで、1度仮想マシンを再起動して再ログインしdfコマンドを実行、コマンドでマウントをした時のようにマウントされていることが確認できたら無事成功です。

いえ、無事成功ではないのです。

これでも成功は成功です、ただ無事ではないのです。

先ほどのようにfstabを記載すると、ストレージアカウント名、キー情報が丸見えです。
これでは、セキュリティ的によくありません。

というわけで、MS公式から以下が公開されています。
※以下実施にはAzure CLIが必要となります。

if [ ! -d "/etc/smbcredentials" ]; then
    sudo mkdir "/etc/smbcredentials"
fi

storageAccountKey=$(az storage account keys list \
    --resource-group $resourceGroupName \
    --account-name $storageAccountName \
    --query "[0].value" | tr -d '"')

smbCredentialFile="/etc/smbcredentials/$storageAccountName.cred"
if [ ! -f $smbCredentialFile ]; then
    echo "username=$storageAccountName" | sudo tee $smbCredentialFile > /dev/null
    echo "password=$storageAccountKey" | sudo tee -a $smbCredentialFile > /dev/null
else 
    echo "The credential file $smbCredentialFile already exists, and was not modified."
fi

長いですね。。。
こちら、何をするためのものかというと、/etc配下にsmbcredentialsというディレクトリを作成、さらにその配下に<ストレージアカウント名>.credというファイルを作成して、そのファイルにストレージアカウント名とキー情報を記載する、というものです

$resourceGroupName,$storageAccountName,$storageAccountKeyはあらかじめ該当する情報を代入しておいてください。

そして、上のものをそのままコピペで実行すると、/etc/smbcredentials/<ストレージアカウント名>.credが作成されます。

その後、<ストレージアカウント名>.credファイルのパーミッションを

chmod 600 $smbCredentialFile

で600に設定するのを忘れずに実施しましょう。設定していないと、他のユーザーから資格情報が確認できてしまいます。(デフォルトだと644)

さて、ここまで来たらあと少しです。

再度、/etc/fstabを編集します。

//kaketeststo.file.core.windows.net/kaketestshare /mnt/kakeshare  cifs nofail,vers=3.0,credentials=/etc/smbcredentials/kaketeststo.cred,serverino

マウントオプションのcredentialsで作成したcredファイルを指定しています。
では再度mount -aを実行してみましょう。

エラーが特になく、dfコマンドでマウントされていることが確認できたら設定完了です。

補足

先ほど、資格情報ファイルの作成コマンドはAzure CLI必須と記載していましたが、
このファイル、フォーマットは以下の様になっています。

username=<ストレージアカウント名>
password=<キー1の値>

実はこのファイル、情報を直入力しても作成できるので、Azure CLI導入が面倒な方はこちらの手段もよいかもしれません。

また、ストレージアカウントのアクセスキーを更新した場合、即時にマウント解除されましたので、
アクセスキーを更新した際は、credファイルを再作成するか、キーの値を直接修正するか対応が必要となります。

まとめ

今回はAzure FilesをLinuxからマウントして、自動マウントまでを検証してみました。

はい、書いてて気づきました。Linux要素多めでした。
次回はきちんとAzure要素たっぷりな記事をお届けできればと思います。

今回も最後まで読んでいただきありがとうございました。

参考記事

Linux で Azure Files を使用する
https://docs.microsoft.com/ja-jp/azure/storage/files/storage-how-to-use-files-linux

SMB を使用して Linux VM に Azure File Storage をマウントする
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/mount-azure-file-storage-on-linux-using-smb

L7 負荷分散 Azure Application Gateway について:2回目前のページ

AzureのDMSでデータを移行してみる記事 ~MySQL編~次のページ

関連記事

  1. Azure

    Azure 資格試験の更新(2020年版)

    2020年になり、早くも Azure 資格試験の更新がありま…

  2. Azure

    Azure Site Recoveryの課金について

    少々わかりにくい、Azure Site Recovery の…

  3. Azure

    Runbookで管理タスクを自動化する。

    1.はじめに初めまして、Cloud Engineerの曽我で…

  4. Azure

    strongSwanを使ってP2S接続をする記事~CentOS編~

    皆様こんにちは。朝一で白シャツにコーヒーをこぼした日のモチベーション…

  5. Azure

    Azure ポイント対サイトの証明書作成

    ポイント対サイト VPN 接続を構成する際の証明書生成につい…

  6. Azure

    Azureクラシックリソース(Azure Service Management)VMの廃止について

     こんにちは。三醍醐です。 先日、クラシックVMが2023年…

関連記事

  1. Azure

    Azure 資格試験の更新(2020年版)
  2. Azure

    Runbookで管理タスクを自動化する。
  3. Azure

    Azure FilesをLinuxからマウントする記事
  4. Azure

    Azure AD Connectの構築トラブルメモ
  5. 未分類

    「Azure Functions」をC#で触ってみました。#5
PAGE TOP