Terraform路径展开功能在复杂项目中不起作用?

问题描述

我是不熟悉terraform的新手,但是我的任务是管理一个涉及多个帐户和环境的相当复杂的项目,我们有很多tf文件,每个文件中都有很多行。显而易见,有些事情在最佳实践中还没有完成。例如,我们为提供者进行以下配置:

   provider "aws" {
      region    = var.region
      access_key = "my-access-key"
      secret_key = "my-secret-key"
      assume_role {
        role_arn = "arn:aws:iam::xxxxxxxxxxx:role/aaaaaaaaaaaaa"
      }
    }

我们在配置文件中对凭证进行了硬编码!因此,我决定需要将其替换为以下内容

   provider "aws" {
      region    = var.region
      shared_credentials_file = "/home/jerry/.aws/credentials"
      assume_role {
        role_arn = "arn:aws:iam::xxxxxxxxxxx:role/aaaaaaaaaaaaa"
      }
    }

这很好,没有问题。因为我们有一个团队,所以我决定使用pathexpand,以便团队中的每个人都可以使用自己的凭据:

   provider "aws" {
      region    = var.region
      shared_credentials_file = pathexpand("~/.aws/credentials")
      assume_role {
        role_arn = "arn:aws:iam::xxxxxxxxxxx:role/aaaaaaaaaaaaa"
      }
    }

但是,这不再起作用了。我收到以下错误

Error: The role "arn:aws:iam::xxxxxxxxxxx:role/aaaaaaaaaaaaa" cannot be assumed.

  There are a number of possible causes of this - the most common are:
    * The credentials used in order to assume the role are invalid
    * The credentials do not have appropriate permission to assume the role
    * The role ARN is not valid

我尝试使用非常简单的配置启动一个新的测试项目,它可以与pathexpand一起使用,没问题。但是它不能与我所负责的(大型)项目一起使用。

也许某处有某些配置禁止使用功能pathexpand?还是有些环境变量会改变行为?我已经研究了整整一天,却找不到答案。

请帮助,感谢您的见解!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)