728x90
Serial
기본적으로 ansible은 모든 호스트에서 각 태스크를 병렬로 실행하지만 serial을 통해 한 번에 몇 개의 호스트가 play를 수행할지 지정할 수 있는데 사용 예시는 다음과 같다.
한 번에 하나의 호스트에서만 실행
- name: serial-one
hosts: all
serial: 1
tasks:
- name: get info
- name: remove host from elb group
- name: update
- name: put host into elb group
위와 같은 playbook을 통해 한 번에 하나의 호스트에서만 실행하도록 전달할 수 있다.
또한 위와 같은 상황에선 특정 비율 이상의 실패 발생 시에 이후 작업들도 실패가 발생할 확률이 높기에 서비스가 중단될 수 있으므로 특정 비율 이상 태스크 실패 시 전체 플레이를 중단시킬 수 있다.
- name: fail-test
hosts: all
serial: 1
max_fail_percentage: 25
tasks:
...
위와 같이 작성 시 호스트가 4개라고 하였을 때 하나의 호스트에서 실패 시 25%이므로 초과하지 않아 계속해서 실행한다. 이후 두번 째 호스트에서 실패 시 50%이므로 전체 플레이가 중단된다. 만약 하나의 실패도 용납하지 않으려면 해당 값을 0으로 설정한다.
백분율로 한 번에 여러 호스트 실행
- name: serial-percent
serial: 50%
tasks:
...
serial은 단순히 serial: 1
뿐만이 아니라 백분율도 처리할 수 있다.
serial 리스트 사용
- name: serial-list
serial:
- 1
- 30%
tasks:
...
만약 위에서 호스트 개수가 30일 경우 다음과 같이 실행된다.(1 → 10 → 10 → 9)
'DevOps > Ansible' 카테고리의 다른 글
Ansible run_once (0) | 2023.07.03 |
---|---|
Ansible host 지정 패턴 (0) | 2023.07.03 |
Ansible lookup (0) | 2023.07.02 |
requirements.txt 을 활용해 Ansible에서 package 설치 (0) | 2023.06.30 |
Ansible facts (0) | 2023.06.30 |