Estou lançando o Ansible da Tower, depois estou preenchendo os novos usuários como um texto:
{ name: user1, uid: 5000 }
{ name: user2, uid: 5001 }
Eu gostaria de iterar esses usuários como um dicionário, algo como:
- name: Print vars
debug:
var: "{{ item.name }}"
with_items: "{{ users.split('\n') }}"
Mas não funciona:
TASK [Print vars] *********************************************************************************************************************
ok: [lx-test] => (item={ name: user1, uid: 5000 }) => {
"ansible_loop_var": "item",
"item": "{ name: user1, uid: 5000 }",
"{ name: user1, uid: 5000 }": "VARIABLE IS NOT DEFINED!"
}
ok: [lx-test] => (item={ name: user2, uid: 5001 }) => {
"ansible_loop_var": "item",
"item": "{ name: user2, uid: 5001 }",
"{ name: user2, uid: 5001 }": "VARIABLE IS NOT DEFINED!"
}
Alguma idéia de como converter essa string em um dicionário real? Desde já, obrigado!
Atualizar
A expressão abaixo
dá
Declare a variável conforme apropriado .
Resposta original
O texto não é JSON nem YAML válido. Você terá que dividir as linhas e ler os dicionários linha por linha. Por exemplo, dado o texto
a tarefa abaixo
cria a lista de dicionários
A iteração é trivial agora
dá