2

我在尝试通过自动缩放使 Cloud Formation 模板正确运行时遇到了很多麻烦。我有以下资源:

"LaunchConfig" : {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Properties" : {
    "KeyName" : { "Fn::FindInMap" : [ "EnvironmentToKeyName", { "Ref" : "Environment" }, "KeyName" ] },
    "ImageId" : { "Fn::FindInMap" : [ "AWSRegionToAMI", { "Ref" : "AWS::Region" }, "AMI" ] },
    "SecurityGroups" : [ "neat_spi" ],
    "InstanceType" : { "Ref" : "InstanceType" },
    "UserData" : { "Fn::Base64" : {
        "Fn::Join" : ["", [ "<script>", "call c:\\chef\\boot.bat", { "Ref" : "Environment" }, "</script>"]]
      }
    }
  }
}

但是当机器启动时,这个脚本看起来根本没有运行。我如何确保它运行?或者我如何弄清楚它为什么没有运行?

我在任何地方都找不到任何关于如何查看它是否运行的日志记录。

4

3 回答 3

4

有几件事要寻找...

  1. 验证已安装 cfn 工具
  2. 查看 c:\cfn 子目录 - 有一条名为日志的路径漂浮在某处 - 复习一下。
  3. 查看程序文件\amazon\ec2tools - 那里有一个日志目录。检查以确保它正在运行脚本
  4. 在上面的目录中,有一个名为 scripts 的文件夹 - 您应该会看到类似 userdata.bat 的内容 - 尝试运行它以确认它有效。

对 CloudFormation 和 Userdata 进行故障排除非常耗时 - 并且可能代价高昂 - 因为每次启动和停止实例时都会收取一小时的费用。对亚马逊有很大好处的东西。(请提供每分钟定价)

于 2013-08-23T02:36:13.070 回答
3

我也花了很长时间让脚本在我的 AMI 上运行。当我使用标准的 Amazon AMI 时它可以工作,但它不适用于我的自定义构建 AMI。

然后我找到了这个链接Create a Standard Amazon Machine Image Using Sysprep

总结一下,我

  1. 我确保已打开终止保护(这导致我失去了一次所有工作)
  2. 在新的 Windows 实例中启动
  3. 我通过安装所需的 Windows 功能和安装所需的 .MSI 来自定义实例。
  4. 我打开了 Windows 更新并清除了回收站
  5. EC2ConfigService Settings开始->所有程序
  6. 我在“常规”选项卡上选中了“为下一次服务启动启用用户数据执行(在 SysPrep 自动启用),例如。<script></script> or <powershell></powershell> ” 。
  7. 确保在“图像”选项卡上设置了正确的密码策略。我选择了随机。
  8. 单击应用,然后单击使用 SysPrep 关闭
  9. 当 EC2 实例最终停止时,您可以从 AWS 控制台创建映像。

这个新的 AMI 能够正确运行我的 UserData 脚本。

于 2016-06-15T05:38:06.077 回答
0

VM 启动后,您可以使用 WinRM 在其上运行远程命令。这是一个示例客户端:

https://github.com/WinRb/WinRM

确保在您的 Windows AMI 中启用了 WinRM,并且在安全组中打开了正确的端口。

于 2013-07-16T01:53:37.250 回答