我在 yq 版本 2.12.0 的就地编辑标志方面遇到了大问题。我们正在尝试更新 .yaml 脚本之一中变量的值。之前的样子是这样的……
authentication:
anonymous:
enabled: false
Run Code Online (Sandbox Code Playgroud)
但我们想要这个
authentication:
anonymous:
enabled: true
Run Code Online (Sandbox Code Playgroud)
我们尝试过奔跑
sudo yq -y ".authentication.anonymous.enabled |= true" sample.yml
Run Code Online (Sandbox Code Playgroud)
但它会覆盖整个文件并使其空白:/我们当前的解决方法是运行
sudo yq -y ".authentication.anonymous.enabled |= true" sample.yml > newfile.yml
sudo cp newfile.yml sample.yml
Run Code Online (Sandbox Code Playgroud)
所以基本上我们创建了我们想要的正确输出,但只需将其推送到一个新文件中,然后将新内容复制到旧文件中(我知道这是一个完整的考验)。必须有更好的方法来完成此任务...有人可以告诉我如何正确使用 yq --in-place 标志编辑文件吗?
我在尝试在 terraform 中自动化标记过程时遇到了一个特定问题。我设置了一个环境变量,它本质上是我们将用于应用程序中配置的所有资源的所有标签的列表。看起来像这样...
export TF_VAR_taglist='{JiraEpic = "ETOS-56","AssignedResearcherPri" = "Isaac",AssignedResearcherSec = "Matt"}'
设置环境变量后,我在变量.tf 文件中添加了一个名为“taglist”的变量,用于获取上述环境变量。看起来像这样...
variable "taglist"{}
最后,我有另一个 locals.tf 文件,我在其中设置了 common_tags 变量。就像这样...
locals { common_tags ="${var.taglist}" }
当我应用 terraform 时,构建在尝试正确映射标签时失败。这是我收到的错误...
Error: Incorrect attribute value type
on kube_master_worker_nodes_ec2.tf line 9, in resource "aws_instance" "master":
9: tags = local.common_tags
|----------------
| local.common_tags is "{JiraEpic = \"ETOS-56\",AssignedResearcherPri = \"Isaac \",AssignedResearcherSec = \"Matt\"}"
Inappropriate value for attribute "tags": map of string required.
Run Code Online (Sandbox Code Playgroud)
map(string然后我决定像这样在 Variables.tf 文件中
定义变量的类型,variable "taglist"{ type = map(string) }
我希望这能让 terraform 将该变量识别为字符串映射,而不仅仅是字符串文字,但我错了,这些是应用该定义时出现的错误。 …