通过事实提取创建Jinja2变量

时间:2019-05-10 13:49:14

标签: python ansible jinja2

我有四个系统,在这些系统中,我需要提取事实,然后将它们用作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的可变对象。

0 个答案:

没有答案