我可以在带Terraform的AWS EC2实例配置文件中承担角色吗?

时间:2018-08-20 12:25:35

标签: amazon-web-services amazon-ec2 terraform terraform-provider-aws

我遇到了一种情况,我试图在ec2-instance的kubernetes(k8s)的jenkins中运行terraform(v0.11.7)脚本。

  • k8s worker正在具有特定AWS实例配置文件的ec2实例上运行
  • terraform脚本是通过各种环境变量,凭据配置的 和配置文件,以便能够为此目的承担特定角色

该设置可以在我的Macbook上正常运行,但可悲的是,在jenkins / k8s / ec2中,ec2实例配置文件占主导,并且terraform脚本失败,因为它需要特定的假定角色才能完成操作。

terraform plan步骤上实际上失败了,显示了TF_LOG的输出,表明角色是从实例配置文件派生的。

想知道是否有人遇到这种情况并有相关指导吗?

1 个答案:

答案 0 :(得分:0)

在我的特定用例中,看起来特别的调味料是Terraform的aws提供者skip_metadata_api_check flag,它显然抑制了Terraform承担ec2 instance-profile角色的行为,并允许其回退到其正常机制在我的特定设置中承担角色。

我的特定设置涉及与提供商共享的credentialsconfig文件一起使用的profile argnamed profile feature一起使用。

Terraform中另一个假定角色的选项是提供者的assume_role arg,但是我更喜欢抽象的profile选项。

  

我还发现,将AWS_PROFILE环境变量与AWS Go SDK(由Terraform使用)的the less well documented AWS_SDK_LOAD_CONFIG environment variable结合使用也可以作为替代方法,并且可以省略{{1 }}的论点可能更吸引一些人