Terraform AWS user_data无法使用自定义AMI图像

时间:2017-06-15 19:11:24

标签: amazon-web-services terraform

我目前拥有自定义AWS AMI图片,而Terraform无法在user_data部分执行脚本或内联代码。它适用于AWS AMI映像,但不能用于我自己的映像。

{
  "rules": {
    "notes": {
      ".read": "auth.uid == 'iLH4Kg20shViwJebCmU8Ynp0OG23'",
      ".write": "auth.uid == 'iLH4Kg20shViwJebCmU8Ynp0OG23'"
    }
  }
}

1 个答案:

答案 0 :(得分:2)

在EC2实例上设置user_data时,AWS只会通过the metadata API将此数据提供给实例。然后,安装在AMI中的软件必须检索此数据并决定如何处理它。

您可以在实践中看到这一点,方法是登录您的实例并运行如下命令,假设您有curl可用:

curl http://169.254.169.254/latest/user-data

如果按预期工作,您应在此处看到为user_data指定的值。

处理用户数据的最常用方法是通过cloud-init,这是一个设计用于在实例启动时运行的程序(例如通过systemd,init等),它检索user_data并采取各种行动取决于它在那里找到的东西。例如,如果检索到的数据看起来像普通shell脚本,那么cloud-init将执行该脚本。

cloud-init还有其他替代方案,例如CoreOS Ignition。如果您有独特的需求,您也可以自由编写自己的程序来处理启动时配置。

在此处启动和运行的最简单方法是确保{J} 1作为AMI创建的一部分安装并配置为在引导时运行。然后,您将看到Amazon Linux或Ubuntu的AMI熟悉的启动时配置行为。