簡體   English   中英

使用 Ansible 將列表轉換為字典中的值

[英]Convert list to values in dictionary with Ansible

我正在嘗試使用來自 Linux 主機的 Ansible 收集事實數據作為輸入:

    "ansible_fibre_channel_wwn": [
        "1000e0071bd4d0ed",
        "10009440c90f9d85",
        "1000e0071bce95f3",
        "1000e0071bce95f2",
        "1000e0071bd4d0ec",
        "10009440c90f9d84"
    ],

並希望使用上述列表項為新的“wwpn”鍵的字典值創建一個字典:

        fc_initiators: [
            {wwpn: '10:00:e0:07:1b:d4:d0:ed'}, 
            {wwpn: '10:00:94:40:c9:0f:9d:85'}, 
            {wwpn: '10:00:e0:07:1b:ce:95:f3'}, 
            {wwpn: '10:00:e0:07:1b:ce:95:f2'}, 
            {wwpn: '10:00:e0:07:1b:d4:d0:ec'}, 
            {wwpn: '10:00:94:40:c9:0f:9d:84'}
        ]

這個正則表達式似乎足以將初始列表項轉換為殖民 WWPN:

"{{ ansible_fibre_channel_wwn | 
map('regex_replace', '^(..)(..)(..)(..)(..)(..)(..)(..)$', '\\1:\\2:\\3:\\4:\\5:\\6:\\7:\\8')|list }}"

我不確定從哪里開始列表->字典轉換。 任何幫助深表感謝。

謝謝!

首先“殖民”項目,例如

    - set_fact:
        wwn_colonized: "{{ wwn_colonized|default([]) +
                           [item|map('join')|join(':')] }}"
      loop: "{{ ansible_fibre_channel_wwn|map('batch', 2)|map('list')|list }}"

  wwn_colonized:
  - 10:00:e0:07:1b:d4:d0:ed
  - 10:00:94:40:c9:0f:9d:85
  - 10:00:e0:07:1b:ce:95:f3
  - 10:00:e0:07:1b:ce:95:f2
  - 10:00:e0:07:1b:d4:d0:ec
  - 10:00:94:40:c9:0f:9d:84

然后下面的任務創建字典列表

    - set_fact:
        fc_initiators: "{{ wwn_colonized|
                           map('regex_replace', '^(.*)$', '{wwpn: \\1}')|
                           map('from_yaml')|
                           list }}"

  fc_initiators:
  - wwpn: 10:00:e0:07:1b:d4:d0:ed
  - wwpn: 10:00:94:40:c9:0f:9d:85
  - wwpn: 10:00:e0:07:1b:ce:95:f3
  - wwpn: 10:00:e0:07:1b:ce:95:f2
  - wwpn: 10:00:e0:07:1b:d4:d0:ec
  - wwpn: 10:00:94:40:c9:0f:9d:84

或者,JSON 中的相同數據

  fc_initiators|to_nice_json: |-
    [
        {
            "wwpn": "10:00:e0:07:1b:d4:d0:ed"
        },
        {
            "wwpn": "10:00:94:40:c9:0f:9d:85"
        },
        {
            "wwpn": "10:00:e0:07:1b:ce:95:f3"
        },
        {
            "wwpn": "10:00:e0:07:1b:ce:95:f2"
        },
        {
            "wwpn": "10:00:e0:07:1b:d4:d0:ec"
        },
        {
            "wwpn": "10:00:94:40:c9:0f:9d:84"
        }
    ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM