0
Usar {{item}} dentro de una regexp en una task lineinfile de Ansible

Solved 1 Respuestas 1 Views

tengo una taks en un playbook de Ansible que tiene q iterar sobre una lista de usuarios de postgres y agregarlos en el hba.conf para que tengan acceso:

- name: Postgres localhost access
  lineinfile:
    dest: "{{postgres_dest}}/data/pg_hba.conf"
    line: "host    all             {{item.user}}   127.0.0.1/32            trust"
    regexp: "^host[\s\t]*all[\s\t]*{{item.user}}[\s\t]*127.0.0.1/32[\s\t]*trust"
    insertbefore: EOF
  with_items: "{{postgres_users}}"
  notify: postgres reload
  tags:
    - postgres
    - postgres_hba
el tema es que Ansible mismo me toma como no valido el yaml porque no estan escapadas las {{item.user}} cuando enrealidad las "" de la linea en si misma ya expanden todo.
el error puntual:
Syntax Error while loading YAML script, jenkins.yml
Note: The error may actually appear before this position: line 156, column 9

        line: "host    all             {{item.user}}   127.0.0.1/32            trust"
        regexp: "^host[\s\t]*all[\s\t]*{{item.user}}[\s\t]*127.0.0.1/32[\s\t]*trust"
        ^
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"
alguna idea de como fixear esto?

1 Respuesta

0
Mejor respuesta
ok, fixed, el problema eran los backslashes sin escapar que rompian todo el yaml, no realmente la variable de los items dentro:

    regexp: "^host[\\s\\t]*all[\\s\\t]*{{item.user}}[\\s\\t]*127.0.0.1/32[\\s\\t]*trust"

con eso ya quedo todo resuelto
respondido por sebamontini (6,410 puntos) Mar 17
...