【问题标题】:Need help in templating jinja2在模板 jinja2 方面需要帮助
【发布时间】:2019-04-10 02:49:13
【问题描述】:

如何在此处删除 data-us 之后的单词并在 jinja2 中使用 regex_replace 打印 data-us.example.com。

mouliveera@xxxx$ echo data-us-b.example.com | sed "s/-[a-z]*\(\.example.com\)/\1/"
data-us.example.com

mouliveera@xxxx$ echo data-us-lb.example.com | sed "s/-[a-z]*\(\.example.com\)/\1/"
data-us.example.com

mouliveera@xxxx$ echo data-us-a.example.com | sed "s/-[a-z]*\(\.example.com\)/\1/"
data-us.example.com

【问题讨论】:

  • 我试过endpoint=data-us-lb.example.com; {{端点 | regex_replace("s/-[a-z]*(\." + example.com + ")", "\\1")}},但没有运气。
  • 您的问题似乎与sed 相关,但您已将其标记为ansible 和jinja2。 Ansible 在哪里进入这个问题?
  • 我只是用 sed 来显示我的要求。我需要帮助才能在 jinja2 中使用 regex_replace。
  • 正如@larsks 所说,您实际上需要包含您尝试使用的文字剧本,因为在 yaml 中,引用的样式非常重要。即使在您的sed 示例中,您也应该使用单引号,因为双引号内的反斜杠与单引号内的反斜杠的解释不同(就像马特 P 的回答一样,它出现在我的评论中间;-))

标签: ansible jinja2 rendering


【解决方案1】:

使用你提供的endpoint=data-us-lb.example.com的例子,那么regex_replace的直接翻译是:

"{{ endpoint | regex_replace('-[a-z]*(.example.com)$', '\\1') }}"

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 1970-01-01
    • 2011-01-27
    • 2014-02-06
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多