Azure Lab Services で外部ファイル ストレージを使用する

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

この記事では、Azure Lab Services で外部ファイル ストレージを使用するためのいくつかのオプションについて説明します。 Azure Files では、SMB 2.1 と SMB 3.0 を介してアクセスできるクラウド内のフル マネージド ファイル共有を提供します。 Azure Files 共有は、仮想ネットワーク内でパブリックまたはプライベートで接続できます。 また、ファイル共有への接続にラボ ユーザーの Active Directory 資格情報を使用するように共有を構成することもできます。 Linux マシンを使用している場合は、Azure Lab Services での外部ファイル ストレージに、NFS ボリュームを含む Azure NetApp Files を使用することもできます。

使用するソリューション

次の表に、各外部ストレージ ソリューションの重要な考慮事項を示します。

解決策 知っておくべき重要なこと
パブリック エンドポイントを使用した Azure Files 共有
  • すべてのユーザーに読み取り/書き込みアクセス権があります。
  • 仮想ネットワークのピアリングは必要ありません。
  • ラボ VM だけでなく、すべての VM からアクセスできます。
  • Linux を使用している場合、ラボ ユーザーはストレージ アカウント キーにアクセスできます。
プライベート エンドポイントを使用した Azure Files 共有
  • すべてのユーザーに読み取り/書き込みアクセス権があります。
  • 仮想ネットワークのピアリングが必要です。
  • ストレージ アカウントと同じネットワーク (またはピアリングされたネットワーク) 上の VM にのみアクセスできます。
  • Linux を使用している場合、ラボ ユーザーはストレージ アカウント キーにアクセスできます。
NFS ボリュームを含む Azure NetApp Files
  • ボリュームに対して読み取りまたは読み取り/書き込みのいずれかのアクセス権を設定できます。
  • アクセス許可は、ラボ VM の IP アドレスを使用して設定されます。
  • 仮想ネットワークのピアリングが必要です。
  • Azure NetApp Files サービスを使用するために登録が必要な場合があります。
  • Linux のみ。

外部ストレージの使用コストは、Azure Lab Services を使用するコストに含まれていません。 価格の詳細については、「Azure Files の料金」と「Azure NetApp Files の価格」を参照してください。

Azure Files 共有

Azure Files 共有には、パブリックまたはプライベート エンドポイントを使用してアクセスします。 ストレージ アカウント キーをパスワードとして使用して、共有を仮想マシンにマウントします。 この方法を使用すると、すべてのユーザーにファイル共有への読み取り/書き込みアクセス権が与えられます。

既定では、Standard ファイル共有を最大 5 TiB にまたがるようにすることができます。 最大 100 TiB にまたがるファイル共有を作成する方法については、「Azure ファイル共有を作成する」を参照してください。

パブリック エンドポイントの使用に関する考慮事項

  • ストレージ アカウントの仮想ネットワークは、ラボ仮想ネットワークと接続する必要はありません。 テンプレート VM が発行される前であればいつでも、ファイル共有を作成できます。
  • ユーザーがストレージ アカウント キーを持っていれば、どのマシンからでもファイル共有にアクセスできます。
  • Linux ラボ ユーザーは、ストレージ アカウント キーを確認できます。 Azure Files 共有をマウントするための資格情報は、Linux VM 上の {file-share-name}.cred に格納されており、sudo で読み取ることができます。 ラボ ユーザーには Azure Lab Services VM で sudo アクセスが既定で付与されるので、ストレージ アカウント キーを読み取ることができます。 ストレージ アカウントのエンドポイントがパブリックの場合、ラボ ユーザーはラボ VM の外部にあるファイル共有にアクセスできます。 クラスの終了後に、ストレージ アカウント キーをローテーションするか、プライベート ファイル共有を使用することを検討してください。

プライベート エンドポイントの使用に関する考慮事項

  • この方法では、ファイル共有仮想ネットワークがラボと接続されている必要があります。 ラボの高度なネットワークを有効にするには、「 VNet インジェクションを使用した Azure Lab Services の仮想ネットワークへの接続」に関するページを参照してください。 VNet インジェクションは、ラボ 計画の作成時に行う必要があります。
  • アクセスは、プライベート ネットワークから送信されるトラフィックに限定され、パブリック インターネット経由ではアクセスできません。 プライベート仮想ネットワーク内の VM、プライベート仮想ネットワークにピアリングされたネットワーク内の VM、またはプライベート ネットワーク用に VPN に接続されているマシンのみが、ファイル共有にアクセスできます。
  • Linux ラボ ユーザーは、ストレージ アカウント キーを確認できます。 Azure Files 共有をマウントするための資格情報は、Linux VM 上の {file-share-name}.cred に格納されており、sudo で読み取ることができます。 ラボ ユーザーには Azure Lab Services VM で sudo アクセスが既定で付与されるので、ストレージ アカウント キーを読み取ることができます。 クラスが終了した後で、ストレージ アカウント キーをローテーションすることを検討してください。

ラボ VM を Azure ファイル共有に接続する

Azure Files 共有に接続された VM を作成するには、こちらの手順に従ってください。

  1. Azure Storage アカウントを作成します。 [接続方法] ページで、パブリック エンドポイントまたはプライベート エンドポイントを選択します。

  2. プライベート メソッドを選択した場合は、仮想ネットワークからファイル共有にアクセスできるようにするために、プライベート エンドポイントを作成します。

  3. Azure ファイル共有を作成します。 パブリック エンドポイントを使用している場合、ファイル共有には、ストレージ アカウントのパブリック ホスト名を指定してアクセスできます。 プライベート エンドポイントを使用している場合、ファイル共有にはプライベート IP アドレスを使用して到達できます。

  4. Azure ファイル共有をテンプレート VM にマウントします。

  5. テンプレート VM を発行します。

重要

ポート 445 を介した発信 SMB 接続が Windows Defender ファイアウォールでブロックされていないことを確認します。 既定では、SMB は Azure VM に対して許可されます。

Linux で Azure Files を使用する

既定の手順を使用して Azure Files 共有をマウントした場合、テンプレートが発行されると、ラボ VM ではファイル共有が消えたように見えます。 次の変更したスクリプトでは、この問題に対処しています。

パブリック エンドポイントを使用したファイル共有の場合

#!/bin/bash

# Assign variables values for your storage account and file share
STORAGE_ACCOUNT_NAME=""
STORAGE_ACCOUNT_KEY=""
FILESHARE_NAME=""

# Do not use 'mnt' for mount directory.
# Using ‘mnt’ will cause issues on lab VMs.
MOUNT_DIRECTORY="prm-mnt" 

sudo mkdir /$MOUNT_DIRECTORY/$FILESHARE_NAME
if [ ! -d "/etc/smbcredentials" ]; then
    sudo mkdir /etc/smbcredentials
fi
if [ ! -f "/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred" ]; then
    sudo bash -c "echo ""username=$STORAGE_ACCOUNT_NAME"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
    sudo bash -c "echo ""password=$STORAGE_ACCOUNT_KEY"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
fi
sudo chmod 600 /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred

sudo bash -c "echo ""//$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME cifs nofail,vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino"" >> /etc/fstab"
sudo mount -t cifs //$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME -o vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino

プライベート エンドポイントを使用したファイル共有の場合

#!/bin/bash

# Assign variables values for your storage account and file share
STORAGE_ACCOUNT_NAME=""
STORAGE_ACCOUNT_IP=""
STORAGE_ACCOUNT_KEY=""
FILESHARE_NAME=""

# Do not use 'mnt' for mount directory.
# Using ‘mnt’ will cause issues on lab VMs.
MOUNT_DIRECTORY="prm-mnt" 

sudo mkdir /$MOUNT_DIRECTORY/$FILESHARE_NAME
if [ ! -d "/etc/smbcredentials" ]; then
    sudo mkdir /etc/smbcredentials
fi
if [ ! -f "/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred" ]; then
    sudo bash -c "echo ""username=$STORAGE_ACCOUNT_NAME"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
    sudo bash -c "echo ""password=$STORAGE_ACCOUNT_KEY"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
fi
sudo chmod 600 /etc/smbcredentials/$storage_account_name.cred

sudo bash -c "echo ""//$STORAGE_ACCOUNT_IP/$FILESHARE_NAME /$MOUNT_DIRECTORY/$fileshare_name cifs nofail,vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino"" >> /etc/fstab"
sudo mount -t cifs //$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME -o vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino

Azure Files 共有を /mnt ディレクトリにマウントするテンプレート VM が既に発行されている場合、ラボ ユーザーは次のいずれかを実行できます。

  • /mnt をマウントする命令を /etc/fstab ファイルの先頭に移動する。
  • /mnt/{file-share-name} をマウントする命令を /prm-mnt/{file-share-name} などの別のディレクトリに変更する。

ラボ ユーザーは mount -a を実行して、ディレクトリを再マウントする必要があります。

一般的な情報については、「Linux で Azure Files を使用する」を参照してください。

NFS ボリュームを含む Azure NetApp Files

Azure NetApp Files は、エンタープライズ クラスでハイパフォーマンスの従量制課金ファイル ストレージ サービスです。

  • ボリュームごとにアクセス ポリシーを設定する
  • アクセス許可ポリシーは、ボリュームごとの IP ベース
  • ラボ ユーザーが、他のラボ ユーザーがアクセスできない独自のボリュームを必要とする場合は、ラボの発行後にアクセス許可ポリシーを割り当てる必要がある
  • Azure Lab Services でサポートされるのは、Azure NetApp Files に接続するための Linux ベースのラボ仮想マシンのみ
  • Azure NetApp Files 容量プールの仮想ネットワークをラボに接続する必要があります。 ラボの高度なネットワークを有効にするには、「 VNet インジェクションを使用した Azure Lab Services の仮想ネットワークへの接続」に関するページを参照してください。 VNet インジェクションは、ラボ 計画の作成時に行う必要があります。

Azure Lab Services で Azure NetApp Files 共有を使用するには、次の操作を行います。

  1. Azure NetApp Files と NFS ボリュームを設定する」の手順に従って、Azure NetApp Files 容量プール 1 つと NFS ボリュームを 1 つ以上作成します。

    サービス レベルの詳細については、「Azure NetApp Files のサービス レベル」を参照してください。

  2. Azure Lab Services の仮想ネットワークへの接続

  3. ラボを作成する

  4. テンプレート VM で、NFS ファイル共有を使用するために必要なコンポーネントをインストールします。

    • Ubuntu:

      sudo apt update
      sudo apt install nfs-common
      
    • CentOS:

      sudo yum install nfs-utils
      
  5. テンプレート VM で、次のスクリプトを mount_fileshare.sh として保存して、Azure NetApp Files 共有をマウントします

    capacity_pool_ipaddress 変数に容量プールのマウント ターゲット IP アドレスを割り当てます。 ボリュームのマウント命令を取得して、適切な値を見つけます。 このスクリプトには、Azure NetApp Files ボリュームのパス名が必要です。

    ユーザーがスクリプトを実行できるようにするには、chmod u+x mount_fileshare.sh を実行します。

    #!/bin/bash
    
    if [ $# -eq 0 ];  then
        echo "Must provide volume name."
        exit 1
    fi
    
    VOLUME_NAME=$1
    CAPACITY_POOL_IP_ADDR=0.0.0.0 # IP address of capacity pool
    
    # Do not use 'mnt' for mount directory.
    # Using ‘mnt’ might cause issues on lab VMs.
    MOUNT_DIRECTORY="prm-mnt" 
    
    sudo mkdir -p /$MOUNT_DIRECTORY
    sudo mkdir /$MOUNT_DIRECTORY/$FOLDER_NAME
    
    sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=3,tcp $CAPACITY_POOL_IP_ADDR:/$VOLUME_NAME /$MOUNT_DIRECTORY/$VOLUME_NAME
    sudo bash -c "echo ""$CAPACITY_POOL_IP_ADDR:/$VOLUME_NAME /$MOUNT_DIRECTORY/$VOLUME_NAME nfs bg,rw,hard,noatime,nolock,rsize=65536,wsize=65536,vers=3,tcp,_netdev 0 0"" >> /etc/fstab"
    
  6. すべてのラボ ユーザーが同じ Azure NetApp Files ボリュームへのアクセスを共有している場合は、発行の前にテンプレート マシンで mount_fileshare.sh スクリプトを実行できます。 ラボ ユーザーがそれぞれ独自のボリュームを取得する場合は、スクリプトを保存して、後でラボ ユーザーが実行できるようにします。

  7. テンプレート VM を発行します。

  8. ファイル共有のポリシーを構成します。

    エクスポート ポリシーでは、単一の VM または複数の VM がボリュームにアクセスすることを許可できます。 読み取り専用または読み取り/書き込みアクセス権を付与できます。

  9. ラボ ユーザーは VM を起動し、スクリプトを実行してファイル共有をマウントする必要があります。 スクリプトを実行する必要があるのは 1 回だけです。

    コマンドは次のようになります。 ./mount_fileshare.sh myvolumename

次のステップ