1
resposta

Erro ao tentar usar loop / Loop item acabou

Senhores, copiei o exemplo de loop de um tópico anterior porém, quando executo tenho o erro abaixo:

Versões utilizadas: Python 2.7.5 e Ansible 2.9.10

CODIGO:

- name: 'Configura o wp-config com as entradas do banco de dados' 
        replace:
          path: '/var/www/wordpress/wp-config.php'
          regexp: "{{ item.regex }}"
          replace: "{{ item.value }}"
        loop:
          - { regex: 'database_name_here', value: 'wordpress_db' }
          - { regex: 'username_here', value: 'wordpress_user' }
          - { regex: 'password_here', value: '12345' }
        become: yes

ERRO:

ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each:
JSON: No JSON object could be decoded

Syntax Error while loading YAML.
  did not find expected key

The error appears to be in '/home/vagrant/projetos/ansible/pl_installphpv4.yml': line 45, column 9, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

    - name: 'Configura o wp-config com as entradas do banco de dados'
        replace:
        ^ here

Já alterei o loop: por name: removi o item. e substitui por ^. conforme outros exemplos que achei na internet, porém segue o erro.

1 resposta

Olá Pedro Henrique, tudo bem? Acho que o problema não é com a instrução loop, mas sim com indentação do código, ele fala que houve um erro de sintaxe, e esses arquivos .yml são muito rigorosos nessa questão de sintaxe. Então você pode tentar usando dois espaços, copiar e cola esse trecho de código abaixo:

- name: 'Configura o wp-config com as entradas do banco de dados' 
        replace:
          path: '/var/www/wordpress/wp-config.php'
          regexp: "{{ item.regex }}"
          replace: "{{ item.value }}"
        loop:
          - { regex: 'database_name_here', value: 'wordpress_db' }
          - { regex: 'username_here', value: 'wordpress_user' }
          - { regex: 'password_here', value: '12345' }
        become: yes

E o - name: deve está igual aos outros - name, no nível de indentação.

E fala pra gente se funcionou!