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.bashrc
bem.
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