万字长文|基础架构即代码

本文深入探讨了基础架构即代码在AWS环境中的应用,涵盖资源配置、配置管理、监控与性能、治理与合规以及资源优化。通过AWS CloudFormation、EC2系统管理员、Amazon CloudWatch和AWS Config等服务,实现基础架构自动化和合规性。文章强调了基础架构即代码如何提升DevOps效率,消除手动配置错误,并介绍了最佳实践和工具,以确保资源的高效、安全和合规管理。
摘要由CSDN通过智能技术生成


目 录

  • 基础架构即代码简介

  • 基础架构资源生命周期

  • 资源配置

  • 配置管理

  • 监控与性能

  • 治理与合规

  • 资源优化

  • 下一步

  • 结论

  • 贡献者

摘 要

基础设施即代码已成为自动化基础设施服务供应的最佳实践。本文描述了将基础架构作为代码的好处,以及如何在此领域利用Amazon Web Services的功能来支持DevOps。

DevOps是文化理念,实践和工具的结合,可以提高组织快速交付应用程序和服务的能力。这使您的组织可以更好地响应客户的需求。将基础架构作为准则的实践可以成为催化剂,使达到这样的速度成为可能。


基础架构即代码简介

基础架构管理是与软件工程相关的过程。组织传统上是“堆放”硬件,然后安装和配置操作系统和应用程序来满足其技术需求。云计算利用虚拟化的优势,可以按需供应构成技术基础架构的计算,网络和存储资源。

基础架构管理人员通常手动执行这种配置。手动过程具有某些缺点,包括:

  • 较高的成本,因为它们需要人力资本,否则这些人力资本会用于更重要的业务需求。

  • 由于人为错误而导致的不一致,导致与配置标准的差异。

  • 通过限制组织发布新版本服务以响应客户需求和市场驱动力的速度,缺乏敏捷性。

  • 由于缺乏可重复的流程,很难达到并保持对公司或行业标准的合规性。

基础架构即代码通过将自动化引入供应流程来解决这些缺陷。管理员和开发人员都可以使用配置文件实例化基础结构,而不必依靠手动执行的步骤。基础设施即代码将这些配置文件视为软件代码。这些文件可用于产生一组工件,即构成操作环境的计算,存储,网络和应用程序服务。《基础结构即代码》消除了自动化带来的配置漂移,从而提高了基础架构部署的速度和敏捷性。


基础架构资源生命周期

在上一节中,我们将“基础结构即代码”介绍为一种以可重复且一致的方式供应资源的方法。基本概念也与基础架构技术运营的更广泛角色有关。参考下图。

图1:基础架构资源生命周期

图1展示了组织中基础结构资源生命周期的通用视图。生命周期的各个阶段如下:

  1. 资源配置,管理员根据他们想要的规范来配置资源。

  2. 配置管理,资源成为支持诸如调整和修补之类的活动的配置管理系统的组件。

  3. 监控和性能,监视和性能工具通过检查指标,综合事务和日志文件等项目来验证资源的运行状态。

  4. 合规与治理,法规遵从和治理框架推动了附加验证,以确保与公司和行业标准以及法规要求保持一致。

  5. 资源优化,管理员查看性能数据并确定围绕性能和成本管理等标准优化环境所需的更改。

每个阶段都涉及可以利用代码的过程。这将基础架构即代码的优势从其在供应中的传统角色扩展到整个资源生命周期。这样,每个生命周期都将受益于基础架构即代码提供的一致性和可重复性。基础架构即代码的这种扩展视图导致整个信息技术(IT)组织的成熟度更高。

在以下各节中,我们将探索生命周期的每个阶段-供应,配置管理,监视和性能,治理和合规性以及优化。我们将考虑与每个阶段相关的各种任务,并讨论如何使用Amazon Web Services(AWS)的功能来完成这些任务。


资源配置

信息资源生命周期始于资源供应。管理员可以使用“基础架构即代码”原理来简化配置过程。请考虑以下情况:

  • 发布管理器需要构建基于云的生产环境的副本以用于灾难恢复。管理员设计了一个模板,该模板可以对生产环境进行建模,并在灾难恢复位置配置相同的基础架构。

  • 一位大学教授希望每学期为课程提供资源。班上的学生需要一个环境,其中应包含适合其学习的工具。教授使用适当的基础结构组件创建模板,然后根据需要为每个学生实例化模板资源。

  • 每次安装服务时,必须满足某些行业保护标准的服务都需要具有一组安全控件的基础结构。安全管理员将安全控件集成到配置模板中,以便使用基础结构实例化安全控件。

  • 软件项目团队的经理需要为程序员提供开发环境,其中包括必要的工具以及与持续集成平台交互的能力。管理器创建资源模板,并将模板发布在资源目录中。这使团队成员可以根据需要配置自己的环境。

这些情况有一个共同点:需要可重复的过程以一致地实例化资源。基础架构即代码为此类过程提供了框架。了满足此需求,AWS提供了AWS CloudFormation。


AWS CloudFormation

AWS CloudFormation为开发人员和系统管理员提供了一种以有序且可预测的方式轻松创建,管理,供应和更新相关AWS资源集合的简便方法。AWS CloudFormation使用以JSON或YAML格式编写的模板来描述AWS资源(称为堆栈)的集合,它们的相关依赖关系以及任何必需的运行时参数。您可以重复使用模板,以在AWS区域中一致地创建同一堆栈的相同副本。部署资源后,可以以可控且可预测的方式修改和更新它们。实际上,您正在以与应用程序代码相同的方式将版本控制应用于AWS基础架构。


模板解析

图2显示了基本的AWS CloudFormation YAML格式的模板片段。模板包含参数,资源声明和输出。模板可以引用其他模板的输出,从而可以实现模块化。

---
AWSTemplateFormatVersion: "version date"
Description:
String
Parameters:
set of parameters
Mappings:
set of mappings
Conditions:
set of conditions
Transform:
set of transforms
Resources:
set of resources
Outputs:
set of outputs

图2:AWS CloudFormation YAML模板的结构

图3是一个AWS CloudFormation模板的示例。该模板在参数部分中向用户请求Amazon Elastic Compute Cloud(EC2)密钥对的名称。然后,模板的资源部分使用该密钥对创建一个EC2实例,并使用启用HTTP( TCP端口80)访问。

Parameters:
  KeyName:
  Description: The EC2 key pair to allow SSH access to the instance
Type: AWS::EC2::KeyPair::KeyName Resources:
Ec2Instance:
Type: AWS::EC2::Instance Properties:
SecurityGroups: !Ref InstanceSecurityGroup KeyName: !Ref KeyName
ImageId: ami-70065467 InstanceSecurityGroup:
Type: AWS::EC2::SecurityGroup Properties:
GroupDescription: Enable HTTP access via port 80 SecurityGroupIngress:
- IpProtocol: tcp FromPort: '80'
ToPort: '80' CidrIp: 0.0.0.0/0

图3:AWS CloudFormation YAML模板的示例


变更集

您可以使用应用程序源代码更新AWS CloudFormation模板,以添加,修改或删除堆栈资源。变更集功能使您可以预览对堆栈的建议变更,而无需执行相关更新。您可以使用AWS Identity and Access Management(IAM)控制创建和查看变更集的能力。您可以允许某些开发人员创建和查看变更集。预览更改集,同时保留更新堆栈或执行更改集到少数选择的功能。例如,您可以允许开发人员在将模板更改推广到测试阶段之前先查看其影响。

与变更集的使用相关的三个主要阶段。

1.创建变更集。

要为堆栈创建更改集,请将对模板的更改或参数提交给AWS CloudFormation。AWS CloudFormation通过将当前堆栈与您的更改进行比较来生成更改集。

2.查看更改集。

您可以使用AWS CloudFormation控制台,AWS CLI或AWS CloudFormation API来查看更改集。AWS CloudFormation控制台以JSON格式提供更改的摘要和更改的详细列表。AWS CLI和AWS CloudFormation API以JSON格式返回详细的更改列表。

3.执行更改集。

您可以在AWS CloudFormation控制台中选择并执行更改集,使用AWS CLI中的aws cloudformation execute-change-set命令或ExecuteChangeSet API。

更改集功能使您能够跟踪从一个版本到下一个版本实际发生的更改,从而超越了AWS CloudFormation中的版本控制。开发人员和管理员可以在促进变更之前获得对变更影响的更多见解,并最大程度地降低引入错误的风险。


可重用模板

许多编程语言提供了使用功能和子例程等结构对代码进行模块化的方法。同样,AWS CloudFormation提供了多种管理和组织堆栈的方式。尽管您可以将所有资源维护在一个堆栈中,但是大型的单堆栈模板可能变得难以管理。遇到许多AWS CloudFormation限制的可能性也更大。

在设计AWS CloudFormation堆栈的架构时,您可以按功能对堆栈进行逻辑分组。您可以使用嵌套堆栈或跨堆栈引用,而不是创建包含所需的所有资源(例如虚拟私有云(VPC),子网和安全组)的模板,而是使用嵌套堆栈或跨堆栈引用。嵌套堆栈功能使您可以在AWS CloudFormation模板内创建新的AWS CloudFormation堆栈资源,并在两个堆栈之间建立父

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值