オンラインの例と非常によく似たプレイブックがあります。
タスク:
-名前:EC2インスタンスを作成します
ec2:
[-をちょきちょきと切る-]
登録:ec2
-名前:印刷する
デバッグ:msg = "item has-{{item.public_ip}}"
with_items:ec2.instances
これにより、エラーが発生します。
致命的:[localhost] => 1つ以上の未定義変数: 'strobject'には属性 'public_ip'がありません
{{item}}に変更すると、次のように表示されます。
タスク:[印刷] * * * * * * * * * * * * * * * * * * * *
ok:[localhost] =>(item = ec2.instances)=> {
"item": "ec2.instances"、
"msg": "item has --ec2.instances"
}
'ec2.instances'は単なる文字列のようですか? 最後に、「with_items:ec2.results」を使用すると、繰り返し処理できますが、item.instances.0.public_ipとして参照する必要があります。
ec2_instancesが辞書ではなく文字列のように見える理由はありますか?
編集:
:arp_kiki / pts / 55:0.08:new; ansible --version ansible 1.5.4
アップグレード後:
ok:[localhost] =>(item = ec2.instances)=> {
"item": "ec2.instances"、
"msg": "item has --ec2.instances"
}
PLAY RECAP * * * * * * * * * * * * * * * * * * * * * *
ローカルホスト:ok = 2変更= 1到達不能= 0失敗= 0
:arp_kiki / pts / 55:0.31:new; ansible --version
ansible 1.9.1
やあ!
Ansibleに関心をお寄せいただきありがとうございます。 それは私たちにとって心から多くのことを意味します。
これはユーザーの質問のようです。このようなことをメーリングリストまたはIRCチャネルに転送したいと思います。
また、with_itemsが使用されているため、複数のインスタンスが存在し、作成された各インスタンスの結果がec2.resultsdictに保存されるためです。 avoild with_itemsを作成するインスタンスが1つしかない場合は、必要なものを取得する必要があります。作成するインスタンスが複数ある場合は、パブリックIPを使用してwith_itemsを取得します:ec2.resultsおよびitem.public_ip
IRC:irc.freenode.netで#ansible
メーリングリスト: https ://groups.google.com/forum/#!forum / ansible -project
よろしくお願いします。 これにより、バグ、プルリクエスト、RFEなどの課題追跡システムを維持できます。
改めて感謝いたします。リストまたはIRCでお会いできることを楽しみにしております。 ありがとう!
了解した。 ドキュメントに従っていて異なる結果が得られたので、バグだと思いました。
@bennojoyが原因を非常に簡潔に説明した同じ「ユーザーエラー」を作成したため、このスレッドにwith_items
が非常に一般的なパターンになるため、これを参照することをお勧めします。設定されたアベイラビリティーゾーンでシステムを管理します。
最も参考になるコメント
了解した。 ドキュメントに従っていて異なる結果が得られたので、バグだと思いました。