Ansible: включать задачу только тогда, когда сервер не находится в группе

У меня есть несколько групп с разными именами и что-то вроде "raw-webservers", "raw-db",... Теперь я хочу включить playbook, если сервер находится в группе, которая начинается с "raw-*" (работает) и включите другую книгу воспроизведения, если сервер не находится в группе, начинающейся с «raw-». Я не смог понять, как сделать последнее, указав только подмножество группы.

- include_tasks: change_password.yml
  when: "'raw-' not in group_names"   # works only with complete group names


- include_tasks: change_password_raw.yml
  when: "group_names | search('raw-')"   # works

Я пробовал 'когда: "group_names | not search('raw-')"', но это не сработало. Любые идеи?


person Community    schedule 26.04.2018    source источник
comment
Пожалуйста, не портите свои посты. Размещая в сети Stack Exchange, вы предоставляете SE безотзывное право на распространение этого контента (в соответствии с лицензия CC BY-SA 3.0). Согласно политике SE, любой вандализм будет пресекаться.   -  person Machavity♦    schedule 27.04.2018


Ответы (1)


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

---
- hosts: all
  gather_facts: no
  tasks:
    - debug:
        msg: "hello world using select"
      delegate_to: 127.0.0.1
      when: group_names | select('match','raw-*') | list | length  > 0

    - debug:
        msg: "hello world using search"
      delegate_to: 127.0.0.1
      when: group_names | join(" ") is search('raw-')

Здесь вы увидите, что поиск работает со строками а не списки, поэтому соединение.

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

[raw:children]
db

И это можно проверить как 'raw' in group_names.

person abn    schedule 26.04.2018
comment
Спасибо! имена групп | join() — это search('raw-') и group_names | join() не является search('raw-') отлично работает! - person ; 26.04.2018