我有四个系统,在这些系统中,我需要提取事实,然后将它们用作jinja 2模板上的变量。 真实的主机名带有带短划线的前缀,这使得很难将整个主机名用作变量。 系统设置为:
office1
debn-web01
ubun-web02
office2
linx-web01
linx-web02
在Ansible剧中,我有:
vars:
office1:
web01:
myip: 10.10.10.10 // or fact
peer: 10.10.10.20
web02
myip: 10.10.10.20 // or fact
peer: 10.10.10.10
office2:
web01:
myip: 10.20.20.30 // or fact
peer: 10.20.20.40
web02:
myip: 10.20.20.40 // or fact
peer: 10.20.20.30
我想在主机名上的破折号后提取主机名部分,即“ debn-web01”->“ web01”,以将其用作先前创建的ansible变量。
因此在Jinja2模板上,我有:
# This should create the var: web01
{% set trimd_hostname = ansible_hostname.split("-")[1] %}
# Start of Ansible Config File:
host_name: {{ ansible_hostname }}
web01 host_ip: {{ ansible_eth0.ipv4.address }}
host_peer: {{ office1[ trimd_hostname ]peer }}
但是我收到错误消息,说同行不是office1.trimd_hostname的可变对象。