1
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についての技術検証またはお客様向けのワークショップをします。この間に、以下の不便なことを感じました:

  • 環境の構築について
    • FSx For NetApp ONTAPファイルシステムの作成は時間がかかります。またADが必要な場合、作成順番があるため、ずっと画面をモニターリングする必要があります。
    • 手作業なら、ミスが発生する可能性があります。
    • AWSに不慣れなお客様がいらっしゃるので、構築の時間は予測し難くて、ワークショップの時間設定は難しいです。
  • 環境の削除について
    • 作成と同じ、削除も順番があり、画面をモニターリングする必要があります。
    • 依存関係が間違って場合、削除失敗のエラーが発生します。

これらの不便さを解消するため、CloudFormationでFSx for NetApp ONTAPのテスト・デモ環境を構築する流れを自動化したいと考えました。もし自動化できれば、環境の作成と削除は一回クリックしたら手を離してコーヒーを飲みながら待つことができるようになって超楽だと思います。

自動で構築したい環境

FSx For NetApp ONTAPのデプロイメントタイプはMulti AZの場合:
Architecture01.png

FSx For NetApp ONTAPのデプロイメントタイプはSingle AZの場合:
Architecture02.png

以下のリソースはパラメータに「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
    • 構造化データやオブジェクトを文字列にシリアライズ(直列化)するためのデータ形式の一種。テキストのため可読であることは特徴です。

構築フローチャット

Flowchat.png

いきなりまとめ

  • この環境の構築は自動化できる?
    • はい、できます!
  • 不便なことを解決できた?
    • はい、できました
      • 環境の構築について:パラメータを設定して実行したら、全部順番通り構築してくれます(所要時間は40−50分)。
      • 環境の削除について:スタックを削除すれば、全部のリソースは正しい依存関係の上で順番に削除されます(フローチャットの逆方向)。

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
  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
  • AvailabilityZones
    • 現在CloudFormationを実行するリージョンに使用可能なAZを選択できます。
    • Amazon Managed ADはMulti-AZの構造なので、二つAZを選択してください。
  • DeploymentType
    • Single_AZとMulti_AZを選択します。
    • Multi_AZの場合、二つサブネットを使います。
  • InstanceType
    • Windows Instanceを立ち上げる時のインスタンスタイプを選択します。
    • デフォルトは一番安いt2.microです。
  • KeyPair
  • 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

SVM Join AD
  #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"を指定するのが必須です。

Reference

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