DR

DR

Aqui está meu arquivo de lista de variáveis ​​vars/blah.yml:

---
stuff:
 - stuff1: bill
   stuff2: sue

Estou apenas tentando obter os valores das variáveis.

Aqui está meu manual:

  hosts: all
  become: yes
  vars_files:
    - vars/blah.yml
  tasks:

  - name: test
    debug:
      var: "{{ item.stuff1 }} {{ item.stuff2 }}"
    loop :
      - "{{ stuff }}"

Estou recebendo esse erro.

fatal: [node1]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'list object' has no attribute 'stuff1'\n\nThe error appears to be in '/home/automation/plays/test1.yml': line 11, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n  - name: test\n    ^ here\n"}

Alguém pode me dizer o que estou fazendo de errado?

Editou a formatação das variáveis. Ainda obtendo os mesmos resultados.

Responder1

DR

  loop: "{{ stuff }}"

História completa

Ao contrário do anterior e ainda amplamente utilizado por padrão with_items:, um bare loop:não aplica um automático flatten(level=1)aos argumentos passados.

Para mais informações sobre esse recurso, você pode ver:

Se o seu exemplo estava usandowith_items

  with_items: 
    - "{{ stuff }}"

a lista resultante ainda seria exatamente aquela que você definiu em seu arquivo.

Agora usado comloop

  loop:
    - "{{ stuff }}"

você está percorrendo uma lista de listas que se parece com (observe o traço solo no topo do exemplo abaixo e o recuo do restante do conteúdo: não é um erro de digitação).

- 
  - stuff1: bill
    stuff2: sue

Portanto, o primeiro elemento que você obtém em seu loop é, na verdade, sua lista completa em seu arquivo var.

Para corrigir isso, basta passar a variável corretamente para loop, ou seja

  loop: "{{ stuff }}"

Responder2

O formato do seu arquivo variável está errado. O nível superior não é uma lista, deve ser assim:

---
stuff:
  - stuff1: bill
    stuff2: sue

Além disso, o caminho para o arquivo vars deve começar com / da raiz do Ansible:

vars_files:
  - /vars/blah.yml

informação relacionada