Назад | Перейти на главную страницу

недостающие кавычки в строчном файле

Используя ansible 1.5.4, команда

lineinfile: dest=/etc/bash.bashrc line="bind '\"\e[B\"':history-search-forward"

добавил строку

bind '"\e[B"':history-search-forward

к /etc/bash.bashrc прекрасно.

В ansible 1.9.1 та же самая инструкция ansible выводит следующую строку, которая искажает кавычки, которые я использовал в команде lineinfile:

bind \e[B:history-search-forward

Как исправить кавычки, чтобы добавлялась правильная строка

Я написал небольшую сборку пьес Ansible, которая, как мне кажется, делает то, что вы хотите (хотя и в тестовом файле, а не в фактическом bashrc.

---

- name: Example for serverfault.com
  hosts: all
  tasks:
  - name: Put line with quotes, backslash, and colon in a file
    lineinfile: 
      dest: /home/vagrant/testfile.txt
      create: yes
      line: "bind '\"\\e[B\"':history-search-forward"

Я запустил это и получил эту строку в testfile.txt:

bind '"\e[B"':history-search-forward

Я использую Ansible 2.1.1.0. Я не знаю, отличается ли это от 1.9.1

Обычно вы можете избежать некоторого беспорядка, используя многострочную форму ввода, особенно при вводе двоеточий:

command: > curl -X POST -H 'Content-Type: application/json' --data '{"name": "{{ item.name }}", "comment": "{{ item.comment }}", "DefaultDistribution": "{{ item.default_distribution }}", "DefaultComponent": "{{ item.default_component }}" }' http://localhost:8080/api/repos