Find longest common suffix in Terraform? -> 在Terraform中找到最长的公共后缀?

huangapple go评论92阅读模式
英文:

Find longest common suffix in Terraform?

问题

在Terraform中,您可以使用以下方式来找到这些字符串的最长公共后缀:

  1. locals {
  2. dns_names = [
  3. "b-1.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com",
  4. "b-2.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com",
  5. "b-3.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com",
  6. ]
  7. }
  8. data "external" "find_common_suffix" {
  9. program = ["bash", "-c", "echo '${join(",", local.dns_names)}' | rev | awk -F, '{print $1}' | rev"]
  10. }
  11. output "longest_common_suffix" {
  12. value = data.external.find_common_suffix.result
  13. }

这个Terraform配置将给出这些DNS名称的最长公共后缀,并将其存储在longest_common_suffix输出中。

英文:

I have a string of DNS names seperated by , like this:

  1. b-1.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com,b-2.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com,b-3.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com

I want to find the longest common suffix of these strings, which in this case is .cluster.abcdef.c2.kafka.us-east-1.amazonaws.com

How can I achieve this in Terraform?

答案1

得分: 1

这是一个简单的示例,如果您使用适当的编程语言:

  1. # util.py
  2. import os.path as p
  3. import sys
  4. import json
  5. r_dns_names = sys.argv[1][::-1]
  6. r_split_dns_names = r_dns_names.split(",")
  7. print(json.dumps({"output": p.commonprefix(r_split_dns_names)[::-1]}))
  1. locals {
  2. s = "b-1.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com,b-2.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com,b-3.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com"
  3. }
  4. data "external" "util" {
  5. program = ["python3","util.py","${local.s}"]
  6. }
  7. output "dns" {
  8. value = data.external.util.result.output
  9. }
  1. $ terraform apply -auto-approve
  2. ...
  3. Outputs:
  4. dns = ".cluster.abcdef.c2.kafka.us-east-1.amazonaws.com"
英文:

This is simple if you use a proper programming language:

  1. # util.py
  2. import os.path as p
  3. import sys
  4. import json
  5. r_dns_names = sys.argv[1][::-1]
  6. r_split_dns_names = r_dns_names.split(",")
  7. print(json.dumps({"output": p.commonprefix(r_split_dns_names)[::-1]}))
  1. locals {
  2. s = "b-1.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com,b-2.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com,b-3.cluster.abcdef.c2.kafka.us-east-1.amazonaws.com"
  3. }
  4. data "external" "util" {
  5. program = ["python3","util.py","${local.s}"]
  6. }
  7. output "dns" {
  8. value = data.external.util.result.output
  9. }
  1. $ terraform apply -auto-approve
  2. ...
  3. Outputs:
  4. dns = ".cluster.abcdef.c2.kafka.us-east-1.amazonaws.com"

huangapple
  • 本文由 发表于 2023年5月13日 23:29:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/76243533.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定