Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitHub针对Terraform的行动-如何提供;terraform.tfvars“的;具有aws凭据的文件_Terraform_Terraform Provider Aws_Github Actions - Fatal编程技术网

GitHub针对Terraform的行动-如何提供;terraform.tfvars“的;具有aws凭据的文件

GitHub针对Terraform的行动-如何提供;terraform.tfvars“的;具有aws凭据的文件,terraform,terraform-provider-aws,github-actions,Terraform,Terraform Provider Aws,Github Actions,我正在尝试设置GitHub操作以执行terraform模板 我的困惑是-如何提供具有aws凭据的*.tfvars文件。(我无法签入这些文件) 在需要aws\u access\u密钥和aws\u secret\u密钥的地方,共享地形命令(如plan或apply)期望的变量值的最佳做法是什么。 这是我的GitHub项目- 这里有任何指导…您不需要通过*.tfvars文件提供所有变量。除了-var file选项外,terraform命令还提供了-var参数,您可以使用该参数传递机密 通常,机密通过环境

我正在尝试设置GitHub操作以执行terraform模板

我的困惑是-如何提供具有aws凭据的*.tfvars文件。(我无法签入这些文件)

在需要aws\u access\u密钥和aws\u secret\u密钥的地方,共享地形命令(如plan或apply)期望的变量值的最佳做法是什么。

这是我的GitHub项目-


这里有任何指导…

您不需要通过*.tfvars文件提供所有变量。除了
-var file
选项外,terraform命令还提供了
-var
参数,您可以使用该参数传递机密

通常,机密通过环境变量传递给脚本。CI工具为您提供了在项目配置中定义环境变量的选项。这是一个手动步骤,因为正如您已经注意到的,机密不能存储在存储库中

我没有特别使用Github操作,但是在设置环境变量之后,您需要做的就是运行terraform并从中读取机密:

$terraform-var file=some.tfvars-var“aws secret=${aws\u secret\u ENVIRONMENT\u VARIABLE}
这样,存储库代码中就不会存储任何机密。如果要在本地运行terraform,首先需要在shell中导出以下变量:

$export AWS\u SECRET\u ENVIRONMENT\u VARIABLE=“…”

尽管Terraform允许通过其配置参数向某些提供商提供凭据,以便在复杂情况下保持灵活性,但向提供商传递凭据的推荐方法是通过某些对相关供应商来说是标准的方法

特别是对于AWS,主要的标准机制是或通过。如果您将操作配置为遵循其中一个指南中的描述,则Terraform的AWS提供程序将自动查找这些凭据,并以与AWS CLI相同的方式使用它们

听起来,在GitHub操作中使用环境变量更容易,在这种情况下,您可以直接设置必要的环境变量,AWS提供程序应该自动使用它们。如果您使用的是S3状态存储后端,那么它也将自动使用标准AWS环境变量

如果您的系统包含多个AWS帐户,则您可能希望查看Terraform documentation guide(地形文档指南),以了解有关如何建模的一些想法。该指南建议的总结是,只为您的AWS用户及其相关凭据预留一个特殊帐户,然后配置您的其他帐户以允许交叉帐户通过角色访问,然后您可以使用一组凭据来运行Terraform,但要配置AWS提供程序的每个实例,使其为提供程序实例应与之交互的任何帐户承担适当的角色