ansible 병렬작업
1 병렬구성
1) ansible.cfg
forks = 5
2) ansible-playbook --forks 5
2. Serial 구성
1) ansible-playbook --serial 2
2) task 설정
name
hosts:
serial: 2
3. 비동기 작업
작업을 기다려야 한다면, async, poll 키워드를 사용하여
- name: long tasks
hosts: test1
remote_user: devops
tasks:
- name : download
get_url : url=http://.../test.tar.gz
async: 3600
poll: 10
- name: restart and wait unil the server is rebooted
hosts: test1
remote_user: devops
tasks:
- name : restart machine
shell : sleep 2 && shutdown -r now
async: 1
poll: 0 (대기하지 않음)
become: true
ignore_errors: true
- name: waiting for server to come back
local_action:
wait_for:
host: "{{ inventory_hostname }}"
state: started
delay: 30
timeout: 300
become: false
- name:
hosts: test1
remote_user : devops
become : true
tasks:
- name : download big
get_url: url=http://~~~/test.tar.gz
async: 3600
poll: 0
register: download
- name : wait to finish
async_status: "jid={{ donwload.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 30