如何使用Packer的AWS角色来创建AMI

时间:2016-03-30 13:58:10

标签: amazon-web-services packer

我目前正在通过Packer构建AMI而没有任何问题,但我正在将AWS凭据烘焙到我的脚本中,这不是我想要的。阅读Packer文档,他们指定如果未找到凭据,则可以使用AWS角色。

我已经创建了策略和角色,但我不清楚如何告诉Packer使用此角色。我是否必须将ARN作为变量传递?

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

角色仅适用于在AWS 上运行的实例,并且只能在创建实例时应用角色(尽管您可以稍后更改分配给该角色的权限)

因此,在这种情况下,如果您想使用角色进行AMI创建,则需要...

  1. 创建具有权限的角色(即Kush提供的链接中详述的角色)以创建AMI
  2. 使用该角色创建实例
  3. 在该实例上安装Packer
  4. 使用该实例然后,您可以创建AMI而无需指定任何凭据。

答案 1 :(得分:0)

如果您想从命令行(例如来自Jenkins)设置Packer在创建AMI期间使用的IAM角色,那么您可以使用变量来执行此操作,例如 在Packer脚本中使用以下内容:

"variables": {
  "packer_profile": "packer",
  ...
},
"builders": [
  {
    "type": "amazon-ebs",
    ...
    "iam_instance_profile": "{{user `packer_profile`}}",
    ...
  }
],
"provisioners": [
  ...
]

因此,我们为packer_profile变量提供默认“packer”值。然后,当从Jenkins的命令行调用Packer时,使用以下方法覆盖该默认变量值:

$ /path/to/packer -var packer_profile="MyNewProfileHere" ...

希望这有帮助!