ansible lineinfile citações escapadas desaparecem

4

Usando ansible 1.5.4, o comando

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

adicionou a linha

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

para /etc/bash.bashrc perfeitamente bem.

No ansible 1.9.1, a mesma instrução ansible produz a seguinte linha, que mexe 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

    
por Zulakis 15.06.2015 / 14:37

2 respostas

0

Você geralmente pode evitar alguns problemas de escape usando a forma multilinha de entrada, 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

    
por 23.06.2015 / 18:02
0

Eu escrevi um pequeno livro de exercícios Ansible que eu acho que faz o que você quer (embora para 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 obtive esta linha no testfile.txt:

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

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

    
por 28.09.2016 / 11:52