Ho bisogno di evadere correttamente le virgolette singole e doppie in un playbook ansibile per impostare la variabile di ambiente. Niente di tutto questo funziona:Come evitare le virgolette doppie e singole in YAML all'interno della stessa stringa
- name: Set environment variable
command: >
export EXTRA_CONFIG=“'”{"client": {"subscriptions": ["DIND-Worker"], "cluster": "internal"}}“'”
- name: Set environment variable
command: >
export EXTRA_CONFIG=''{"client": {"subscriptions": ["DIND-Worker"], "cluster": "internal"}}''
- name: Set environment variable
command: >
export EXTRA_CONFIG=''{\"client\": {\"subscriptions\": [\"DIND-Worker\"], \"cluster\": \"internal\"}}''
hanno guardato questo:
http://yaml.org/spec/current.html#id2532720
https://github.com/dotmaster/toYaml/issues/1
Il messaggio di errore che ottengo è:
fatal: [ip.address]: FAILED! => {"changed": false, "cmd": "export 'EXTRA_CONFIG={\"client\":' '{\"subscriptions\":' '[\"DIND-Worker\"],' '\"cluster\":' '\"internal\"}}'", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}
Si può provare a utilizzare 'shell' invece del modulo' command'? È quindi possibile eseguire l'escape tramite '\" '. Se si ha solo bisogno di env vars su una base per attività, si potrebbe anche considerare l'uso della funzione' environment' di 'shell' come descritto [qui] (http://stackoverflow.com/questions/31775099/how-to-set-environmental-variables-using-ansible) – fishi