#ansible
#ansible
Вопрос:
У меня есть массив записей в ansible следующим образом,
[ ami-abc;2020-11-08;false
ami-cdf;2020-11-09;false
ami-123;2020-11-10;false
ami-456;2020-11-11;true ]
Я хочу пропустить все записи со значением конечного поля, равным true, а затем получить последнюю запись, значение конечного поля которой равно false (в этом случае нужной мне записью будет «ami-123;2020-11-10; false». Может кто-нибудь, пожалуйста, дать мне совет, как это сделать? Я пробовал несколько способов, но, к сожалению, ничего не работает.
Спасибо.
С уважением, Андрей
Комментарии:
1. Привет, Эндрю. Добро пожаловать сюда. Можете ли вы обновить вопрос своей попыткой (» количество способов «, которые вы попробовали)?
2. Не могли бы вы, пожалуйста, перепроверить и в конечном итоге обновить данные вашего примера? Это не похоже на действительный список ни в формате json, ни в формате yaml.
Ответ №1:
Фильтр может использоваться для выбора элементов, соответствующих вашему регулярному выражению, и во вновь созданном списке последний элемент может быть выбран с помощью [-1]
---
- name: Test stackoverflow
hosts: localhost
vars:
stacklist:
- ami-abc;2020-11-08;false
- ami-cdf;2020-11-09;false
- ami-123;2020-11-10;false
- ami-456;2020-11-11;true
searchstring: "^(.*)false$"
tasks:
- name: Create a list of matching false elements
set_fact:
falselist: "{{ stacklist | select('match',searchstring) | list }}"
- name: Debug the last item in the list
debug:
msg: "{{ falselist[-1] }}"
Комментарии:
1. Привет, Георгий, большое спасибо за ваше предложение. Это работает отлично!
2. @AndrewLeung мне было приятно внести свой вклад!