Как передать одинарные кавычки и одинарные кавычки в строковую переменную в Ansible - PullRequest
0 голосов
/ 19 февраля 2020

Я довольно новичок в YML и Ansible, однако мне было поручено автоматизировать мою работу. У меня есть строковая переменная, которая должна иметь двойные и одинарные кавычки внутри:

-d 'request=("folder":"Testing_it","attributes":{})'

Так что я быстро написал простую игру, которая проверит, работает ли она:

- name: Assign variable
set_fact:
  params: " -d 'request=(\"folder\":\"Testing_it\",\"attributes\":{})'"

- name: Show output
debug:
  msg: "{{ params }}"

Я хотел посмотреть, как моя переменная выглядит перед тем, как продолжить, и это вывод из Ansible:

    ok: [localhost] => {
    "msg": " -d 'request=(\"folder\":\"Testing_it\",\"attributes\":{})'"
}

Почему backsla sh включен в эту переменную? Может кто-нибудь помочь мне, как я должен правильно написать код, чтобы он работал как задумано

Большое спасибо за вашу помощь

1 Ответ

3 голосов
/ 19 февраля 2020

Вам не нужно экранировать одинарные кавычки, только двойные кавычки, которые вы должны экранировать с помощью backsla sh \

, чтобы убедиться, что переменная params установлена ​​правильно, вы можете выведите их в файл и просмотрите содержимое:

- name: Save output
  copy: content="{{ params }}" dest=/path/to/destination/file
...