剧本中的文本处理

时间:2015-01-14 12:57:01

标签: ansible ansible-playbook

我正在开发一个ansible playbook来开始我们的配置过程,我接受了许多变量的用户输入,包括主机名和ip。一旦我有了ip,我就可以计算出我需要给Cobbler的网关,但我似乎无法弄清楚如何在一个ansible playbook的限制内将ip变成一个网关。看起来这应该是可能的,但我只是没有看到它。

实际上,到目前为止我唯一提出的解决方案是使用模板创建本地文件(这似乎允许更复杂的模板而不仅仅是过滤器),然后使用local_action来执行该文件。但是有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

如果您只需要将192.168.123.234之类的内容更改为192.168.1.1,那么下面的内容就可以了:

vars:
  ip: '192.168.123.234'

tasks:
- local_action: shell echo {{ ip }} | sed -e 's/\.[0-9]*.[0-9]*.$/.1.1/'
  register: result

- local_action: debug msg={{ result.stdout }}

这有点难看,但它完成了工作。