aspas de escape do ansible lineinfile desaparecem

aspas de escape do ansible lineinfile desaparecem

Usando ansible 1.5.4, o comando

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

adicionei a linha

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

perfeitamente /etc/bash.bashrcbem.

No ansible 1.9.1, a mesma instrução ansible produz a seguinte linha, que bagunça as aspas que escapei no comando lineinfile:

bind \e[B:history-search-forward

Como posso corrigir as aspas, para que a linha correta seja adicionada

Responder1

Geralmente, você pode evitar alguma confusão de fuga usando a forma de entrada multilinha, especialmente ao inserir dois pontos:

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

Responder2

Eu escrevi um pequeno manual do Ansible que acho que faz o que você deseja (embora seja um arquivo de teste em vez do 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"

Eu executei isso e recebo esta linha em testfile.txt:

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

Estou usando o Ansible 2.1.1.0. Não sei se isso difere de 1.9.1

informação relacionada