在如今快速变化的数字环境中,高效的数据管理和访问性已成为企业的重要挑战。全球团队需要一个支持多种协议的共享文件存储解决方案,在项目上高效协作,并具备可靠的数据管理功能以及数据完整性。因此,确保基础设施的可重复性和降低配置错误风险显得尤为重要。
Amazon FSx for NetApp ONTAP 是一个完全托管的解决方案,适合那些希望专注于核心业务活动而非复杂基础设施管理的用户。使用基础设施即代码IaC工具是实现一致且无错误基础设施部署的有效方法之一,而您可以使用多个工具来部署 FSx for ONTAP。
在这篇博客中,我们将讨论如何使用 AWS CloudFormation 部署 FSx for ONTAP 文件系统。CloudFormation 帮助您快速且一致地配置相关的 AWS 及第三方资源,并在其整个生命周期内管理它们,通过将基础设施视为代码。您可以把本文中的代码整合进现有模板中,以单个单元的形式创建、更新和删除整个堆栈。通过漂移检测,您可以跟踪 CloudFormation 之外资源的更改,确保始终拥有最新的基础设施状态。
IaC 的定义是通过机器可读的定义文件来管理和配置计算数据中心,而不是使用物理硬件配置或交互式配置工具。IaC 使您能够以已知的方式维护基础设施的配置或状态。
建议在所有资源都部署在 AWS 中时使用 AWS CloudFormation。如果您需要协调多云环境或出于其他原因需要使用 HashiCorp Terraform,请参考博客使用 HashiCorp Terraform 部署 Amazon FSx for NetApp ONTAP。如果您已经有一个文件系统,并希望使用配置管理工具来维护其配置,Ansible 可以满足您的需求。有关 Ansible 的简要介绍,请参阅如何使用 Ansible 管理 Amazon FSx for NetApp ONTAP。如果您需要更多灵活性,想执行 AWS CloudFormation 不支持的操作,则可以参考使用 AWS CloudFormation 部署 Amazon FSx for NetApp ONTAP。
市场上有多种基础设施即代码 (IaC) 工具、配置管理和自动化工具。其中,AWS CloudFormation 和 HashiCorp Terraform 是部署工具,而 Ansible 是配置管理工具。选择使用哪个工具取决于您需要解决的挑战以及您在自动化方面的需求。在执行 Day0 活动如资源配置时,推荐使用 AWS CloudFormation 或 HashiCorp Terraform。如果客户完全在 AWS 中,我们建议使用 AWS CloudFormation,因为它能够与其他 AWS 服务集成。如果您需要构建和管理混合或多云环境,我们推荐使用 HashiCorp Terraform。
在执行 Day1 活动如存储配置时,推荐使用 Ansible。Ansible 提供用于管理 NetApp 的认证模块。有关 NetApp 模块的完整列表,请参阅文档NetappOntap。如果您需要比 Ansible 提供的灵活性更大,建议使用 REST API。在某些情况下,您可能需要结合使用这些工具。我们推荐的组合方式包括部署与配置管理:AWS CloudFormation/Terraform Ansible或部署与编排:AWS CloudFormation/Terraform REST API。有关提到的工具的更多信息,请参阅“附加阅读”部分。
Amazon FSx for NetApp ONTAP 是一个完全托管的服务,提供高度可靠、可扩展、高性能、功能丰富的文件存储,构建于 NetApp 的经典 ONTAP 文件系统之上。FSx for ONTAP 提供了一种无缝的多协议访问解决方案,使组织可以专注于其核心业务活动,而不是管理复杂的基础设施。FSx for ONTAP 文件系统与本地 NetApp 集群相似。以下列表标识了 FSx for ONTAP 的主要组件:
AWS CloudFormation 是 AWS 原生的 IaC 服务,可以让您建模、配置和管理 AWS 及第三方资源。它使用 JSON 或 YAML 模板。CloudFormation 拥有许多优点,包括:CloudFormation 是一个完全托管的 AWS 服务,状态管理是内置功能。它是 AWS 的原生服务,因此支持新服务的速度更快。使用简单,支持自定义资源,漂移检测和回滚等高级功能也可用。
需要注意的是,CloudFormation 是 AWS 专有的,因此仅支持 AWS 上的资源配置。CloudFormation 模板的大小限制为 51 MB 或每个模板 500 个资源。可以通过使用 嵌套堆栈 来克服此限制。
以下表格概述了 CloudFormation 的功能集:
AWS CloudFormation 使您能够通过将基础设施视为代码来配置和管理 AWS 和第三方资源。它为开发人员和企业提供了一种简单的方法来创建一组相关资源,并以有序和可预测的方式提供和管理这些资源。通过简单的点击,您可以使用 CloudFormation 模板预先配置并部署 FSx for ONTAP 资源,如 文件系统、存储虚拟机 和 卷,并在多个区域和账户中以一致和可重复的方式进行部署。客户从中受益,能够以多种方式架构他们的部署,具有更多的控制权来使用 IaC 在多个环境中提供和扩展 FSx for ONTAP 的架构。
使用 AWS CloudFormation 资源类型 [AWSFSxFileSystem](https//docsawsamazoncom/AWSCloudFormation/latest/UserGuide/awsresourcefsxfilesystemhtml) 可以创建 FSx for ONTAP 中的文件系统。它会根据用户输入的参数如 StorageCapacity、SubnetIds 等配置已部署的文件系统。列出的模板将创建一个名为 OntapMultiAzFileSystemWithAllConfigs 的多可用区文件系统。
使用 AWS CloudFormation 资源类型 [AWSFSxStorageVirtualMachine](https//docsawsamazoncom/AWSCloudFormation/latest/UserGuide/awsresourcefsxstoragevirtualmachinehtml) 可以为 Amazon FSx for ONTAP 文件系统创建一个存储虚拟机 (SVM)。模板将创建一个名为 OntapStorageVirtualMachineWithAllConfigs 的存储虚拟机。SVM 是一个独立的虚拟文件服务器,具有自己的管理凭证和数据访问 IP 地址。在本示例中,我们使用 Active Directory 来管理对文件共享的访问。请注意,使用 Active Directory 不是必需的,因为 FSx for ONTAP 同样支持工作组模式。它从 AWS Secrets Manager 获取用户凭证。OntapStorageVirtualMachineWithAllConfigs 将之前创建的文件系统 OntapMultiAzFileSystemWithAllConfigs 作为属性之一。
使用 AWSFSxVolume文档链接创建一个 FSx for ONTAP 存储卷。提供的模板创建名为 OntapVolumeWithAllConfigs 的卷。它将之前创建的资源 OntapStorageVirtualMachineWithAllConfigs 作为属性之一。以下参数化模板提供了创建 FSx for ONTAP 文件系统所需的所有组件,包括 SVM 和卷:
yaml Description 创建您的 Amazon FSx for NetApp ONTAP。
Metadata Authors Description 亚马逊网络服务 AWSCloudFormationInterface ParameterGroups Label default Amazon FSx for NetApp ONTAP 文件系统参数 Parameters FSxNName StorageCapacity SubnetIds SecurityGroupIds Iops AutomaticBackupRetentionDays PreferredSubnetId RouteTableIds EndpointIpAddressRange ThroughputCapacity FsxAdminPassword KmsKeyId Label default Amazon FSx for NetApp ONTAP 文件系统的存储虚拟机参数 Parameters SVMname NetBiosName DnsIps DomainName OrganizationalUnitDistinguishedName ADsecretname RootVolumeSecurityStyle ParameterLabels FSxNName default 文件系统的名称 StorageCapacity default 存储容量 SubnetIds default 子网 ID SecurityGroupIds default 安全组 ID Iops default Iops AutomaticBackupRetentionDays default 自动备份保留天数 PreferredSubnetId default FSxN 的首选子网 ID RouteTableIds default FSxN 的首选路由表 EndpointIpAddressRange default 浮动 IP EndpointIpAddressRange ThroughputCapacity default FSxN 的首选吞吐量 FsxAdminPassword default FSxN 的默认密码 KmsKeyId default AWS KMS 密钥 ID,用于 FSxN 的静态数据加密 SVMname default FSxN 的 SVM 名称 NetBiosName default FSxN 的首选 NetBios 名称 DnsIps default FSxN 的 DNS IP。如果有多个,请提供用逗号分隔的值。 DomainName default Active Directory 配置的域名 OrganizationalUnitDistinguishedName default FSxN 的组织单元 ADsecretname default 包含 AD 用户密码的 AWS Secrets Manager 秘密名称。验证秘藏以格式 {username lt您的用户名gt password lt您的密码gt} 存储。 RootVolumeSecurityStyle default 根卷的安全样式,可以是 [MIXED UNIX NTFS]
Parameters FSxNName Description 文件系统的名称 Type String StorageCapacity Description FSxN 文件系统的存储容量 Default 1024 Type Number SubnetIds Description FSxN 文件系统的子网 ID,使用逗号分隔。 Type CommaDelimitedList SecurityGroupIds Description FSxN 文件系统的安全组 ID。 Type CommaDelimitedList Iops Description 选择您的 Amazon FSx for NetApp ONTAP 文件系统的 Iops。 Default 3072 Type Number AutomaticBackupRetentionDays Type Number Description 您的 Amazon FSx for NetApp ONTAP 文件系统卷的备份天数。 PreferredSubnetId Description 提供子网,其将作为 Amazon FSx for NetApp ONTAP 文件系统卷的首选节点。 Type String RouteTableIds Description FSxN 的路由表 Type CommaDelimitedList EndpointIpAddressRange Description FSxN 的私有浮动 IP EndpointIpAddressRange。 Type String ThroughputCapacity Description FSxN 的吞吐量 AllowedValues [128 256 512 1024 2048] Type Number FsxAdminPassword Description AWS Secrets Manager 秘密名称,包含登录 FSxN 的默认密码,使用 fsxadmin 用户名。 Type String KmsKeyId Description AWS KMS 密钥 ID,用于 FSxN 的静态数据加密。如果没有客户管理密钥,请留空。由于 AWS FSx 服务默认创建一个用于静态加密的 Fsx 密钥。 Type String Default SVMname Description FSxN 的 SVM 名称 Type String NetBiosName Description FSxN 的首选 NetBios 名称 Type String DnsIps Description FSxN 的 DNS IP。如果有多个,请用逗号分隔。 Type CommaDelimitedList DomainName Description ActiveDirectoryConfiguration 的域名 Type String OrganizationalUnitDistinguishedName Description FSxN 的组织单元。 Type String ADsecretname Description 包含 AD 用户密码的 AWS Secrets Manager 秘密名称。验证秘藏以格式 {username lt您的用户名gt password lt您的密码gt} 存储。 Type String RootVolumeSecurityStyle Description 根卷的安全样式,可以是 [MIXED UNIX NTFS]。 Type String AllowedValues [MIXED UNIX NTFS]
Conditions IsKMSKeyprovided !Not [!Equals [ !Ref KmsKeyId ]]
Resources OntapMultiAzFileSystemWithAllConfigs Type AWSFSxFileSystem Properties FileSystemType ONTAP KmsKeyId !If [ IsKMSKeyprovided !Ref KmsKeyId !Ref AWSNoValue] StorageCapacity !Ref StorageCapacity StorageType SSD SubnetIds !Ref SubnetIds SecurityGroupIds !Ref SecurityGroupIds OntapConfiguration AutomaticBackupRetentionDays !Ref AutomaticBackupRetentionDays DailyAutomaticBackupStartTime 0700 DeploymentType MULTIAZ1 DiskIopsConfiguration Iops !Ref Iops Mode USERPROVISIONED PreferredSubnetId !Ref PreferredSubnetId RouteTableIds !Ref RouteTableIds EndpointIpAddressRange !Ref EndpointIpAddressRange ThroughputCapacity !Ref ThroughputCapacity WeeklyMaintenanceStartTime 41630 FsxAdminPassword !Join {{resolvesecretsmanager !Ref FsxAdminPassword SecretStringpassword}} Tags Key Name Value !Ref FSxNName OntapStorageVirtualMachineWithAllConfigs Type AWSFSxStorageVirtualMachine Properties ActiveDirectoryConfiguration NetBiosName !Ref NetBiosName SelfManagedActiveDirectoryConfiguration DnsIps !Ref DnsIps DomainName !Ref DomainName OrganizationalUnitDistinguishedName !Ref OrganizationalUnitDistinguishedName Password !Join {{resolvesecretsmanager !Ref ADsecretname SecretStringpassword}} UserName !Join {{resolvesecretsmanager