【问题标题】:Create Variable From Ansible Facts从 Ansible Facts 创建变量
【发布时间】:2019-05-02 17:36:22
【问题描述】:

我有四个系统,其中我需要提取事实,然后将它们用作 jinja 2 模板上的变量。

在 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 

在我拥有的 jinja 2 模板上:

# Config File:
host_name: {{ ansible_hostname }}  // web01
host_ip: {{ ansible_eth0.ipv4.address }}
host_peer: {{ office1."{{ ansible_hostname }}".peer }}

然而,我收到错误,Ansible 变量:office1.ansible_hostname.peer 未定义。

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: variables ansible jinja2


    【解决方案1】:

    Ansible 中的扩展不是递归的。试试下面的扩展

        host_peer: {{ office1[ansible_hostname].peer }}
    

    例如下面的播放

        - hosts: test_01
          gather_facts: yes
          vars:
            office1:
              test_01:
                myip: 10.20.20.30
                peer: 10.20.20.40
          tasks:
            - template:
                src: template.j2
                dest: /scratch/test_01.cfg
    

    使用 template.j2

        # Config File:
        host_name: {{ ansible_hostname }}
        host_peer: {{ office1[ansible_hostname].peer }}
    

    给予

        # cat /scratch/test_01.cfg 
        # Config File:
        host_name: test_01
        host_peer: 10.20.20.40
    

    回答问题

    问:根据 Ansible Facts 创建变量

    A:一个选项是使用 lookup vars。比如下面的戏

        vars:
          var1: var1
          var2: var2
          var3: var3
        tasks:
          - debug:
              msg: "{{ lookup('vars', 'var' + item) }}"
            with_sequence: start=1 end=3
    

    给予(删节)

        "msg": "var1"
        "msg": "var2"
        "msg": "var3"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-31
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-27
      • 1970-01-01
      • 2021-04-16
      相关资源
      最近更新 更多