Ansible — длинный список как переменная — динамический список

#ansible

#ansible

Вопрос:

новичок с ansible

как мне передать динамический список значений в ansible

я хочу изначально сохранить это как 8

  • «{{ [ ‘lun1’, ‘lun2’, ‘lun3’, ‘lun4’, ‘lun5’, ‘lun6’, ‘lun7’, ‘lun8’ ] }} «

но позже увеличьте его до 50, 100

   - name: Create object
    na
      state: present
      name: "{{ hostvars[item[1]]['iscsi_hostname']['stdout'] }}{{item[0]}}"
      flexvol_name: "{{ vol_name }}{{ hostvars[item[1]]['iscsi_hostname']['stdout'] }}"
      hostname: "{{ hostname }}"
      username: "{{ username }}"
      password: "{{ password }}"
    with_nested:
       - "{{ [ 'lun1' , 'lun2' , 'lun3' , 'lun4' , 'lun5' , 'lun6' ,'lun7' , 'lun8' ] }} "
       - "{{ groups['redhat'] }}"
  

итак, я хотел

  • «{{ [ ‘lun1’, ‘lun2’, ‘lun3’, ‘lun4’, ‘lun5’, ‘lun6’, ‘lun7’, ‘lun8’ ] }} «

как

  • «{{ [ ‘lun1’, ‘lun2’, ‘lun3’, ‘lun4’, ‘lun5’, ‘lun6’, ‘lun7’, ‘lun8’ …….. ‘ lun50’ ] }} «

Ответ №1:

Создайте переменную списка динамически с set_fact with_sequence использованием переменной number нужного вам размера. И отправьте number с --extra-vars помощью .

playbook.yml

   - name: Create list var
    set_fact
      my_list: "{{ my_list | default ([]) }}   ['lun{{ item }}']"
    with_sequence: start=1 end={{ number }}

  - name: Create object
    na
      state: present
      name: "{{ hostvars[item[1]]['iscsi_hostname']['stdout'] }}{{item[0]}}"
      flexvol_name: "{{ vol_name }}{{ hostvars[item[1]]['iscsi_hostname']['stdout'] }}"
      hostname: "{{ hostname }}"
      username: "{{ username }}"
      password: "{{ password }}"
    with_nested:
       - "{{ my_list }} "
       - "{{ groups['redhat'] }}"
  

Пример команд для выполнения вашего playbook.yml

 ansible-playbook test.yml --extra-vars "number=10"
  
 ansible-playbook test.yml --extra-vars "number=25"
  
 ansible-playbook test.yml --extra-vars "number=50"