Используя 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