CloudFormationでFSx for NetApp ONTAPのテスト・デモ環境を構築する流れを自動化したい
仕事柄で、よくFSx For NetApp ONTAPについての技術検証またはお客様向けのワークショップをします。この間に、以下の不便なことを感じました:
- 環境の構築について
- FSx For NetApp ONTAPファイルシステムの作成は時間がかかります。またADが必要な場合、作成順番があるため、ずっと画面をモニターリングする必要があります。
- 手作業なら、ミスが発生する可能性があります。
- AWSに不慣れなお客様がいらっしゃるので、構築の時間は予測し難くて、ワークショップの時間設定は難しいです。
- 環境の削除について
- 作成と同じ、削除も順番があり、画面をモニターリングする必要があります。
- 依存関係が間違って場合、削除失敗のエラーが発生します。
これらの不便さを解消するため、CloudFormationでFSx for NetApp ONTAPのテスト・デモ環境を構築する流れを自動化したいと考えました。もし自動化できれば、環境の作成と削除は一回クリックしたら手を離してコーヒーを飲みながら待つことができるようになって超楽だと思います。
自動で構築したい環境
FSx For NetApp ONTAPのデプロイメントタイプはMulti AZの場合:
FSx For NetApp ONTAPのデプロイメントタイプはSingle AZの場合:
以下のリソースはパラメータに「ADを作成する(Create an AD for me)」を選択する時作成されます:
- AWS Managed Microsoft AD
- Windows Instance
- SVMAD
Keyword
- CloudFormation
- インフラストラクチャをコードとして扱うことで、AWS およびサードパーティーのリソースをモデル化、プロビジョニング、管理することができます。
- FSx for NetApp ONTAP
- Linux、Windows、および macOS コンピューティングインスタンスから業界標準の NFS、SMB、および iSCSI プロトコルを介して広くアクセスできる高性能ファイルストレージを提供できるファイルシステム(AWS FSxファムリーの一員として2021年に発表)。
- YAML
- 構造化データやオブジェクトを文字列にシリアライズ(直列化)するためのデータ形式の一種。テキストのため可読であることは特徴です。
構築フローチャット
いきなりまとめ
- この環境の構築は自動化できる?
- はい、できます!
- 不便なことを解決できた?
- はい、できました
- 環境の構築について:パラメータを設定して実行したら、全部順番通り構築してくれます(所要時間は40−50分)。
- 環境の削除について:スタックを削除すれば、全部のリソースは正しい依存関係の上で順番に削除されます(フローチャットの逆方向)。
- はい、できました
YMALコード
テンプレート詳細:パラメータの設定
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
InstanceType:
Description: Select the instance type.
AllowedValues:
- t2.micro
- m5.large
- c5n.xlarge
- c5n.2xlarge
- c5n.9xlarge
- c5n.18xlarge
- r5n.8xlarge
- r5n.16xlarge
- r5n.24xlarge
Default: t2.micro
Type: String
KeyPair:
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: Must specify your key pair
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
LatestWindowsAmiId:
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-windows-latest/Windows_Server-2022-English-Full-Base'
LatestLinuxAmiId:
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
EnvironmentPassword:
NoEcho: true
Description: The password for your FSx for NetApp ONTAP and MS Directory Admin.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 environment password must contain at least 8 characters in the allowed pattern ("^[^\u0000\u0085\u2028\u2029\r\n]{8,50}$").
EnvironmentType:
Description: Is Microsoft AD required in your environment
AllowedValues:
- "Create an AD for me"
- "I don't need an AD"
Type: String
ConstraintDescription: Must specify the AD resources
今回のテンプレートは最初に以下のパラメーターを入力できます:
- VpcCidr
- テンプレートで作成するネット環境で、VPCのサイダー(CIDR)を選択できます。
- CIDRとは:https://www.nic.ad.jp/ja/basics/terms/cidr.html
- AvailabilityZones
- 現在CloudFormationを実行するリージョンに使用可能なAZを選択できます。
- Amazon Managed ADはMulti-AZの構造なので、二つAZを選択してください。
- DeploymentType
- Single_AZとMulti_AZを選択します。
- Multi_AZの場合、二つサブネットを使います。
- InstanceType
- Windows Instanceを立ち上げる時のインスタンスタイプを選択します。
- デフォルトは一番安いt2.microです。
- KeyPair
- 現在CloudFormationを実行するリージョンに使用可能なKeyPairを選択します。
- 選択できない場合、現在のリージョンにはKeyPairを作ってないことを示します。
- KeyPairの作成手順:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/create-key-pairs.html
- ThroughputCapacity
- FSx for NetApp ONTAPの性能を指定します。
- 128, 256, 512, 1024, 2048 MB/sから選択します。
- StorageCapacity
- FSx for NetApp ONTAPの容量を指定します。
- 最小1024GB、最大196608の仕様になっています。
- LatestWindowsAmiId
- 最新のWindows InstanceのAMIを取得します。
- デフォルトはWindows_Server-2022-EnglishのOSがデプロイされています。
- 修正したい時はUrlを変更してください。
- LatestLinuxAmiId:
- 最新のLinux InstanceのAMIを取得します。
- デフォルトはAmazon Linux 2のOSがデプロイされています。
- 修正したい時はUrlを変更してください。
- EnvironmentPassword:
- 作成されたADとファイルシステムのパスワードを指定できます。
- 今回は検証環境なので、Secret Managerを使ってないです。
- EnvironmentType
- AD関連のリソースを作成するかどうかを選択できます
テンプレート詳細:条件設定
Conditions:
CreateADResources: !Equals
- !Ref EnvironmentType
- "Create an AD for me"
IsSingleAZ: !Equals
- !Ref DeploymentType
- "SINGLE_AZ_1"
IsMultiAZ: !Equals
- !Ref DeploymentType
- "MULTI_AZ_1"
- AD関連のリソースを作成する時
- EnvironmentType = "Create an AD for me"
- CreateADResources = True
- デプロイメントタイプはSINGLE_AZの時
- DeploymentType = "SINGLE_AZ_1"
- IsSingleAZ = True
- デプロイメントタイプはMULTI_AZの時
- DeploymentType = "MULTI_AZ_1"
- IsMultiAZ = True
テンプレート詳細:AD関連のリソース作成
以前の記事をご参考してください:EC2 InstanceをAmazon Managed ADに自動JoinすることをCloudFormationでやってみた
テンプレート詳細:ファイルシステムの作成
以前の記事をご参考してください:CloudFormationでFSx for NetApp ONTAPを作成してみた
テンプレート詳細:FSx for NetApp ONTAPのSVMをADにJoin
#FSx for NetApp ONTAP SVM (Join AD)
SVMAD:
DependsOn:
- FileSystem
- MSDirectory
Type: "AWS::FSx::StorageVirtualMachine"
Condition: CreateADResources
Properties:
FileSystemId: !Ref FileSystem
Name: SVMAD
ActiveDirectoryConfiguration:
NetBiosName: "SVMAD"
SelfManagedActiveDirectoryConfiguration:
DnsIps:
- !Select [0, !GetAtt MSDirectory.DnsIpAddresses]
- !Select [1, !GetAtt MSDirectory.DnsIpAddresses]
DomainName: "fsxontap.com"
FileSystemAdministratorsGroup: "Domain Admins"
OrganizationalUnitDistinguishedName: "OU=Computers,OU=fsxontap,DC=fsxontap,DC=com"
Password: !Ref EnvironmentPassword
UserName: "Admin"
この部分はファイルシステムの上にADにJoinしたSVMを作成します
- ActiveDirectoryConfiguration
- ここにADの情報を入力。
- NetBiosNameにはADのNetBiosNameではなく、新しいことを設定します。
- 今回作成されたドメインは"fsxontap.com"なので、OrganizationalUnitDistinguishedNameのところに"OU=Computers,OU=fsxontap,DC=fsxontap,DC=com"を指定するのが必須です。