Hi, I know I am provably misunderstanding somthing, but I am not able to find a solution to my (rather simple) problem.
What I want is quite easy. I have a list and I want to get the last (or first) X elements of it:
Example:
`
- set_fact: mylist={{[“l10”,“j82”,“b83”,“8jk”,“j83”]|list}}
- debug: var=mylist
- set_fact: max_n={{1|int}}
- debug: var=max_n
- debug: var=mylist[-{{max_n}}:]
`
Since here everything seems to work ok with the output:
`
PLAY [deploy] ******************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [cleanup_s3_folder : set_fact] ********************************************
ok: [localhost]
TASK [cleanup_s3_folder : debug] ***********************************************
ok: [localhost] => {
“mylist”: [
“l10”,
“j82”,
“b83”,
“8jk”,
“j83”
]
}
TASK [cleanup_s3_folder : set_fact] ********************************************
ok: [localhost]
TASK [cleanup_s3_folder : debug] ***********************************************
ok: [localhost] => {
“max_n”: “1”
}
TASK [cleanup_s3_folder : debug] ***********************************************
ok: [localhost] => {
“mylist[-1:]”: [
“j83”
]
}
PLAY RECAP *********************************************************************
localhost : ok=6 changed=0 unreachable=0 failed=0
`
Now, this last list, containing in this case only the value “j83”, I want it on a variable to use further on, so I try with:
`
-
set_fact: elements=mylist[-{{max_n}}:]
-
debug: var=elements
-
set_fact: elements2={{ mylist[-{{max_n}}:] }}
-
debug: var=elements2
`
And I am not getting what I want:
`
PLAY [deploy] ******************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [cleanup_s3_folder : set_fact] ********************************************
ok: [localhost]
TASK [cleanup_s3_folder : debug] ***********************************************
ok: [localhost] => {
“mylist”: [
“l10”,
“j82”,
“b83”,
“8jk”,
“j83”
]
}
TASK [cleanup_s3_folder : set_fact] ********************************************
ok: [localhost]
TASK [cleanup_s3_folder : debug] ***********************************************
ok: [localhost] => {
“max_n”: “1”
}
TASK [cleanup_s3_folder : debug] ***********************************************
ok: [localhost] => {
“mylist[-1:]”: [
“j83”
]
}
TASK [cleanup_s3_folder : set_fact] ********************************************
ok: [localhost]
TASK [cleanup_s3_folder : debug] ***********************************************
ok: [localhost] => {
“elements”: “mylist[-1:]”
}
TASK [cleanup_s3_folder : set_fact] ********************************************
fatal: [localhost]: FAILED! => {“failed”: true, “msg”: “ERROR! template error while templating string: expected token ‘:’, got ‘}’”}
PLAY RECAP *********************************************************************
localhost : ok=8 changed=0 unreachable=0 failed=1
`
Is there an easy way to get a VARIABLE piece of a list into a new variable?