Список возможных переменных

При добавлении списка переменных в Ansible как можно достичь диапазона одинаковых значений? Например, "000-100" - в файле Ansible hosts это можно сделать, перечислив, например, "hostname-[a:v].com". Будет ли этот процесс аналогичным в списке переменных?

Мой вариант использования заключается в том, чтобы выделить несколько виртуальных машин в oVirt за один раз без необходимости построчно составлять список.

---
- name: Create VM based on template
  hosts: ovirt-engine
  become: yes
  become_method: sudo

  vars:
  - temp: '{{temp_fedora25}}'
  - iname:
      - db-aa
      - db-ab
      - db-ac

  tasks:

    - name: Giving Birth to lil Baby VM's
      ovirt:
          user: '{{ovirt_usr}}'
          password: '{{ovirt_pass}}'
          url: '{{engine_url}}'
          instance_name: "{{item}}"
          instance_nic: ovirtmgmt
          resource_type: template
          image: '{{temp}}'
          zone: superblade-a
          disk_alloc: preallocated
      with_items: "{{iname}}"

2 ответа

Решение

Вы можете использовать поиск последовательности:

- name: numeric
  debug:
    msg: "{{ item }}"
  with_sequence: start=1 count=10 format=server-%0d


- name: characters from small 'a'
  debug:
    msg: "{{ item }}"
  with_sequence: start=0x61 count=10 format=server-%c

- name: save for future use
  set_fact:
    my_seq: "{{ lookup('sequence','start={} count={} format={}{}'.format(beg,cnt,pref,fmt),wantlist=True) }}"
  vars:
    beg: 1
    cnt: 10
    pref: host-
    fmt: '%0d'

Вы можете пропустить set_fact и определить my_seq в разделе Vars, но если вы используете my_seq многое, генерация списка будет производиться каждый раз изнутри. С set_fact список генерируется один раз.

Что касается правильного ответа от Константина, я добавляю полное решение в моем случае....

Моя цель - иметь возможность повторно использовать упорядоченные значения в качестве зарегистрированных переменных, чтобы передать имя экземпляра имени хоста. Пока это работает, но я уверен, что это может быть упорядочено путем вложенных переменных, возможно?

---
- name: Create VM based on template
  hosts: ovirt-engine
  become: yes
  become_method: sudo

  vars:
  - temp: '{{temp_fedora25}}'
  - host_pre: db
  - host_seq: a%c
  - host_cnt: 3
  - host_srt: 0x61

  tasks:

    - name: Giving Birth to lil Baby VM's
      ovirt:
         user: '{{ovirt_usr}}'
         password: '{{ovirt_pass}}'
         url: '{{engine_url}}'
         instance_name: "{{item}}"
         instance_nic: ovirtmgmt
         resource_type: template
         image: '{{temp}}'
         zone: superblade-a
         disk_alloc: preallocated
      with_sequence: start="{{host_srt}}" count="{{host_cnt}}" format="{{host_pre}}-{{host_seq}}"
Другие вопросы по тегам