Las comillas escapadas del archivo de línea ansible desaparecen

Las comillas escapadas del archivo de línea ansible desaparecen

Usando ansible 1.5.4, el comando

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

agregó la línea

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

a /etc/bash.bashrcperfectamente bien.

En ansible 1.9.1, la misma instrucción ansible produce la siguiente línea, que confunde las comillas que escapé en el comando lineinfile:

bind \e[B:history-search-forward

¿Cómo puedo arreglar las comillas para que se agregue la línea correcta?

Respuesta1

Por lo general, puede evitar algunos problemas de escape utilizando la forma de entrada multilínea, especialmente al ingresar dos puntos:

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

Respuesta2

Escribí un pequeño manual de Ansible que creo que hace lo que quieres (aunque en un archivo de prueba en lugar del bashrc real.

---

- 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"

Ejecuté esto y aparece esta línea en testfile.txt:

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

Estoy usando Ansible 2.1.1.0. No sé si eso difiere de 1.9.1

información relacionada