相关疑难解决方法(0)

如何在shell脚本中声明和使用布尔变量?

我尝试使用以下语法在shell脚本中声明一个布尔变量:

variable=$false

variable=$true
Run Code Online (Sandbox Code Playgroud)

它是否正确?另外,如果我想更新该变量,我会使用相同的语法吗?最后,使用布尔变量作为正确的表达式是以下语法:

if [ $variable ]

if [ !$variable ]
Run Code Online (Sandbox Code Playgroud)

bash shell scripting boolean sh

884
推荐指数
14
解决办法
84万
查看次数

Bash中单方括号和双方括号之间的区别

我正在阅读bash示例,if但有些示例是用单个方括号编写的:

if [ -f $param ]
then
  #...
fi
Run Code Online (Sandbox Code Playgroud)

其他双方括号:

if [[ $? -ne 0 ]]
then
    start looking for errors in yourlog
fi
Run Code Online (Sandbox Code Playgroud)

有什么不同?

bash if-statement

142
推荐指数
5
解决办法
5万
查看次数

我应该将.tfstate文件提交给Git吗?

关于是否将.tfstate文件提交到Git 的问题,我有点疑惑.该Terraform文档状态:

Terraform terraform.tfstate默认情况下也会将一些状态放入文件中.这个状态文件非常重要; 它将各种资源元数据映射到实际资源ID,以便Terraform知道它正在管理什么.必须保存此文件并将其分发给可能运行Terraform的任何人.我们建议简单地将其置于版本控制中,因为它通常不会太大.

另一方面,现在,使用Terraform时最佳实践的接受和赞成回答如下:

Terraform配置可用于在不同的基础架构上配置多个盒子,每个盒子可以具有不同的状态.由于它也可以由多个人运行,因此该状态应该位于集中位置(如S3),而不是 git.

(原作者的重点,而不是我)

谁是对的,如果是的话,为什么?

terraform devops

63
推荐指数
4
解决办法
1万
查看次数

有条件地在 Terraform 中创建单个模块

我一直在尝试有条件地使用根模块中的模块,以便在某些环境下不会创建该模块。许多人声称,通过count使用条件将模块中的 设为 0 或 1 即可达到目的。

module "conditionally_used_module" {
  source = "./modules/my_module"
  count  = (var.create == true) ? 1 : 0
}
Run Code Online (Sandbox Code Playgroud)

然而,这改变了 的类型conditionally_used_module:我们将拥有一个包含单个对象的列表(或元组),而不是对象(或映射)。是否有另一种方法可以实现此目的,而不意味着更改模块的类型?

terraform hcl terraform-modules

20
推荐指数
1
解决办法
3万
查看次数

terraform刷新真正做了什么?

使用terraform在AWS中部署相当大的基础架构时,我们的遥控器tfstate已损坏并被删除.

从文档中,我收集到terraform refresh应该查询AWS以获取基础结构的真实状态并按顺序更新tfstate,但这不会发生:我的tfstate未受影响而plan + apply会产生很多Already existing错误.

什么是terraform refresh真的?

amazon-web-services terraform

14
推荐指数
1
解决办法
5684
查看次数

导入 tf 文件中定义的所有资源

假设我已经使用 terraform 来构建我的基础设施,但由于某种原因我的 tfstate 被删除了。这意味着我已经在 tf 文件中定义了我的资源,我只需要重新导入所有内容。

这是否必须是手动过程?

例如,这是我导入 EC2 实例的方式:

terraform import aws_instance.web i-123456
Run Code Online (Sandbox Code Playgroud)

如果我必须为每个资源都这样做,那就太痛苦了(不妨删除所有内容并重新开始)。

如果我已经有了我的 tf 文件,有没有办法只导入其中定义的所有资源?例如,我需要实例 ID 才能导入该实例。terraform import 命令可以读取我的 tf 文件并找到映射到“aws_instance.web”的资源吗?

为了做到这一点,terraform 需要将该 aws 实例映射到 tf 文件中的资源——这当然是 tfstate 的目的。但是 terraform 是否也可以使用资源映射来标记资源?所以我可以对 tf 文件进行导入,terraform 只是动态读取 tf 文件并通过唯一标签找到与 tf 资源对应的物理资源?

terraform

8
推荐指数
1
解决办法
6231
查看次数

无需 AWS 凭证的 Terraform 运行计划

我希望运行一个 terraform 计划来验证用户上传的 terraform 计划文件并检测资源。

但是,目前运行 terraform 计划需要 AWS 凭证。

有没有办法在不使用凭据的情况下运行计划或以另一种方式从 .tf 文件中提取资源列表?

amazon-web-services terraform terraform-provider-aws

2
推荐指数
1
解决办法
912
查看次数