Ansible截短连接字符串

Ansible截短连接字符串,ansible,Ansible,我正在Ansible中生成一个yaml模板,并尝试截断两个串联字符串: 在这里,以下代码不起作用,因为连接没有正确地导入regex_replace。 我只需要前n个字符(本例中的前10个字符) 通常我可以把这两个变量组合成一个变量,然后 {{variabel[:10]} 但在这种情况下,我无法做到这一点,因为我正在处理的文件正在与变量组合,然后保存为yaml文件 基本上,我想截断字符串,而不必首先组合或创建新变量 - hosts: localhost gather_facts: False

我正在Ansible中生成一个yaml模板,并尝试截断两个串联字符串: 在这里,以下代码不起作用,因为连接没有正确地导入regex_replace。 我只需要前n个字符(本例中的前10个字符)

通常我可以把这两个变量组合成一个变量,然后

{{variabel[:10]}

但在这种情况下,我无法做到这一点,因为我正在处理的文件正在与变量组合,然后保存为yaml文件

基本上,我想截断字符串,而不必首先组合或创建新变量

- hosts: localhost
  gather_facts: False


  vars:
    foo: "somelongstring"


  tasks:
- name: Display debug output
        debug:
          msg: "{{ foo  + '-moretext' | regex_replace('^.{0,10}', '\\1')  }} "

要在复杂表达式(而不是一系列筛选器)上应用筛选器或运算符,必须用括号将其括起来

因此,要在1个操作中截断串联的结果:

msg: "{{ (foo  + '-moretext')[:10] }} "
顺便说一句,还有:


正是我想要的,谢谢。。我在ansible docs上找不到truncate筛选器,但我确实找到了它,它将在我的书签文件夹中有一个安全的位置:大多数筛选器都是jinja2内置筛选器:。Ansible添加的筛选器记录在此处:。您找到的链接是所有可用筛选器的良好摘要。
msg: "{{ (foo  + '-moretext') | truncate(10, True, '') }} "