变量字典键未替换

时间:2016-12-23 16:05:11

标签: ansible ansible-playbook ansible-2.x

我正在努力找出适当的语法来改变这段代码:

vm_cidr: '10.10.0.0/24'
vm_network: FOO
vm_gateway: '10.10.0.1'
networks:
     "{{ vm_cidr }}":
       network: "{{ vm_network }}"
       gateway: "{{ vm_gateway }}"

vm_cidr的替换永远不会发生。我已经阅读了this帖子,但我还在苦苦挣扎。任何想法如何正确变化?

3 个答案:

答案 0 :(得分:1)

在这里哟:

networks: '{{ {vm_cidr:{"network":vm_network,"gateway":vm_gateway} } }}'

注意dict末尾的空格,以防止双重不必要的双括号。

答案 1 :(得分:0)

你不能只假设标量" vm_cidr" (背面和正面没有空格)与" vm_cidr"相同在{{}}内。

你应该尝试:

vm_cidr: '10.10.0.0/24'
vm_network: FOO
vm_gateway: '10.10.0.1'
networks:
     "{{vm_cidr}}":
       network: "{{vm_network}}"
       gateway: "{{vm_gateway}}"

答案 2 :(得分:0)

您可以使用|字符创建多行标量

vm_cidr: '10.10.0.0/24'
vm_network: FOO
vm_gateway: '10.10.0.1'
networks: |
    {
        "{{vm_cidr}}": {
           network: "{{vm_network}}"
           gateway: "{{vm_gateway}}"
        }
    }