Jinja可变阵列动力学



我最近开始使用谷歌云部署,我来自AWS CloudFormation(以及Terraform(,我真的很难以动态的方式使用Jinja,而我在其他方面做得很简单。

我目前的问题是,我的部署完全是基于一些用户输入的动态部署,因此在AWS CF和Terraform(同时指向AWS和GCP(中,我使用地图来获得由先前选择确定的设置。以下是Terraform的一个例子:

variable "Cluster_Instance_Map" {
type = map
default = {
"C1" = "Single-Node : 0 : A : B"
"C2" = "Multi-Node : 2 : Q : R"
"C3" = "Multi-Node : 4 : X : Y"
"C4" = "Multi-Node : 8 : S : T"
...
}
}

然后,例如,我将通过使用用户以前从"C1、C2、C3、C4"中选择的Cluster_Config_Choice变量来获取相应行的第一个值,如下所示:

split ( " : ", var.Cluster_Instance_Map[ var.Cluster_Config_Choice ] ) [0]

到目前为止,我真的很难在Jinja中为GCP重新创建这种类型的变量。一般来说,我是GCP的新手,但也是Jinja的新手,我在网上发现的东西在很大程度上比任何事情都更让我困惑,所以我们非常感谢任何帮助!

---编辑---

根据请求,我将详细介绍我迄今为止对金贾所做的一切,尽管遗憾的是,这并不算太多。我最初的想法是通过使用LIST和SPLIT。我想我可以做以下事情:

{% set list_example = ({ "A" : "1 ; 2 ; 3", "B" : "4 ; 5 ; 6" }) %}
{{ list_example [ user_input_variable ].split(';')[1] }}

然后第二行将返回;5〃;如果用户选择了B。我确实编写了代码(第二行(,所以它不适用于语法错误(100%预期(,但我不知道它是否接近。

列表和拆分是可行的吗?或者有没有我错过的类似MAP的功能。

我也不知道如何将我的SET函数放在多行中而不出错,所以很抱歉上面的混乱。虽然我认为谷歌可以在我不忙的时候告诉我>gt;

希望这有助于澄清问题。

在兜圈子,并在这个过程中学习了很少的东西之后,我实际上意识到我的答案是我已经尝试过的。。。我在上面发布的代码说不起作用,起作用——尽管事实证明还有很多其他原因没有起作用,但与它本身没有直接关系。

因此,我在Terraform/AWS CF中重新创建"地图"的答案如下:

{% set Cluster_Instance_Map = ({
"C1" : "Single-Node : 0 : A : B",
"C2" : "Multi-Node : 2 : Q : R",
"C3" : "Multi-Node : 4 : X : Y",
"C4" : "Multi-Node : 8 : S : T",
...
}) %}
{% set user_input_variable = "C3" %}
{{ Cluster_Instance_Map [ user_input_variable ].split(':')[1] }}

在这种情况下,最后一个片段将返回数字4。我的代码也是跨多行的,所以现在读起来也容易多了——这也是一个无关的问题(如前所述,我对谷歌和Jinja完全陌生,所以吸取了教训(。

不过,我必须说,与其他文档相比,谷歌云的文档确实很糟糕。很容易放松自己。所以,尽管上面的问题并不需要答案,但最好把它放在这里,以防其他人有类似的问题。

相关内容

  • 没有找到相关文章

最新更新