问题标签 [infrastructure-as-code]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
terraform - terragrunt 不接受 vars 文件
我正在尝试使用 2-repo IaC,所谓的后端采用terragrunt
模块的形式,而前端(或live
)具有正在填充变量的此类模块的实例化。
下图描述了这 2 个 repos 的结构(顾名思义是terragrunt
后端和实时的)。terraform-live
在 myterragrunt/aws-vpc/variables.tf
中,有以下声明:
但是,当尝试terragrunt apply
在实时目录中执行时,我得到以下信息:
这是我的terraform-live/environments/staging/terragrunt.hcl
更重要的是,该变量似乎是在terragrunt
指示从以下位置读取变量的文件之一中声明的:
为什么terragrunt
(或terraform
?)无法读取特定变量?
terraform - 无法在创建虚拟机时使用副本 - Terraform
我正在尝试从变量文件中的列表创建多个虚拟机。我有一个包含两个虚拟机名称的列表。我可以创建它们,但是当我尝试使用 count 命令时,它无法正确循环以将 nics 分配给 vm。请看下文。我收到的错误是“调用函数“元素”失败:不能使用带有空列表的元素函数。
firebase - 我可以使用 GCP 基础架构作为代码来设置 Firebase Auth、Firestore、RDB、Cloud Functions 吗?
我知道我可以使用基础设施作为代码设置 Cloud Firestore 和 GCP Cloud Functions,但我很感兴趣它将在 Firebase 控制台上显示。我也找不到使用 IaaC 部署 Firebase 身份验证和实时数据库的任何方法。
amazon-web-services - 使用 Terraform 为 AWS Cognito 用户池设置帐户恢复首选项
本着基础设施即代码的精神,我使用有用的aws_cognito_user_pool
资源通过 Terraform 配置了 AWS Cognito 用户池。
但是,我似乎无法在MFA 和验证部分下找到帐户恢复首选项的参数/配置映射。
如果没有说明,这似乎是我的默认选择:
(不推荐)电话(如果可用),否则发送电子邮件,如果用户也将其用于 MFA,则允许用户通过电话重置密码。
目标
我想将其设置为Email only
,如下图红色矩形所示:
有谁知道我需要使用什么 Terraform 参数来实现这一点?资源中记录的选项aws_cognito_user_pool
似乎都没有映射到这一点。
infrastructure-as-code - 什么是基础架构即代码 (IaC) 的示例?
我多次遇到“IaaC”(或 IaC)这个词。当我用谷歌搜索它时,它告诉我:
基础设施即代码 (IaC) 是通过机器可读的定义文件而不是物理硬件配置或交互式配置工具来管理和配置计算机数据中心的过程。
Kubernetes 中使用的 yaml 文件可以作为 IaC 的示例吗?也许甚至 Dockerfile 也可以这样认为?如果没有,你能给我一些 IaC 的例子吗?
例如 :
azure - 了解terraform中的共享模块和destroy命令,销毁时如何排除共享模块?
我目前正在 Terraform 中编写一些新的 Azure 基础架构的脚本,并使用嵌套模块来执行此操作,以使我们基础架构的不同部分的管理和部署变得更好和受限。
我创建了一个名为global
,其中包含多个共享资源(几乎只是 azure 资源组和权限)以及一些 azure 广告查找和当前的客户端配置。将这些放在一个中央模块中似乎很有意义,可以避免代码重用并确保在整个项目中始终如一地处理它们。
但是,我注意到当我terraform destroy
从任何模块运行时,全局模块中的所有对象都被标记为被销毁。有没有办法从销毁过程中排除嵌套模块?
我实际上是否应该将我的全局模块中的资源创建(它们是专门的资源组和应用于这些资源组的权限)放在一个单独的非嵌套模块中,然后使用我的嵌套全局模块的数据模块来查看提高他们的价值观等?
全局模块的示例代码:-
以及在我的一个嵌套模块中的用法示例,以在此实例中创建数据库资源:-
然后在一个单独的模块中,使用以下代码创建一个密钥库,重用全局模块的一些输出:-
azure - ARM 模板 - 使用 Powershell 传递参数并使用 Secret 值
我很确定我知道答案是否定的,但我的方案有多种要求:我正在设计一个 ARM 模板以共享给一组系统管理员,以便将 Win 服务器部署到 Azure。
我在它周围包装了一个 PowerShell 函数,所以它可以像这样使用
New-AzureVM -vmName "test01" -OsVersion "Server 2019" etc 这将构建值并将其通过管道传输到 New-AzResourceGroupDeployment
我还需要传递秘密值以将 VM 加入域并在 VM 上使用本地管理员帐户。我相信这需要一个参数文件。
但是,如果使用参数文件,我似乎找不到在使用远程存储库时也通过 PowerShell 传递参数的方法。
我目前正在使用 Azure 容器 blob 中的模板进行测试,并使用 -templateURI 和 -templateParameterURI 引用 SAS 令牌。但是您不能在主模板中拥有参数文件和参数。有没有办法实现这一目标?
我想要实现的所有工作都可以使用本地存储库 - 所以在我放弃并只是向系统管理员展示如何使用 Git 在本地克隆远程存储库之前 - 我想我会联系社区。
azure - 使用 terraform 进行增量更新
我在或阉割我的 Azure 环境中使用 Terraform。目前我可以执行增量更新。当我运行一个新计划时,它试图破坏所有以前的;y 应用的资源。例如,我创建了一个新的虚拟机,接下来我运行一个新的计划来创建一个角色,它将虚拟机标记为销毁。
我知道 Azure ARM 的部署模式为incremental
or complete
。
是否可以deployment_mode
从 terraform 访问该属性?
例如,在这个脚本中:
有没有办法设置deployment_mode
?
azure - 未找到 ARM 模板部署资源命名空间
我有一个自定义 ARM 模板,它部署了一个带有子 EventHub 的 EventHub 命名空间,该子 EventHub 又具有两个 AuthorizationRules 和一个 ConsumerGroup 作为子级。验证通过,但我收到部署错误。似乎 Azure 资源管理器首先尝试在命名空间存在之前部署授权规则,即使我添加了所需的“dependsOn”属性,但随后部署从头到尾进行并成功部署了每个资源。如果我只从门户部署它可能是可以容忍的,但是当我以编程方式部署此模板时,即使部署“成功”并且我的回滚机制触发,我也会收到错误消息。
以下是门户网站给出的错误链接:
这是我的 ARM 模板(评论只是为了帮助您找到资源):
谢谢你。
azure - Terrafrom 初始化失败并出现错误 - 提供者 azurerm 的版本约束无效
当我terraform init
在 Azure 云 shell 中运行命令时,出现以下错误:
正在初始化模块...
警告:跳过后端初始化等待配置升级
根模块配置包含可以通过运行配置升级工具修复的错误,因此 Terraform 正在跳过后端初始化。请参阅下面的详细信息。
错误:提供程序版本约束无效
这是我的 tf 文件。