2016-12-23 7 views
1

Я изо всех сил, чтобы выяснить правильный синтаксис для переменной Изе этот фрагмент кода:Переменный ключ словаря не замещается

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, но я все еще борется. Любые идеи, как это изменить переменную?

ответ

0

Здесь лет идут:

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

Примечание пространство в конце Dict, чтобы предотвратить двойные ненужные двойные фигурные скобки.

+0

Похоже на приближение: «фатальный: [localhost -> localhost]: FAILED! => {" Changed ": true," failed ": true," msg ":" Указанный параметр неверен: spec.nicSettingMap. adapter.gateway "}" –

+0

Хм, это не связано с вопросом, который я предполагаю. Вы можете распечатать 'networks' с помощью debug, он должен дать вам именно то, что вы просили. –

+0

Nevermind, это сработало отлично! По какой-то причине в моем мастерстве у меня были двойные и одинарные кавычки вокруг значения для vm_gateway. Благодаря!!! –

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

Такая же ошибка, когда я пытаюсь так: –

+0

Ошибка: netaddr.core.AddrFormatError: недействительный IPNetwork "{{vm_cidr}}" –

+0

@Anthon Не могли бы вы немного подробнее рассказать? Я всегда думал, что они точно такие же. – techraf