2
1

More than 1 year has passed since last update.

CloudFormationでFSx for NetApp ONTAPを作成してみた

Last updated at Posted at 2022-12-15

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
  • 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

Reference

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1