【问题标题】:Ansible; using a loop to cycle through variables可靠的;使用循环循环变量
【发布时间】:2020-04-01 10:54:32
【问题描述】:

我有一个清单,其中设置了许多 host_var。每个主机将包含不同数量的数据集。

例如

host: host1
ip-addr: 192.0.2.12/24
datasets:
  set1:
     var1: 'east'
     var2: 'west'
  set2:
     var1: 'north'
     var2: 'south'

我可以创建一个循环来计算数据集,但我似乎无法使用它来引用 [varX]:

 - name: "test loop"
   debug:
     msg: 
         - "{{ item }}"
         - "{{ 'datasets.set' + item + '.var1' }}"
         - "{{ datasets.set1.var1 }}"
    loop: "{{ query('sequence', 'start=1 end='+((datasets|length)|string)) }}"

这似乎组合了我试图引用的变量名,但不返回与其关联的值。手动调用该变量确实会返回有趣的值。

ok: [host1] => (item=1) => {
    "msg": [
        "1",
        "datasets.set1.var1",
        "east"
    ]
}
ok: [host1] => (item=2) => {
    "msg": [
        "2",
        "datasets.set2.var1",
        "east"
    ]
}

我正在做的事情可能吗,还是应该从另一个角度接近它?

提前致谢。

【问题讨论】:

    标签: loops ansible ansible-inventory


    【解决方案1】:

    任务

        - debug:
            msg: "set{{ item }}.var1 = {{ datasets['set' ~ item].var1 }}"
          loop: "{{ range(1, datasets|length+1)|list }}"
    

    给予

        "msg": "set1.var1 = east"
        "msg": "set2.var1 = north"
    
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 2014-11-11
    • 2019-12-19
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2015-07-18
    相关资源
    最近更新 更多