Ответ, когда инструкция не дает ожидаемого результата

#ansible

#ansible

Вопрос:

У меня есть сборник задач, который собирает ec2_info и я хотел бы отобразить на консоли информацию для пользователя на основе результата условной проверки с помощью оператора when. В моем сборнике when условие не работает. Как я могу реализовать задачу, чтобы обеспечить правильные результаты оператора when?

     - hosts: localhost
      gather_facts: false
    
      tasks:
    
        - name: ec2 instance info
          ec2_instance_info:
            aws_access_key: "{{ AWS_ACCESS_KEY_ID }}"
            aws_secret_key: "{{ AWS_SECRET_ACCESS_KEY }}"
            aws_region: "{{ AWS_REGION }}"
          register: result
    
        - name: display ec2 info
          debug:
            msg: 
              - "{{ item.tags['Name'] }}"
              - "{{ item.placement['availability_zone'] }}"
              - "{{ item.instance_type }}"
              - "{{ item.launch_time }}"
              - "{{ item.state['name'] }}"
          with_items:
            - "{{ result.instances }}"      
          loop_control:
            label: ""
          when: ("item.state['name'] == running")
  

Ответ №1:

Это была проблема с цитатой в when заявлении. Приведенный ниже код исправил мою проблему:

     - name: display ec2 info
      debug:
        msg: 
          - "{{ item.tags['Name'] }}"
          - "{{ item.placement['availability_zone'] }}"
          - "{{ item.instance_type }}"
          - "{{ item.launch_time }}"
          - "{{ item.state['name'] }}"
      with_items:
        - "{{ result.instances }}"      
      loop_control:
        label: ""
      when: (item.state['name'] == "running")