Ansible Erzeugen Sie ein Array von Zahlen

Ansible Erzeugen Sie ein Array von Zahlen

Ich möchte eine Liste mit den Zahlen von 1 bis 22 erstellen und habe dafür das folgende Ansible-Skript geschrieben.

- hosts: localhost
  gather_facts: no
  tasks:
    - name: Generate sequance
      set_fact:
        mysequence: "{{ item | list }}"
      with_sequence: start=1 end=22

    - debug: var=mysequence

Wenn ich den Code ausführe, erhalte ich dieses seltsame Ergebnis

$ ansible-playbook test.yml

PLAY [localhost] **************************************************************************************************************************

TASK [Generate sequance] ******************************************************************************************************************
ok: [localhost] => (item=1)
ok: [localhost] => (item=2)
ok: [localhost] => (item=3)
ok: [localhost] => (item=4)
ok: [localhost] => (item=5)
ok: [localhost] => (item=6)
ok: [localhost] => (item=7)
ok: [localhost] => (item=8)
ok: [localhost] => (item=9)
ok: [localhost] => (item=10)
ok: [localhost] => (item=11)
ok: [localhost] => (item=12)
ok: [localhost] => (item=13)
ok: [localhost] => (item=14)
ok: [localhost] => (item=15)
ok: [localhost] => (item=16)
ok: [localhost] => (item=17)
ok: [localhost] => (item=18)
ok: [localhost] => (item=19)
ok: [localhost] => (item=20)
ok: [localhost] => (item=21)
ok: [localhost] => (item=22)

TASK [debug] ******************************************************************************************************************************
ok: [localhost] => {
    "mysequence": [
        "2",
        "2"
    ]
}

PLAY RECAP ********************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0

Ich verwende die neueste Version von Ansible. Jede Hilfe ist sehr willkommen!


Ich brauche diese Liste für eine andere Aufgabe. Hier ist ein Ausschnitt:

- name: Reboot 22 VMs
  vmware_guest:
    validate_certs: false
    hostname: x.x.x.x
    username: [email protected]
    password: PASSS
    datacenter: DC1
    folder: "DC1/vm/Pod-{{item[1]}}"
    name: "{{item[0]}}-Pod-{{item[1]}}"
    state: restarted
  delegate_to: localhost
  with_nested:
    - "{{myVarList}}"
    - [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]

Antwort1

Nichts istseltsamin Ihren Ergebnissen: Sie haben mysequence22 Mal gesetzt, die Werte der ersten 21 Iterationen werden überschrieben, der letzte Wert ist eine Zeichenfolge, 22die in eine Liste mit listFilter umgewandelt wurde. Als Ergebnis erhalten Sie eine Liste mit zwei Elementen mit 2und 2.

Die Aufgabe sollte folgendermaßen aussehen:

- name: Generate sequance
  set_fact:
    mysequence: "{{ mysequence | default([]) + [item | int] }}"
  with_sequence: start=1 end=22

Was Sie aber wirklich wollten, ist eine Möglichkeit zum Generieren einer Liste von Ganzzahlen in einer Jinja2-Vorlage:

- set_fact:
    mysequence: "{{ range(1, 22 + 1) | list }}"

verwandte Informationen