CloudFormationでFSx for NetApp ONTAPを簡単にデプロイしたい
- FSx for NetApp ONTAPがデビューした時、CloudFormationで簡単にYAMLでリソースを定義して作成することはできませんでした。あの時はLambdaなど他のツールを使う必要がありましたが、改めてAWS CloudFormationのドキュメンテーションを見てみると、FSx for NetApp ONTAPの部分が追加されていました!
- なので、今回はAWS CloudFormationが使える、FSx for NetApp ONTAPのテンプレートを作成してみたいと思います。
Keyword
- CloudFormation
- インフラストラクチャをコードとして扱うことで、AWS およびサードパーティーのリソースをモデル化、プロビジョニング、管理することができます。
- FSx for NetApp ONTAP
- Linux、Windows、および macOS コンピューティングインスタンスから業界標準の NFS、SMB、および iSCSI プロトコルを介して広くアクセスできる高性能ファイルストレージを提供できるファイルシステム(AWS FSxファムリーの一員として2021年に発表)。
- YAML
- 構造化データやオブジェクトを文字列にシリアライズ(直列化)するためのデータ形式の一種。テキストのため可読であることは特徴です。
いきなりまとめ
- Lambdaより、今回の方が簡単に分かりやすく作成できました!
YMALコード
テンプレート詳細:パラメータの設定
Parameters
VpcCidr:
AllowedValues:
- 10.0.0.0/16
- 173.31.0.0/16
- 192.168.0.0/16
Default: 10.0.0.0/16
Description: Select the private IPv4 CIDR for the VPC.
Type: String
AvailabilityZones:
Description: Select two 2 Availability Zones (AZ).
Type: List<AWS::EC2::AvailabilityZone::Name>
DeploymentType:
AllowedValues:
- SINGLE_AZ_1
- MULTI_AZ_1
Default: SINGLE_AZ_1
Type: String
ThroughputCapacity:
Description: Select Storage Throughput from 128, 256, 512, 1024, and 2048 MB/s.
AllowedValues:
- 128
- 256
- 512
- 1024
- 2048
Default: 128
Type: Number
StorageCapacity:
Description: Specify a Storage Capacity between 1024 to 196608.
Default: 1024
Type: Number
FileSystemPassword:
NoEcho: true
Description: The password for your FSx for NetApp ONTAP. Must contain at least 8 characters in the allowed pattern ("^[^\u0000\u0085\u2028\u2029\r\n]{8,50}$").
Type: String
MinLength: 8
AllowedPattern: ^[^\u0000\u0085\u2028\u2029\r\n]{8,50}$
ConstraintDescription: Your FSx for NetApp ONTAP password must contain at least 8 characters in the allowed pattern ("^[^\u0000\u0085\u2028\u2029\r\n]{8,50}$").
今回のテンプレートは最初に以下のパラメーターを入力できます:
- VpcCidr
- テンプレートで作成するネット環境で、VPCのサイダー(CIDR)を選択します。
- CIDRとは:https://www.nic.ad.jp/ja/basics/terms/cidr.html
- AvailabilityZones
- 現在CloudFormationを実行するリージョンに使用可能なAZを選択します。
- FSx for NetApp ONTAPはMulti-AZの構造を選択可能なので、二つAZを選択してください。
- DeploymentType
- Single_AZとMulti_AZを選択します。
- Multi_AZの場合、二つサブネットを使います。
- ThroughputCapacity
- FSx for NetApp ONTAPの性能を指定します。
- 128, 256, 512, 1024, 2048 MB/sから選択します。
- StorageCapacity
- FSx for NetApp ONTAPの容量を指定します。
- 最小1024GB、最大196608の仕様になっています。
- FileSystemPassword
- 作成されたファイルシステムのパスワードを指定します。
- 今回は検証環境なので、Secret Managerを使ってないです。
テンプレート詳細:条件設定
Deployment Type
Conditions:
IsSingleAZ: !Equals
- !Ref DeploymentType
- "SINGLE_AZ_1"
IsMultiAZ: !Equals
- !Ref DeploymentType
- "MULTI_AZ_1"
今回は二つパターンのデプロイメントタイプを選択できますので、最初に条件判定を指定しました
- デプロイメントタイプはSINGLE_AZの時
- DeploymentType = "SINGLE_AZ_1"
- IsSingleAZ = True
- デプロイメントタイプはMULTI_AZの時
- DeploymentType = "MULTI_AZ_1"
- IsMultiAZ = True
テンプレート詳細:FSx for NetApp ONTAPファイルシステムの作成
File System
FileSystem:
Type: "AWS::FSx::FileSystem"
Properties:
FileSystemType: "ONTAP"
StorageCapacity: !Ref StorageCapacity
SubnetIds: !If
- IsSingleAZ
- - !Ref PublicSubnet0
- - !Ref PublicSubnet0
- !Ref PublicSubnet1
SecurityGroupIds:
- !Ref SecurityGroup
OntapConfiguration:
FsxAdminPassword: !Ref FileSystemPassword
DeploymentType: !Ref DeploymentType
ThroughputCapacity: !Ref ThroughputCapacity
PreferredSubnetId: !If
- IsMultiAZ
- !Ref PublicSubnet0
- !Ref AWS::NoValue
この部分は実際にFSx for NetApp ONTAPファイルシステムを作成します
- デプロイメントタイプはSINGLE_AZの時
- IsSingleAZ = True
- SubnetIdsのところに作成されたPublicSubnet0をレファレンス。
- PreferredSubnetIdのところにはNoValueを指定します
- デプロイメントタイプはMULTI_AZの時
- IsMultiAZ = True
- SubnetIdsのところに作成された二つサブネットをレファレンス。
- PreferredSubnetIdのところにはPublicSubnet0を指定します
- サブネットとアタッチするセキュリティグルプはネットリソースのところに構築しました。
- 省略しましたが、コードの87行から191行までご参照ください。
テンプレート詳細:FSx for NetApp ONTAP SVMとVolumeの作成
SVM
SVM0:
DependsOn: FileSystem
Type: "AWS::FSx::StorageVirtualMachine"
Properties:
FileSystemId: !Ref FileSystem
Name: SVM0
Volume
Volume1:
DependsOn: SVM0
Type: "AWS::FSx::Volume"
Properties:
Name: vol1
VolumeType: "ONTAP"
OntapConfiguration:
JunctionPath: /vol1
SizeInMegabytes: 10240
StorageEfficiencyEnabled: true
StorageVirtualMachineId: !Ref SVM0
この部分は実際にFSx for NetApp ONTAPのSVMとVolumeを作成します
- SVMとは
- データにアクセスするための独自の管理資格 IP アドレスを持つ、分離された仮想ファイルサーバです。
- 各FSx for NetApp ONTAPファイルシステム上で 1 つまたは複数の ストレージ仮想マシン (SVM) を作成できます。
- 作成されたVolumeについて
- SVM0上に作成されます
- サイズは10GB
- パスは/vol1