我正在尝试使用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使用Python 2.7.5,OSX使用Python 2.7.13。
知道这里发生了什么吗?这是一个错误吗?
答案 0 :(得分:2)
问题出在truncate
命令中。
"如果第二个参数为true,则过滤器将剪切文本的长度。否则它将丢弃最后一个字。" Template Designer Documentation
将您的游戏更改为:
- set_fact:
snapshot_id: "production-snapshot-{{ 2000000000 | random | to_uuid | replace('-', '') | truncate(12, 'true', end='') }}"