さいきょうのクラウドストレージを Amazon FSx for NetApp ONTAP + Nextcloud で作る！（その2）

# はじめに
この記事は、NetApp のストレージ OS である ONTAP の機能を活用して、自前のクラウドストレージを構築する為のアイディアの紹介と構築メモです。

[前回記事「さいきょうのクラウドストレージを Amazon FSx for NetApp ONTAP + Nextcloud で作る！（その2）」](https://qiita.com/takuo_yamazaki/items/0e8aff7549fc54a156bd)では、AWSのEC2でNextcloud サーバーを立て、データの保管場所として Amazonm FSx for NetApp ONTAP (以下 FSxN)の環境を作る手順を紹介しました。

今回は Active Directory のユーザーでログインしたり、 Windows PC から直接共有フォルダーを見えるようにしていきます。
これにより、オンプレのファイルサーバーをクラウドへ移行した際に、従来通りのファイルサーバーとして使いつつ、クラウドらしくモバイル利用も、と両方使えるような環境を作ってみます。

# 用意するもの
## Nextcloud + FSxN 
[前回記事「さいきょうのクラウドストレージを Amazon FSx for NetApp ONTAP + Nextcloud で作る！（その2）」](https://qiita.com/takuo_yamazaki/items/0e8aff7549fc54a156bd)と同等の環境が必要です。

## AD サーバー
サーバーの設置場所はどこでも OK ですが、Nextcloud サーバー及びFSxN の管理用 IP アドレスとの間で疎通出来る必要があります。

## その他
FSxN の追加設定をコマンドで行うために、SSH 接続が必要です。
FSxN の管理 IP アドレスに SSH アクセスができる必要があります。
Nextcloud のサーバーとかでも良いですが、踏み台サーバー等として外部から操作出来る環境が必要です。

# 構成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/a457bd40-da7a-74ee-90ff-e39c17696ec1.png)

# 手順
## FSxN の設定
### ストレージ仮想マシンを追加
既存ファイルシステムに SMB/CIFS 機能を提供するストレージ仮想マシンを追加します。

AWS コンソールから、FSx > ストレージ仮想マシン
の画面を開き、「ストレージ仮想マシンを作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/4806ecb8-e3c9-7d0d-9b10-c5f31cbbf8c8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/692cecb7-f765-cb95-9173-e43f8427c926.png)

下記設定を入れて、作成します。

* SVM名
* ストレージ仮想マシン名ルートボリュームのセキュリティスタイル ：NTFS
* 「Active Directory への参加」を選択
* NetBios名
* Active Directory ドメイン名
* DNS サーバーの IP アドレス
ADドメインの名前解決が出来るDNS（AD自身でOK）
* サービスアカウントのユーザー名
ADの管理者権限のあるユーザー名
* サービスアカウントのパスワード

数分待つと、SMB (CIFS) でアクセス可能なファイルサーバーが作成され、AD のドメインに参加している状態になります。

### ボリュームの作成
FSx > ボリュームの画面から「ボリュームの作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/8c96df7c-e389-fd9c-321f-c06a34e39a21.png)
必要項目を入れて「Confirm」をクリックします。
数秒待つと、ボリュームが作成されます。

### SMB 共有の作成
共有の作成はコマンドで実施する必要があります。
SSH で FSx ファイルシステムの「管理エンドポイント IP アドレス」に接続します。
管理者でログインし、下記コマンドを実行します。
```
::> vserver cifs share create -share-name pub -path /pub -share-properties oplocks,browsable,show-previous-versions
```

## Nextcloud サーバーの構成
 AD (LDAP) 連携と SMB アクセスをするため、Nextcloud サーバーにモジュールを追加します。

```bash
$ sudo apt install ldap-client -y
$ sudo apt install php-smbclient -y
```

## Nextcloud の設定
LDAP 連携機能とSMB機能を有効化します。

ブラウザで Nextcloud の管理画面にアクセスし、管理ユーザーでログインします。
管理画面の右上のアイコンをクリックし、メニューから「＋アプリ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/3cf51553-8f75-f97e-59d5-40a9f0216cfb.png)

アプリ管理画面に遷移しますが、左ペインにある「無効なアプリ」を選択すると、有効化されていないアプリの一覧が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/d5916800-516b-02f4-0ac2-e9d16a37a705.png)
その中にある「External Storage Support」と「LDAP user and group backend」を「有効にする」ボタンをクリックします。

次に、アプリの設定に移ります。
右上のユーザーアイコンをクリックし、メニューから「設定」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/af5a61dd-d44f-6a58-c4c3-330b26242021.png)

### 「LDAP/AD統合」の設定
左ペインに「LDAP/AD統合」というメニューが追加されていますので、クリックして設定画面に移ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/49fc3672-3ed4-0dd9-1a23-85a0a36d6948.png)

「サーバー」タブ
例えば、Windows で構築された AD サーバを LDAP サーバとして参照する場合で、参照用のユーザーとして「ldapadmin」というユーザーを作成してある場合は、こんな感じで設定していきます。

| 項目 | 説明 | 設定例|
|:-:|:-:|:-:|
| ホスト | AD サーバのホスト名 or IP アドレス  | 172.16.1.10 |
| ポート  | LDAP プロトコルの listen port | 389 |
|  ユーザーDN | LDAP管理者等権限のあるユーザー  | cn=ldapadmin,cn=Users,dc=lab,dc=local |
| パスワード  | 上記ユーザーのパスワード  ||
| ベースDN  |  ユーザー検索のベースDN |cn=Users,dc=lab,dc=local|
 
「続ける」をクリックして次の「ユーザー」タブへ

「ユーザー」タブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/39e53794-cdf7-10fc-1e43-ab3275dc90b0.png)

今回は特に設定はしていません。

下部にある「設定を検証し、ユーザーを数える」ボタンをクリックすると、認証対象となるユーザー数が表示されます。
問題なさそうならそのまま「続ける」をクリックします。

「ログイン属性」タブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/e501ef23-bd1c-174e-72ef-9acf90f06966.png)

ここでも特に設定はしません。

「テスト用ログイン名」にユーザー名を入力して「設定のチェック」をクリックすると、そのユーザーでログイン可能かの確認ができます。

### Nextcloud：外部ストレージの設定
管理画面右上のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/2eedf68f-a365-68b5-c80a-4cfd5deb70e9.png)
メニューから「＋アプリ」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/7b573930-2476-4703-e854-a5d7cfd0bd2d.png)
左側ペインの「無効なアプリ」をクリックし、一覧にある「External storage support」を有効にします。

再度、右上アイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/dad9c0e3-8db1-134a-f2e6-4a4a30ba5041.png)
メニューから「設定」を選択します。

左ペインの「管理」配下にある「外部ストレージ」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/8bb20eda-1a5c-2a86-3110-5a3f2e93cb40.png)

右ペインに設定画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/e7598b6b-fd6c-d15c-d2ca-7e927f34db73.png)
「フォルダー名」は Nextcloud のホーム画面で見える表示名です。
「ストレージを追加」をクリックすると現れる選択肢から「SMB / CIFS」を選びます。

SMB / CIFS 設定用のビューに切り替わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2815139/11b1db1e-16b5-ed90-5e81-cb40329faa9f.png)

設定項目として下記のようにします。

| 項目 | 説明 | 設定例 |
|:-:|:-:|:-:|
| フォルダー名  | 各ユーザーのホームに表示されるフォルダー名  | pub  |
| 外部ストレージ  | アクセス方式 | SMB / CIFS  |
| 認証  | 外部ストレージへの認証方法  | ログイン認証情報  |
| ホスト  | FSxN のファイルサーバーのホスト名 or IP | xxx.xxx.xxx.xxx  |
| 共有  | FSxN のファイルサーバーで作成した共有フォルダー名  | pub  |

ADユーザーの個別の権限で FSxN にアクセス出来るようにするために、「認証」の欄を「ログイン認証情報」を選択をします。
全ての設定が出来たら、右端の✓をクリックすることで保存できます。

これで FSxN の SMB ファイルサーバーと Nextcloud 、両方が AD 連携した共存環境が完成です。

# 接続テスト
AD ユーザーで Nextcloud にログインします。
ホーム画面のフォルダ一覧を見ると、外部ストレージの pub というフォルダが見えるはずです。


# おわりに
オンプレデータを移行しても今まで通りのファイルサーバーとしての使い方が出来、加えてモバイルアクセスも実現できる、というシナリオで今回の環境を目指してみました。

次回は、FSxN (ONTAP) の SMB 周りの機能を活用して、より高度なファイルサーバー機能やランサムウェア対策との連携を紹介する予定です。