Ansible - определение инвентаря во время выполнения

Я новичок в ANSIBLE, так что терпите меня, если мои вопросы немного просты.

Сценарий:

У меня есть несколько групп удаленных хостов, таких как [EPCs] [Clients] и [Testers]. Я могу настроить их так, как я хочу.

Проблема:

Мне нужно написать playbook, который при запуске запрашивает у пользователя инвентарь во время выполнения. В качестве примера при запуске playbook пользователю необходимо получить следующий запрос: «Введите количество EPC, которые вы хотите настроить» «Введите количество клиентов, которые вы хотите настроить» «Введите количество тестеров, которые вы хотите настроить "

Что должно произойти:

Теперь, например, пользователь вводит 2,5 и 8 соответственно. Теперь книга воспроизведения должна адресовать только первые 2 узла в группе [EPC], первые 5 узлов в группе [Клиенты] и первые 7 узлов в группе [Тестеры]. Я не хочу создавать большое количество подгрупп, например, если у меня есть 20 EPC, то я не хочу определять 20 групп для своих EPC, я хочу некоторую динамическую инвентаризацию, которая должна автоматически настраивать машины в соответствии с пользовательским вводом во время выполнения с использованиемvars_prompt вариант или что-то подобное тому

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

---
- hosts: epcs # Now this is the part where I need a lot of flexibility

  vars_prompt:
    name: "what is your name?"
    quest: "what is your quest?"

  gather_facts: no

  tasks:

  - name: Check if path exists
    stat: path=/home/khan/Desktop/tobefetched/file1.txt
    register: st

  - name: It exists
    debug: msg='Path existence verified!'
    when: st.stat.exists

   - name: It doesn't exist
     debug: msg="Path does not exist"
     when: st.stat.exists == false

   - name: Copy file2 if it exists
     fetch: src=/home/khan/Desktop/tobefetched/file2.txt dest=/home/khan/Desktop/fetched/   flat=yes
     when: st.stat.exists

   - name: Run remotescript.sh and save the output of script to output.txt on the Desktop
     shell: cd /home/imran/Desktop; ./remotescript.sh > output.txt

   - name: Find and replace a word in a file placed on the remote node using variables
     shell: cd /home/imran/Desktop/tobefetched; sed -i 's/{{name}}/{{quest}}/g' file1.txt

    tags:
       - replace

@gli Я попробовал ваше решение, в моем инвентаре есть группа с именем test с двумя узлами в ней. Когда я вхожу0..1 Я получил:

TASK: [echo sequence] ********************************************************* 
changed: [vm2] => (item=some_prefix0)
changed: [vm1] => (item=some_prefix0)
changed: [vm1] => (item=some_prefix1)
changed: [vm2] => (item=some_prefix1)

Точно так же, когда я вхожу1..2 Я получил:

TASK: [echo sequence] ********************************************************* 
changed: [vm2] => (item=some_prefix1)
changed: [vm1] => (item=some_prefix1)
changed: [vm2] => (item=some_prefix2)
changed: [vm1] => (item=some_prefix2)

Точно так же, когда я вхожу4..5 (узлов, даже не присутствующих в инвентаре, я получаю:

TASK: [echo sequence] ********************************************************* 
changed: [vm1] => (item=some_prefix4)
changed: [vm2] => (item=some_prefix4)
changed: [vm1] => (item=some_prefix5)
changed: [vm2] => (item=some_prefix5)

Любая помощь могла бы быть полезна. Спасибо!