Запросы по запросу AMS AMS - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь запросить AMI AWS EC2 из Ansible, но продолжаю сталкиваться с ошибкой при циклическом просмотре результатов:

- hosts: localhost

  tasks:
   - name: Get AMI
     ec2_ami_facts:
        owner: amazon
        filters:
           architecture: x86_64
           root-device-type: ebs
     register: amis

   - name: return filtered data
     debug:
        msg: "{{ item }}"
     loop: " {{ amis \
        | json_query( 'Images[?Description!=`null`] \
        | [?starts_with(Description,`Amazon Linux`)]' ) \
        }} "

Идея состоит в том, чтобы вернуть документы с изображениями, а затем просто идентификаторы изображений с большей фильтрацией (конечная цель - получить самый последний идентификатор для данного описания). Но с текущим примером и всем остальным, что я пытаюсь, я получаю эту ошибку:

TASK [return filtered data] ****************************************************
fatal: [localhost]: FAILED! => {"msg": "Invalid data passed to 'loop',
 it requires a list, got this instead:   . Hint: If you passed a
 list/dict of just one element, try adding wantlist=True to your lookup
 invocation or use q/query instead of lookup."}

Я могу посмотреть на 'amis' полностью, и он выглядит хорошо, но любая попытка фильтрации не удалась. Какой правильный метод?

1 Ответ

0 голосов
/ 07 мая 2018

Это работает, спасибо за людей на #ansible на freenode.

- hosts: localhost

  tasks:
   - name: Get AMI
     ec2_ami_facts:
        owner: amazon
        filters:
           architecture: x86_64
           root-device-type: ebs
     register: amis

   - name: return latest AMI
     set_fact:
        my_ami: "{{ amis.images \
            | selectattr('description', 'defined') \
            | selectattr('description', 'match', '^Amazon Linux.*GP2$') \
            | selectattr('description', 'match', '[^(Candidate)]') \
            | sort(attribute='creation_date') \
            | last }} "

   - debug:
        msg: "ami = {{ my_ami | to_nice_yaml }}"

Также смотрите здесь: https://bitbucket.org/its-application-delivery/ansible-aws/src/master/ansible/task_find_ami.yml?fileviewer=file-view-default

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...