使用 AWS CloudFormation 自訂資源和 Amazon SNS 建立 Infoblox 物件 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS CloudFormation 自訂資源和 Amazon SNS 建立 Infoblox 物件

由 Tim Sutton (AWS) 建立

Summary

注意: AWS Cloud9 不再提供給新客戶。的現有客戶 AWS Cloud9 可以繼續正常使用服務。進一步了解

Infoblox 網域名稱系統 (DNS)、動態主機組態通訊協定 (DHCP) 和 IP 地址管理 (Infoblox DDI) 可讓您集中並有效控制複雜的混合環境。使用 Infoblox DDI,除了使用相同的設備管理內部部署和 Amazon Web Services (AWS) Cloud 上的 DNS 之外,您還可以在一個授權 IP 地址管理 (IPAM) 資料庫中探索和記錄所有網路資產。

此模式說明如何透過呼叫 Infoblox WAPI API,使用 AWS CloudFormation 自訂資源來建立 Infoblox 物件 (例如 DNS 記錄或 IPAM 物件)。如需 Infoblox WAPI 的詳細資訊,請參閱 Infoblox 文件中的 WAPI 文件。

透過使用此模式的方法,除了移除建立記錄和佈建網路的手動程序之外,您還可以取得 AWS 和內部部署環境的 DNS 記錄和 IPAM 組態的統一檢視。您可以針對下列使用案例使用此模式的方法:

  • 在建立 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體之後新增 A 記錄 

  • 在建立 Application Load Balancer 之後新增 CNAME 記錄

  • 在建立虛擬私有雲端 (VPC) 之後新增網路物件

  • 提供下一個網路範圍,並使用該範圍來建立子網路

您也可以擴展此模式,並使用其他 Infoblox 裝置功能,例如新增不同的 DNS 記錄類型或設定 Infoblox vDiscovery。 

此模式使用中hub-and-spoke設計,其中中樞需要連線至 AWS 雲端或內部部署上的 Infoblox 設備,並使用 AWS Lambda 呼叫 Infoblox API。輪輻位於 AWS Organizations 中相同組織中的相同或不同帳戶中,並使用 AWS CloudFormation 自訂資源呼叫 Lambda 函數。

先決條件和限制

先決條件

  • 安裝在 AWS 雲端、內部部署或兩者上的現有 Infoblox 設備或網格,並使用可管理 IPAM 和 DNS 動作的管理員使用者進行設定。如需詳細資訊,請參閱 Infoblox 文件中的關於管理帳戶。 

  • 您要在 Infoblox 設備上新增記錄的現有 DNS 授權區域。如需詳細資訊,請參閱 Infoblox 文件中的設定授權區域。 

  • AWS Organizations 中的兩個作用中 AWS 帳戶。一個帳戶是中樞帳戶,另一個帳戶是發言帳戶。

  • 中樞和輻條帳戶必須位於相同的 AWS 區域。 

  • 中樞帳戶的 VPC 必須連線至 Infoblox 設備;例如,使用 AWS Transit Gateway 或 VPC 對等互連。

  • AWS Serverless Application Model (AWS SAM),本機安裝並設定 AWS Cloud9 或 AWS CloudShell。

  • Infoblox-Hub.zipClientTest.yaml 檔案 (已連接),下載至包含 AWS SAM 的本機環境。

限制

  • AWS CloudFormation 自訂資源的服務權杖必須來自建立堆疊的相同區域。我們建議您在每個區域中使用中樞帳戶,而不是在一個區域中建立 Amazon Simple Notification Service (Amazon SNS) 主題,並在另一個區域中呼叫 Lambda 函數。

產品版本

  • Infoblox WAPI 2.7 版

架構

下圖顯示此模式的工作流程。 

使用 AWS CloudFormation 自訂資源和 Amazon SNS 建立 Infoblox 物件。

下圖顯示此模式解決方案的下列元件:

  1. AWS CloudFormation 自訂資源可讓您在建立、更新或刪除堆疊時,在 AWS CloudFormation 執行的範本中撰寫自訂佈建邏輯。當您建立堆疊時,AWS CloudFormation 會將create請求傳送至 SNS 主題,該主題由在 EC2 執行個體上執行的應用程式監控。

  2. 來自 AWS CloudFormation 自訂資源的 Amazon SNS 通知會透過特定 AWS Key Management Service (AWS KMS) 金鑰加密,且存取權僅限於 Organizations 中組織中的帳戶。SNS 主題會啟動呼叫 Infoblox WAPI API 的 Lambda 資源。

  3. Amazon SNS 調用下列 Lambda 函數,以使用 Infoblox WAPI URL、使用者名稱和密碼 AWS Secrets Manager Amazon Resource Names (ARNs) 做為環境變數: 

    • dnsapi.lambda_handler – 從 AWS CloudFormation 自訂資源接收 DNSName、 和 DNSValueDNSType,並使用它們來建立 DNS A 記錄和 CNAMES。

    • ipaddr.lambda_handler – 從 AWS CloudFormation 自訂資源接收 VPCCIDRSubnetPrefixTypeNetwork Name值,並使用它們將網路資料新增至 Infoblox IPAM 資料庫,或為自訂資源提供可用於建立新子網路的下一個可用網路。

    • describeprefixes.lambda_handler – 使用"com.amazonaws."+Region+".s3"篩選條件來擷取所需的 ,以呼叫 describe_managed_prefix_lists AWS APIprefix ID

    重要

    這些 Lambda 函數是以 Python 撰寫,彼此類似,但呼叫不同的 APIs。

  4. 您可以將 Infoblox 網格部署為實體、虛擬或雲端型網路設備。 它可以使用一系列的 Hypervisor 部署在內部部署或做為虛擬設備,包括 VMware ESXi、Microsoft Hyper-V、Linux KVM 和 Xen。您也可以使用 Amazon Machine Image (AMI) 在 AWS 雲端部署 Infoblox 網格。

  5. 圖表顯示 Infoblox 網格的混合解決方案,其提供 DNS 和 IPAM 給 AWS 雲端和內部部署上的資源。

技術堆疊

  • AWS CloudFormation

  • IAM

  • AWS KMS

  • AWS Lambda

  • AWS SAM

  • AWS Secrets Manager

  • Amazon SNS

  • Amazon VPC 

工具

  • AWS CloudFormation 可協助您設定 AWS 資源、快速且一致地佈建資源,並在其整個生命週期中跨 AWS 帳戶和區域管理資源。

  • AWS Identity and Access Management (IAM) 可透過控制已驗證並授權使用的人員,協助您安全地管理對 AWS 資源的存取。

  • AWS Key Management Service (AWS KMS) 可協助您建立和控制密碼編譯金鑰,以協助保護您的資料。

  • AWS Lambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。

  • AWS Organizations 是一種帳戶管理服務,可協助您將多個 AWS 帳戶合併到您建立並集中管理的組織。

  • AWS Secrets Manager 可協助您以 API 呼叫 Secrets Manager,以程式設計方式擷取秘密,取代程式碼中的硬式編碼登入資料,包括密碼。

  • AWS Serverless Application Model (AWS SAM) 是一種開放原始碼架構,可協助您在 AWS 雲端中建置無伺服器應用程式。

  • Amazon Simple Notification Service (Amazon SNS) 可協助您協調和管理發佈者和用戶端之間的訊息交換,包括 Web 伺服器和電子郵件地址。

  • Amazon Virtual Private Cloud (Amazon VPC) 可協助您將 AWS 資源啟動至您定義的虛擬網路。這個虛擬網路類似於傳統網路,您會在自己的資料中心中操作,並享有使用 AWS 可擴展基礎設施的優勢。

Code

您可以使用ClientTest.yaml範例 AWS CloudFormation 範本 (已連接) 來測試 Infoblox 中樞。您可以自訂 AWS CloudFormation 範本,以包含下表中的自訂資源。

使用 Infoblox 發言者自訂資源建立 A 記錄

傳回值: 

infobloxref  – Infoblox 參考

資源範例

ARECORDCustomResource: Type: "Custom::InfobloxAPI" Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxDNSFunction DNSName: 'arecordtest.company.com' DNSType: 'ARecord' DNSValue: '10.0.0.1'

使用 Infoblox 語音自訂資源建立 CNAME 記錄

傳回值: 

infobloxref  – Infoblox 參考

資源範例

CNAMECustomResource: Type: "Custom::InfobloxAPI" Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfoblox DNSFunction DNSName: 'cnametest.company.com' DNSType: 'cname' DNSValue: 'aws.amazon.com'

使用 Infoblox 發言自訂資源建立網路物件

傳回值:

infobloxref  – Infoblox 參考

network – 網路範圍 (與 相同VPCCIDR)

資源範例:

VPCCustomResource: Type: 'Custom::InfobloxAPI' Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction VPCCIDR: !Ref VpcCIDR Type: VPC NetworkName: My-VPC

使用 Infoblox 發言自訂資源擷取下一個可用的子網路

傳回值:

infobloxref – Infoblox 參考

network  – 子網路的網路範圍

資源範例:

Subnet1CustomResource: Type: 'Custom::InfobloxAPI' DependsOn: VPCCustomResource Properties: ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction VPCCIDR: !Ref VpcCIDR Type: Subnet SubnetPrefix: !Ref SubnetPrefix NetworkName: My-Subnet

史詩

任務描述所需的技能

建立與 Infoblox 設備連線的 VPC。

登入您中樞帳戶的 AWS 管理主控台,並依照 AWS Quick Starts 中 AWS Cloud Quick Start 參考部署上的 Amazon VPC 中的步驟建立 VPC。

重要

VPC 必須具有與 Infoblox 設備的 HTTPS 連線,建議您為此連線使用私有子網路。

網路管理員、系統管理員

(選用) 建立私有子網路的 VPC 端點。

VPC 端點為您的私有子網路提供公有服務的連線。需要下列端點:

  • Amazon Simple Storage Service (Amazon S3) 的閘道端點,允許 Lambda 與 AWS CloudFormation 通訊

  • Secrets Manager 的界面端點,以啟用與 Secrets Manager 的連線

  • AWS KMS 的界面端點,允許 SNS 主題和 Secrets Manager 秘密的加密

如需為私有子網路建立端點的詳細資訊,請參閱《Amazon VPC 文件》中的 VPC 端點

網路管理員、系統管理員
任務描述所需的技能

建置 AWS SAM 範本。

  1. 在包含 AWS SAM 的環境中執行 unzip Infoblox-Hub.zip命令。

  2. 執行 cd Hub/命令,將您的目錄變更為 Hub目錄。

  3. 執行 sam build命令來處理 AWS SAM 範本檔案、應用程式程式碼,以及任何語言特定的檔案和相依性。sam build 命令也會複製下列案例預期的格式和位置建置成品。

開發人員、系統管理員

部署 AWS SAM 範本。

sam deploy 命令會取得所需的參數並將其儲存至 samconfig.toml 檔案、將 AWS CloudFormation 範本和 Lambda 函數存放在 S3 儲存貯體,然後將 AWS CloudFormation 範本部署到您的中樞帳戶。 

下列範例程式碼示範如何部署 AWS SAM 範本:

$ sam deploy --guided Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [Infoblox-Hub]: AWS Region [eu-west-1]: Parameter InfobloxUsername: Parameter InfobloxPassword: Parameter InfobloxIPAddress [xxx.xxx.xx.xxx]: Parameter AWSOrganisationID [o-xxxxxxxxx]: Parameter VPCID [vpc-xxxxxxxxx]: Parameter VPCCIDR [xxx.xxx.xxx.xxx/16]: Parameter VPCSubnetID1 [subnet-xxx]: Parameter VPCSubnetID2 [subnet-xxx]: Parameter VPCSubnetID3 [subnet-xxx]: Parameter VPCSubnetID4 []: #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]: y #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: n Capabilities [['CAPABILITY_NAMED_IAM']]: Save arguments to configuration file [Y/n]: y SAM configuration file [samconfig.toml]: SAM configuration environment [default]:
重要

您每次都必須使用 --guided選項,因為 Infoblox 登入憑證不會存放在 samconfig.toml 檔案中。

開發人員、系統管理員

相關資源

附件

若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip