Estoy luchando por descubrir la sintaxis adecuada para cambiar el tamaño de este fragmento de código:

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 }}"

La sustitución de vm_cidr nunca ocurre. He leído esta publicación pero yo Todavía estoy luchando. ¿Alguna idea de cómo variar esto adecuadamente?

1
Jeff Bilbro 23 dic. 2016 a las 19:05

3 respuestas

La mejor respuesta

Aqui tienes:

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

Tenga en cuenta el espacio al final del dict para evitar dobles llaves dobles innecesarias.

1
Konstantin Suvorov 23 dic. 2016 a las 17:50

No puede simplemente asumir que el escalar "vm_cidr" (sin espacios en la parte posterior y frontal) es el mismo que "vm_cidr" dentro de {{ y }}.

Usted debe tratar de:

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}}"
0
Anthon 23 dic. 2016 a las 16:18

Puede usar el carácter | para crear un escalar multilínea

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}}"
        }
    }
0
surfer190 2 mar. 2020 a las 11:44