Рейтинг:1

Является ли плохим тоном создание роли Ansible только для установления фактов?

флаг kg

У меня есть одна из тех ситуаций, когда я мог бы написать роль с тремя задачами для поиска, сортировки и извлечения набора значений, например:

- имя: Поиск доступных экземпляров AMI
  amazon.aws.ec2_ami_info:
    фильтры: ...
  зарегистрироваться: _ami_info
    
- имя: Сортировать по дате создания, чтобы получить последние
  ansible.builtin.set_fact:
    _amis: '{{ _ami_info.images | sort(attribute="creation_date", reverse=True) }}'
    
- имя: Установите мои факты для последнего AMI
    last_ami_id: '{{ _amis[0].image_id }}
    ...

Мне нужно сделать что-то подобное в нескольких разных книгах, поэтому я хочу повторно использовать код.Что кажется более крутым и более похожим на Anible, так это реализовать плагин Lookup, но это гораздо больше строк Python с вызовами Boto3, чтобы эффективно делать то же самое (кроме возврата деталей в виде dict).

Кажется, я не могу найти ничего в лучших практиках для ролей, которые охватывают это, или, скорее всего, я что-то упускаю.

Рейтинг:2
флаг br

В: Является ли плохим тоном создавать роль Ansible только для установления фактов?

О: Нет. Это не так. Вы говорите, что вы 'хочу повторно использовать код'. Поместите задачи в файл, например. задачи/get_latest_ami_id.ymlи создайте роль, например. роли/my_lib

shell> cat roles/my_lib/tasks/get_latest_ami_id.yml
- имя: Поиск доступных экземпляров AMI
  amazon.aws.ec2_ami_info:
    фильтры: ...
  зарегистрироваться: _ami_info
    
- имя: Сортировать по дате создания, чтобы получить последние
  ansible.builtin.set_fact:
    _amis: '{{ _ami_info.images | sort(attribute="creation_date", reverse=True) }}'
    
- имя: Установите мои факты для последнего AMI
  ansible.builtin.set_fact:
    last_ami_id: '{{ _amis[0].image_id }}
    ...

Затем используйте либо include_role или же import_role и запускайте задачи в своем плейбуке, например.

- import_role:
    имя: my_lib
    tasks_from: get_latest_ami_id.yml
  • Видеть Повторное использование артефактов Ansible чтобы узнать, в чем разница между включением и импортом.

  • Вы можете использовать эту роль как библиотеку других задач, которые можно использовать повторно.

  • Если вы запустите эту роль, ничего не произойдет из-за задачи/main.yml пропал, отсутствует. Вы можете создать его как напоминание, например.

оболочка> роли кота/my_lib/tasks/main.yml
- отладка:
    msg: Не запускайте эту роль. Это библиотека автономных задач.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.