- با استفاده از این قابلیت میتوان تعیین نمود که فرآیندهای موجود در PlayBook تا چه تعداد به صورت موازی اجرا شوند.
- به عنوان مثال در صورتی که مقدار این کلید بر روی عدد چهار تنظیم شده باشد و تعداد خادمهای تحت مدیریت نه عدد باشد، در این صورت ابتدا فرآیندها بر روی چهار خادم اول اجرا شده، سپس بر روی چهار خادم دوم و در نهایت بر روی خادم آخر اجرا میشود.
- به عنوان مثال کد زیر باعث میشود تا :
- ابتدا دستور date با تاخیر سه ثانیه توسط ماژول shell بر روی خادمهای تحت مدیریت اجرا شود.
- سپس خروجی دستور درون متغیر item ریخته شده و درنهایت نمایش داده شود.
---
- name: PlayBook
hosts: all
gather_facts: no
serial: 1
tasks:
- name: run multi command
shell: "sleep 3 ; date"
register: result
- debug:
var: result.stdout
- به مواردی که به صورت رنگی مشخص شده است، دقت کنید.
- به منظور اجرای پروندهی PlayBook به شکل زیر عمل کنید :
# ansible-playbook playbook.yaml
- در صورتی که مقدار عبارت serial بر روی یک تنظیم شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
PLAY [PlayBook] **************************************************************************************************************************************
TASK [run multi command] *****************************************************************************************************************************
changed: [172.16.0.247]
TASK [debug] *****************************************************************************************************************************************
ok: [172.16.0.247] => {
"result.stdout": "Sat 28 Mar 2020 02:33:50 PM +0430"
}
PLAY [PlayBook] **************************************************************************************************************************************
TASK [run multi command] *****************************************************************************************************************************
changed: [172.16.0.248]
TASK [debug] *****************************************************************************************************************************************
ok: [172.16.0.248] => {
"result.stdout": "Sat Mar 28 14:33:53 +0430 2020"
}
PLAY RECAP *******************************************************************************************************************************************
172.16.0.247 : ok=2 changed=1 unreachable=0 failed=0
172.16.0.248 : ok=2 changed=1 unreachable=0 failed=0
- همان طور که مشاهده میکنید، دستور date در دو فرآیند جدا از هم بر روی دو خادم اجرا شده است. همچنین بین زمانهای اجرای دو دستور سه ثانیه وقفه وجود دارد که این اثبات تک تک اجرا شدن فرآیند بر روی خادمهای تحت مدیریت میباشد.
- حال در صورتی که مقدار عبارت serial بر روی دو تنظیم شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
PLAY [PlayBook] **************************************************************************************************************************************
TASK [run multi command] *****************************************************************************************************************************
changed: [172.16.0.248]
changed: [172.16.0.247]
TASK [debug] *****************************************************************************************************************************************
ok: [172.16.0.247] => {
"result.stdout": "Sat 28 Mar 2020 02:34:13 PM +0430"
}
ok: [172.16.0.248] => {
"result.stdout": "Sat Mar 28 14:34:13 +0430 2020"
}
PLAY RECAP *******************************************************************************************************************************************
172.16.0.247 : ok=2 changed=1 unreachable=0 failed=0
172.16.0.248 : ok=2 changed=1 unreachable=0 failed=0
- همان طور که مشاهده میکنید تفاوتی زمانی بین اجرای دستور date در دو خادم تحت مدیریت نیست که این نشان از همزمان یا موازی اجرا شدن فرآیند بر روی خادمهای تحت مدیریت است.
- نکته: در مثال بالا تعداد خادمهای تحت مدیریت دو در نظر گرفته شده است.
- به منظور مطالعهی بیشتر لینکهای زیر پیشنهاد میشود :
https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04