
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 mysequence
22 Mal gesetzt, die Werte der ersten 21 Iterationen werden überschrieben, der letzte Wert ist eine Zeichenfolge, 22
die in eine Liste mit list
Filter umgewandelt wurde. Als Ergebnis erhalten Sie eine Liste mit zwei Elementen mit 2
und 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 }}"