我正在開發維護Kubernetes羣集的劇本。有一個命令我必須執行添加在ETCD一個條目:冒號命令參數中冒號的語法錯誤
- command: etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"
當試圖執行,Ansible給出了第一個冒號語法錯誤:
- command: etcdctl mk /kube-centos/network/config '{ "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "vxlan" } }'
^here
我想不出如何逃避這些角色。將JSON參數傳遞給像這樣的命令的最佳方式是什麼?
實際上有兩種方法來解決這個問題:
回答1
環繞在單引號整個命令:
- command: 'etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"'
答案2(首選)
個環繞在雙引號中的所有冒號:
- command: etcdctl mk /kube-centos/network/config "{ \"Network\"":" \"172.30.0.0/16\", \"SubnetLen\"":" 24, \"Backend\"":" { \"Type\"":" \"vxlan\" } }"
只需用雙引號括起來。看到我的答案。 – helloV