如何操纵ansible事实?

How to manipulate ansible facts?

我试图弄清楚是否有一种方法可以操纵 ansible 事实,例如,如果 ansible_default_ipv4.address = 10.100.1.7 然后将 10.253.1.7 分配给剧本中的某个变量。

所以基本上我只想将 ansible_default_ipv4.address 的第二个八进制从 100 替换为 253

我同意@ydaetskcoR。你应该展示你到目前为止所做的尝试。因为这很棘手,所以我提供了一个解决方案。可能有更好的解决方案,但这个有效。

  vars:
    myip: 10.100.1.7

  tasks:
  - set_fact: newip="{{ myip | regex_replace('^(\d+)\.100.(\d+\.\d+)$', '\1.253.\2') }}"
  - debug: var=newip

我可以帮助获取 Ansible 2.5.5 中嵌套元素的值(我使用名称服务器作为示例)。您可以使用:

"{{ansible_dns.nameservers[1]}}"

然后您可以使用循环或类似的项目整数替换第 1 个数字。