Ansible: register: ec2 / with_items: ec2.instances - resulta em "str object has no attribute"

Criado em 18 jun. 2015  ·  3Comentários  ·  Fonte: ansible/ansible

Tenho um manual muito semelhante aos exemplos online:


tarefas:
- nome: cria uma instância EC2
ec2:
[-recorte-]
registrar: ec2
- nome: imprima
debug: msg = "item tem - {{item.public_ip}}"
with_items: ec2.instances


Isso dá o erro:


fatal: [localhost] => Uma ou mais variáveis ​​indefinidas: 'str object' não tem atributo 'public_ip'

Se eu mudar para {{item}}, vejo:

TAREFA: [imprima] * * * * * * * * * * * * * * * * * * * *
ok: [localhost] => (item = ec2.instances) => {
"item": "ec2.instances",
"msg": "o item tem - ec2.instances"
}


Parece que 'ec2.instances' é apenas uma string? Por último, se eu usar "with_items: ec2.results", posso iterar por ele, mas tenho que fazer referência a ele como item.instances.0.public_ip

Alguma ideia de por que ec2_instances parece ser uma string em vez de um dicionário?

Editar:
: arp_kiki / pts / 55: 0,08: novo; ansible - versão ansible 1.5.4

após a atualização:

ok: [localhost] => (item = ec2.instances) => {
"item": "ec2.instances",
"msg": "o item tem - ec2.instances"
}

JOGAR RECAP * * * * * * * * * * * * * * * * * * * * * *
localhost: ok = 2 alterado = 1 inacessível = 0 falhou = 0

: arp_kiki / pts / 55: 0,31: novo; ansible - versão
ansible 1.9.1

Comentários muito úteis

Entendido. Presumi que fosse um bug porque estava acompanhando a documentação e obtendo resultados diferentes.

Todos 3 comentários

Oi!

Muito obrigado pelo seu interesse no Ansible. Sinceramente, significa muito para nós.

Esta parece ser uma pergunta do usuário, e gostaríamos de direcionar esse tipo de coisa para a lista de discussão ou para o canal IRC.

também a razão é porque with_items é usado, portanto, haveria várias instâncias e os resultados de cada instância criada são armazenados no dicionário ec2.results. se houver apenas uma única instância create avoild with_items, então você deve obter o que precisa ou se tiver várias instâncias para criar e obter o uso de ip público with_items: ec2.results e item.public_ip

IRC: #ansible em irc.freenode.net
lista de correspondência: https://groups.google.com/forum/#!forum/ansible -project
Se você puder passar por aí, nós agradeceríamos. Isso nos permite manter o rastreador de problemas para bugs, solicitações de pull, RFEs e similares.

Obrigado mais uma vez e esperamos vê-lo na lista ou IRC. Obrigado!

Entendido. Presumi que fosse um bug porque estava acompanhando a documentação e obtendo resultados diferentes.

Acabei de chegar a este tópico devido ao mesmo "erro do usuário", que @bennojoy descreveu a causa de forma muito sucinta. Considerando que esta é uma situação altamente "não óbvia", seria ótimo ter referência a isso, pelo menos nos exemplos da documentação do módulo ec2, já que with_items será um padrão muito comum gerenciamento de sistemas em zonas de disponibilidade definidas.

Esta página foi útil?
0 / 5 - 0 avaliações