Я занимаюсь разработкой учебника для поддержки кластера 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\" } }"
Просто заключите его в двойные кавычки. См. Мой ответ. – helloV