
내 의도는 1부터 22까지의 숫자가 포함된 목록을 생성하는 것이며 이에 대해 Ansible 스크립트 아래에 썼습니다.
- hosts: localhost
gather_facts: no
tasks:
- name: Generate sequance
set_fact:
mysequence: "{{ item | list }}"
with_sequence: start=1 end=22
- debug: var=mysequence
코드를 실행하면 이상한 결과가 나타납니다.
$ 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
최신 버전의 Ansible을 사용하고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다!
다른 작업을 위해 이 목록이 필요합니다. 다음은 스니펫입니다.
- 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]
답변1
아무것도 아니다기이한결과: 22번 설정하면 처음 21번 반복의 값이 덮어쓰여지고, 마지막 값은 필터 가 있는 목록으로 변환된 mysequence
문자열입니다 . 결과적으로 및 을 사용하여 두 요소로 구성된 목록을 얻습니다 .22
list
2
2
원하는 작업의 모습은 다음과 같습니다.
- name: Generate sequance
set_fact:
mysequence: "{{ mysequence | default([]) + [item | int] }}"
with_sequence: start=1 end=22
하지만 실제로 원했던 것은 Jinja2 템플릿에서 정수 목록을 생성하는 방법입니다.
- set_fact:
mysequence: "{{ range(1, 22 + 1) | list }}"