ansible模板在OSX上扩展,而不是在Linux上

ansible模板在OSX上扩展,而不是在Linux上,ansible,jinja2,Ansible,Jinja2,我正在尝试使用set_fact构建一个剧本,但是模板似乎 当我在OSX上进行本地测试而不是通过调用ansible时进行扩展 詹金斯在Linux上。这是一句话: - set_fact: snapshot_id: "production-snapshot-{{ 2000000000 | random | to_uuid | replace('-', '') | truncate(12, end='') }}" 当我在OSX上测试这个时,值会正确填充如下内容 “生产快照-4d378e43ee

我正在尝试使用set_fact构建一个剧本,但是模板似乎 当我在OSX上进行本地测试而不是通过调用ansible时进行扩展 詹金斯在Linux上。这是一句话:

- set_fact:
    snapshot_id: "production-snapshot-{{ 2000000000 | random | to_uuid | replace('-', '') | truncate(12, end='') }}"
当我在OSX上测试这个时,值会正确填充如下内容 “生产快照-4d378e43eede”。当我在Linux上的Jenkins中调用它时 值为“生产快照-”。没有其他输出或错误 除截断值之外的消息

两种环境都使用ansible 2.3.0。Linux使用Python2.7.5,OSX使用Python2.7.13


知道这是怎么回事吗?这是错误吗?

问题出在
truncate
命令中

“如果第二个参数为true,则筛选器将剪切文本的长度。否则,它将放弃最后一个单词。”

将您的播放更改为:

- set_fact:
    snapshot_id: "production-snapshot-{{ 2000000000 | random | to_uuid | replace('-', '') | truncate(12, 'true', end='') }}"

问题出在
truncate
命令中

“如果第二个参数为true,则筛选器将剪切文本的长度。否则,它将放弃最后一个单词。”

将您的播放更改为:

- set_fact:
    snapshot_id: "production-snapshot-{{ 2000000000 | random | to_uuid | replace('-', '') | truncate(12, 'true', end='') }}"

尝试使用
random()
而不仅仅是
random
@Jack我尝试完全删除随机调用,但这无助于解决此问题。
truncate(12)
有什么用?这就去掉了uuid部分。据我所知,截断会去掉12个字符以外的任何字符。你需要
truncate(12,'true',end='
)。尝试使用
random()
而不是
random
@Jack。我尝试完全删除随机调用,但这无助于解决这个问题。
truncate(12)是怎么回事
?这就去掉了uuid部分。据我所知,truncate去掉了12个字符以外的任何字符。您需要
truncate(12,'true',end=''
。有一点需要澄清的是,似乎被破坏的truncate()是如何实现的OSX上的调用工作?我不运行OSX,所以我不能说。我能够在Linux中重现他的错误并修复它。有一点需要澄清,似乎被破坏的truncate()调用如何在OSX上工作?我不运行OSX,所以我不能说。我能够在Linux中重现他的错误并修复它。