2016-12-02 5 views
1

Я занимаюсь разработкой учебника для поддержки кластера Kubernetes. Существует команда, я должен выполнить, чтобы добавить запись в etcd:Ошибка синтаксиса в двоеточии в аргументе аргумента

- command: etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }" 

При попытке выполнить, анзибль дает синтаксическую ошибку первого двоеточия:

- command: etcdctl mk /kube-centos/network/config '{ "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "vxlan" } }' 
                  ^here 

Я не могу понять как избежать этих символов. Каков наилучший способ передать аргумент JSON для такой команды?


Есть на самом деле два способа исправить это:

Ответ 1

Surround вся команда в одинарные кавычки:

- command: 'etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"' 

Ответ 2 (Preferred)

Surround все колоны в двойные кавычки:

- command: etcdctl mk /kube-centos/network/config "{ \"Network\"":" \"172.30.0.0/16\", \"SubnetLen\"":" 24, \"Backend\"":" { \"Type\"":" \"vxlan\" } }" 
+0

Просто заключите его в двойные кавычки. См. Мой ответ. – helloV

ответ

0

Самый простой способ заключить двоеточие в двойные кавычки. Работает всегда.

- command: etcdctl mk /kube-centos/network/config "{ \"Network\"":" \"172.30.0.0/16\", \"SubnetLen\"":" 24, \"Backend\"":" { \"Type\"":" \"vxlan\" } }" 
+0

Это предпочтительный способ сделать это? По-видимому, есть два пути решения проблемы. – verhage

+0

Это предпочтителен. Если вы решите заключить свою команду в одинарные кавычки, и если у вас есть одинарные кавычки в вашем телеобъекте, вы в конечном итоге избежите этой одинарной кавычки. Выберите все, что работает для вас. – helloV

+0

Я думал об этом и как ваше решение лучше. Я изменю принятый ответ на ваш, спасибо :) – verhage

0

проверки this

вам нужно цитировать все это так:

- command: 'echo "semicolon is: bad"' 

причина анзибль не любит много запятой.