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:
- a documentação de pesquisa de item
- o procedimento de
with_items
migraçãoloop
na documentação dos loops ansible.
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