小编Com*_*sar的帖子

如何在 Ansible 中遍历嵌套列表?

我有一个设备列表,每个设备都有必须在设备上创建的不同属性列表,一次一个。有没有办法构建一组嵌套的循环来做到这一点?with_nested 构造将每个属性应用于每个设备;每次调用我只需要每个设备一个属性。

这个剧本展示了我的尝试(Ansible 2.7.1,Python 2.7.1):

- name:                                 Test nested list traversal
  hosts:                                localhost
  connection:                           local
  vars:
    Stuff:
      - Name:         DeviceA
        Info:         AInfo
        Values:
        -             ValueA1
        -             ValueA2
      - Name:         DeviceB
        Info:         BInfo
        Values:
        -             ValueB1
        -             ValueB2
        -             ValueB3

  tasks:
  - name: Loop test
    debug:  msg="{{ item.Name }},{{ item.Info }}, {{ item.Values }}"
    with_items: 
      - "{{ Stuff }}"
Run Code Online (Sandbox Code Playgroud)
What I get: (One call per device, containing all attributes at once)

ok: [localhost] => (item={u'Info': u'AInfo', u'Values': [u'ValueA1', u'ValueA2'], u'Name': u'DeviceA'}) …
Run Code Online (Sandbox Code Playgroud)

ansible

0
推荐指数
1
解决办法
2647
查看次数

为什么在 bash (3.2) 中分割以换行符终止的字符串时需要 read -rd '' ?

关于用换行符分割字符串的问题的答案, Split bash string by newline characters,似乎说换行符是默认的分隔符,所以我们应该将分隔符更改为空,然后对其进行分割。为什么换行符上的分割不起作用?我所期望的(在我的用例中也是希望的)是输入字符串中的行和 \n 之间存在 1:1 的相关性(因此必须添加 \n 才能获取最后一行),并且空白行、前导/嵌入空格等将被保留。

引用 Mark Gerolimatos 的话,他似乎在问同样的问题:

在 OS-X/Macland 中,您必须使用 bash 3.2(或至少不更新 BASH)。因此,必须使用神秘的 read -rd ' '(并且有效!)我发现在线手册页对此非常神秘(ss64.com/bash/read.html)...这非常令人费解...确实如此意思是“关闭\n,然后用空作为分隔符?”

bash split newline

0
推荐指数
1
解决办法
662
查看次数

标签 统计

ansible ×1

bash ×1

newline ×1

split ×1