Sumo Logic CloudFormation tester允许您测试CF以进行验证和部署。
sumologic-cfn-tester的Python项目详细描述
Sumo Logic AWS云信息测试框架
该框架可用于测试AWS云信息模板的整个生命周期,包括验证、部署、部署后和清理。在
该框架为AWS CloudFormation模板执行以下生命周期事件:
- 发布预CFN验证和预CFN验证。在
- 部署事件-执行云信息模板的部署。在
- 部署后事件-执行部署后验证,如资源、输出和参数检查。在
- 清除事件-执行CloudFormation堆栈的清理。在
先决条件
在使用测试框架之前
- 在计算机上安装AWS CLI。在
- 在机器中安装CFN NAG。要安装CFN NAG,请visit。在
安装
框架可以使用pip3 install sumologic-cfn-tester
作为python包安装
使用
要测试CloudFormation模板,请运行命令sumocfntester -f <Test File>
一个额外的标志-d true
可用于启用调试日志记录。在
测试文件
框架需要一个包含测试用例的测试文件(JSON或YAML)格式。下面是一个有效测试文件的示例。 为每个字段添加注释。在
---# Global ConfigurationGlobal:TemplatePath:"../../templates/ParentTemplate.yaml"# Path of the templateTestProjectName:BasicTestProject# Test Project NameParallelTestsRun:5# Number of parallel Tests run. Number of stacks will be deployed parallel on AWS.GlobalParameters:# Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.SumoDeployment:us1SumoAccessID:Parameter_value_2# You can also provide env variables like ${ENV_1}SumoAccessKey:Parameter_value_1SumoOrganizationId:Parameter_value_2RemoveSumoResourcesOnDeleteStack:'true'# Tests ConfigurationTests:-TestName:Do_Not_Install_Nested_Stack# Test Case Number 1Regions:# List of regions where you want to deploy the stack.-ap-south-1Parameters:# Contains Path Or Values. Values: Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.Values:InstallApp:'No'CreateCloudWatchMetricsSource:'No'Skip:false# True if need to skip the test case.Assertions:# All Assertions for post deployment validation. Nested Resources can be provided separated by '.'.-AssertType:ResourceExistence# ResourceExistence validation. Can have list of Resources in Assert object.Assert:Resources:-SumoLogicHelperRole-SumoLogicHelperFunction-SumoRole-sumoNestedAppStack.SumoRole# Shows Nested Stack Resource logical ID. sumoNestedAppStack -> Resource Logical ID of Stack in Parent stack. SumoRole = A Resource in Nested Stack.-AssertType:OutputsCheck# OutputsCheck validation. Can have list of Outputs in Assert object.Assert:Outputs:-LambdaHelperARN-LambdaRoleARN-SumoRoleARN-sumoNestedAppStack.SumoRoleARN-AssertType:ParameterCheck# ParameterCheck validation. Can have Dictionary of Parameters in Assert object.Assert:sumoNestedAppStack:# Resource logical ID. Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.ParentStackName:MasterTemplateInstallApp:'Yes'sumoNestedAppStack.sumoNestedAppStack:# Resource logical ID. Key value pairs for the CloudFormation template parameter. Key = Parameter Name, value = Parameter value.ParentStackName:DoNotInstallInstallApp:'Yes'-TestName:Install_Nested_Stack# Test Case Number 2Regions:-ap-south-1Parameters:Path:Install_Nested_Stack.yaml# Contains Path Or Values. Path: Path of the parameter file.Skip:falseAssertions:-AssertType:ResourceExistenceAssert:Resources:-SumoLogicHelperRole-SumoLogicHelperFunction-SumoRole-sumoNestedAppStack.SumoRole-sumoNestedAppStack-sumoNestedAppStack.sumoNestedAppStack-AssertType:OutputsCheckAssert:Outputs:-LambdaHelperARN-LambdaRoleARN-SumoRoleARN-sumoNestedAppStack-sumoNestedAppStack.SumoRoleARN-sumoNestedAppStack.sumoNestedAppStack-AssertType:ParameterCheckAssert:sumoNestedAppStack:ParentStackName:MasterTemplateInstallApp:'Yes'sumoNestedAppStack.sumoNestedAppStack:ParentStackName:DoNotInstallInstallApp:'Yes'
工艺流程
下面的步骤解释了CF模板所经历的所有过程。在
预部署
对于部署前测试(在将CF模板部署到AWS上之前对其进行验证),我们使用以下第三方软件包。在
- 使用
pip install cfn-lint
安装依赖项。在 - 帮助对CF模板执行一些基本验证,以检查资源、映射和参数。在
- 它还检查CF模板中的条件依赖关系。在
- 有关所有规则的详细信息,请在安装依赖项后尝试运行
cfn-lint -l
。在
B.CFN NAG
- 依赖性要求在机器上安装ruby。在
- 可以使用
gem install cfn-nag
安装依赖项 - 基本的策略有助于检查通配符等
部署
部署过程将CloudFormation模板部署到具有上述区域的AWS帐户。在
部署后
部署后流程检查已部署云信息堆栈上的以下验证。在
A.ResourceExistence——验证检查CloudInformation堆栈和相应的嵌套堆栈中提到的所有资源。 B、 OutputsCheck-验证检查CloudFormation堆栈和相应的嵌套堆栈中提到的所有资源。 C、 ParameterCheck-验证检查CloudFormation堆栈和相应的嵌套堆栈中提到的所有资源。在
清理
清理过程从AWS帐户中删除已部署的堆栈。在
报告生成
将为每个测试文件生成一个报告,其中包含测试文件中测试用例的状态。在
- 项目
标签: