我们计划使用非"预烘烤"的AMI EC2实例.即,当它们被旋转时,它们只是AWS linux的安装.我们的引导过程将引入我们需要的各种安装,例如python,tomcat.我们最少有3个实例,最多8个实例.
鉴于这些要求,使用Puppet/Chef是否有用而不是使用Amazon Cloud Formation(CloudInit)?
我能看到的最好的是如果我们使用Puppet,那么我们就会进行声明性编程,这样可以更容易地进行审计,以查看脚本发生了什么.此外,CloudInit有一个16k的脚本大小限制,我们可能会或可能不会遇到.
有没有人从CloudInit转移到Puppet或Chef,因为他们可以在这里回答我的问题?
当我们说cloudformation是'Infrastructure as Code'时,立即想到的下一个问题是如何测试这些代码.我们可以对此代码进行某种基本的单元测试
我正在对云形式验证进行折扣,因为这只是一种进行语法验证的方法,而且我可以使用任何其他免费的JSON/YAML验证器.
我更倾向于某种功能验证,可能测试我已经定义了所有用作引用的变量.可能测试我正在使用的任何属性实际上是该组件支持的属性
不期望它应该测试权限是否正确或我没有用尽我的限制.但至少除了基本的JSON/YAML语法验证之外
使用AWS Cloudformation时,aws cloudformation create-stack由于某些尚不清楚的原因而失败。对于这个问题,错误和解释不相关,但我认为我传递的参数--parameters在 CloudFormation 模板中未正确处理,或者在评估模板中的表达式或引用变量时可能会出现错误。
不管怎样,我真的希望能够在模板评估期间输出一些调试语句或表达式;堆栈的配置。将表达式输出到 CloudWatch Logs 或其他输出通道的CloudFormation 等效项是什么?logging.debug(some-expression)
CloudFormation Stacks 中的事件日志显示了错误(在我的例子中),但遗憾的是没有显示修复错误所需的详细信息。它在执行/配置期间不显示变量或 CloudFormation 表达式的值,并且(据我所知)我无法创建显示变量或表达式值的事件。对于预配任务,CloudWatch Logs 为空。并且aws cloudformation validate-template没有显示任何错误,因此 CloudFormation 模板在语法上是正确的。
我正在使用CloudFormation来启动自动扩展组中的某些服务器,我希望它们都能使用基本监控.我尝试设置Monitoring到false在AWS::AutoScaling::AutoScalingGroup性能以及在AWS::AutoScaling::LaunchConfiguration,但堆栈无法启动; 我看到CREATE_FAILED错误信息:Encountered unsupported property Monitoring.
当我将 CloudFormation 模板上传到 AWS 的管理控制台时,AWS 需要几分钟来处理该模板。
这样做 20 次迭代意味着大量时间只是在等待错误消息。
在将它上传到 AWS 的管理控制台之前是否有任何测试(最好不仅仅是“它是有效的 JSON”)?
例如,一个工具运行:
部署堆栈时遇到的错误:
Syntax errors in policy. (Service: AmazonIdentityManagement; Status Code: 400; Error Code: MalformedPolicyDocument; Request ID:
Run Code Online (Sandbox Code Playgroud)
这是我的角色策略导致错误:
roleEc2:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: Allow
Principal:
Service:
- 'ec2.amazonaws.com'
Action:
- 'sts:AssumeRole'
Path: '/'
Policies:
-
PolicyName: 'bucket-access'
PolicyDocument:
Version: '2012-10-17'
Id: 'BucketPolicy'
Statement:
- Effect: Allow
Action:
- s3:ListBucket
- s3:GetObject
- s3:GetBucketLocation
Resource:
- arn:aws:s3:::code-dir
- arn:aws:s3:::code-dir/*
Principal: !Ref BucketPrincipal
Run Code Online (Sandbox Code Playgroud)
而且我不知道如何调试它,我不知道如何理解哪里有错误,什么行号。
configuration amazon-web-services aws-cloudformation amazon-iam