728x90
반응형
with_sequence
with_sequence를 이용하면 범위에 맞는 값들을 format 형식으로 넣어줍니다.
- name: with_sequence
debug: msg="{{ item }}"
with_sequence: start=1 end=4 format=test%02x
# result
test01
test02
test03
test04
- format을 test{{ 2자리 수로 sequence }}로 두었기 때문에 위와 같은 결과를 보여줍니다.
- with_sequence에서 루프를 돌 때의 변수는 item입니다.
- C, C++, JAVA 등에서 for(int i = 0; i < 8; i++)할 때의 i를 item이라는 이름의 변수로 사용한다고 생각하면 됩니다.
만약, with_sequence에 들어가는 start ~ end값이 특정 변수에 의해 작성이 된다면, 아래와 같이 작성하는 것이 좋습니다.
- name: with_sequence
debug: msg="{{ item }}"
with_sequence: start=0 end={{ count.stdout|int - 1 if count.stdout|int >= 1 else 0 }}
- 만약 count.stdout|int 값이 0보다 작을 경우, end가 start 보다 작아 실행 시 오류를 내뱉습니다.
- 따라서, 위와 같이 end문에 if ~ else 문을 넣으면 오류를 방지할 수 있습니다.
with_sequence와 when 함께 사용하기
when의 경우, with_sequence와 함께 사용하면 with_sequence의 각 루프마다 확인하는 용도로 사용됩니다.
따라서, 아래의 예시와 같이 루프 중 특정 루프는 건너뛰고자 할 때 사용할 수 있습니다.
- name: with_sequence + when
debug: msg="{{ item }}"
with_sequence: start=1 end=4 format=test%02x
when: {{ item|int }} != 3
# result
test01
test02
test04
- when 조건을 with_sequence의 각 루프마다 체크하여 item값이 3인 경우에 해당 루프를 실행하지 않도록 합니다.
728x90
반응형
'OPEN SOURCE > ANSIBLE' 카테고리의 다른 글
[Jinja2] Jinja2에서 조건식 사용하기 (0) | 2021.02.26 |
---|