Возможные задачи по установке нежелательных пакетов - PullRequest
0 голосов
/ 07 июня 2018

В моей игровой книге у меня есть несколько ролей, выполняющих задачи, которые устанавливают множество различных пакетов.Некоторые из этих пакетов, по-видимому, устанавливаются:

modemmanager , wpasuppclient , snapd и apache

Я новичок в использовании условия when: в ansible.Есть ли способ, которым я мог бы добавить условие «когда» в моих заданиях, которые мешают им устанавливать эти пакеты при запуске моей книги воспроизведения?

псевдокод:

- name: installing packages when: if modemmanager, wpasuppclient, snapd, and apache are getting installed stop them from being installed? apt: pkg={{item}} state=latest with items: list of items

Еще одна мысль, которая у меня возникла, заключается в том, что я могу использовать переменную state для этого?

1 Ответ

0 голосов
/ 07 июня 2018

создайте переменную, представляющую собой список пакетов, которые нужно исключить, добавьте ее в раздел vars книги воспроизведения:

vars:
  package_exclusion_list: [modemmanager, wpasuppclient, snapd, apache]

обновите задачу, добавив условие when:

- name: installing packages
  apt: pkg={{item}} state=latest
  when: item not in package_exclusion_list
  with items:
       list of items

надеюсь, что это поможет

Побочный квест:

если вы хотите запустить пакет «простых» задач (как вы объяснили в комментариях), вы можете использоватьinclude_tasks.

пример:

  - name: include tasks
    include_tasks: various_tasks.yml
    with_items: 
      - "{{ packages_to_install }}"

но обратите внимание, various_tasks.yml должен ссылаться на каждый из packages_to_install пунктов с item.

various_tasks.yml пример:

---
- name: print items name
  debug:
    var: item

- name: print items name #2
  debug:
    msg: "variable value: {{ item }}"

очевидно, если вы попытаетесь добавить в этот файл Various_tasks какой-то цикл, который должен будет использовать свой собственный items, тогда у него будет конфликт.

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