*حامد* مسئول تعدادی سرور پایتونی است که با یک *haproxy* درخواستهای کاربرها را بین تمامی سرورها تقسیم میکند.
از بین این سرورها تعدادی به طور *تصادفی* مشکل پیدا میکنند. مشکل به این صورت است که این سرورها به جای *statusCode* از نوع `200`، جواب با *statusCode* از نوع `500` میدهند.
حال *حامد* میخواهد با یک *Ansible Playbook* سرورهایی که مشکل دارند را از مدار خارج کند. به حامد در این امر کمک کنید.
شما موظف هستید که یک فایل `tasks.yml` را بسازید که سرورهایی که مشکل دارند را پیدا کند و آنها را از سرورهای پشت *haproxy* خارج کند.
برای دانلود پروژه اولیه روی [این لینک](/contest/assignments/39255/download_problem_initial_project/136438/) کلیک کنید.
## توضیح سرور پایتونی
سرور پایتونی فقط دارای یک مسیر (*route*) `/` میباشد. که با پول کردن ایمیج داکر زیر میتوانید آن را تست کنید.
```
registry.gitlab.com/qio/custom/135803/ansibleflaskapi
```
این مسیر یا همان *route* در واقع اسم سرور را به ما پاسخ میدهد. برای مثال اگر اسم سرور `server32` باشد، جواب `"server32"` خواهد بود.
هر یک از سرورها دارای یک `Enviroment Variable` به نام `STATUS` میباشد که به طور پیش فرض روی `200` گذاشته شدهاند. شما میتوانید با تغییر این متغیر به عدد `500` این مشکل اپ رو تکرار کنید.
برای آشنایی بیشتر با این سرور، فایل `docker-compose` را مشاهده و بررسی کنید.
## نکات تکمیلی
* اجرای فایل *ansible* باید روی `localhost` باشد.
* نام فایل *playbook* باید `tasks.yml` باشد.
* تعداد سرورهایی که داخل کانفیگ `haproxy` هستند و همینطور تعداد سرورهایی که مشکل دارند تصادفی است. پس `playbook` مورد نظر باید کاملا *dynamic* باشد.
* **در صورت نیاز!** بدانید پروژه حین داوری در فولدر `/home/project` قرار دارد. ممکن است پاسخ شما نیازی به این نکته نداشته باشد.
+ فقط `tasks.yml` را تغییر داده و ارسال نمایید.
+ در صورتی که سروری، خراب تشخیص داده شد، باید آن از کانفیگ haproxy خارح شود.
## نحوهی ارسال جواب
شما فقط میتوانید محتوای فایل `tasks.yml` را تغییر دهید. تغییرات خودتان را بر روی `tasks.yml` اعمال کنید و فایل اصلاح شده را ارسال نمایید. همچنین در نظر داشته باشید نحوه اجرای فایل `tasks.yml` شما به صورت زیر خواهد بود:
```bash terminal terminal
ansible-playbook tasks.yml
```