私はこのようないくつかのタスクがあります:
- ec2_asg_facts:
region: us-west-2
tags:
Name: my-asg
register: asg
- set_fact:
current_lc: "{{ asg.results | map(attribute='launch_configuration_name') | first }}"
instances: "{{ asg.results | map(attribute='instances') | flatten | list }}"
- set_fact:
instances_to_rotate: "{{ instances | rejectattr('launch_configuration_name', 'equalto', current_lc) | list }}"
問題は、インスタンスの起動構成が削除された場合(ASGの起動構成を新しいものに更新しているが、古いインスタンスをまだ終了していない場合によくあることです)、launch_configuration_name
属性が欠落していることです。 3番目のタスクはメッセージで失敗します'dict object' has no attribute 'launch_configuration_name'
。属性が等しくない、または属性が欠落instances
しているリスト内のアイテムを除外するにはどうすればよいですか?launch_configuration_name
current_lc
launch_configuration_name
答えは、2つのパスでフィルタリングすることです。最初に属性が定義されていないアイテムを除外し、次に属性がに等しくないアイテムを除外しますcurrent_lc
。
- set_fact:
instances_to_rotate: "{{ instances | rejectattr('launch_configuration_name', 'undefined') | rejectattr('launch_configuration_name', 'equalto', current_lc) | list }}"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加