- به منظور بررسی و آزمایش اتصال میان خادم مرکزی و خادمهای تحت مدیریت مراحل زیر را دنبال کنید.
- ابتدا یک پرونده با نام hosts.list یا هر نام دلخواه دیگر ایجاد کنید. برای این منظور :
|
1 |
# touch hosts.list |
- سپس پروندهی ساخته شده را با یک ویرایشگر باز کنید. برای این منظور :
|
1 |
# nano hosts.list |
- در نهایت آدرس خادمهای تحت مدیریت را به شکل زیر وارد کنید :
|
1 2 3 4 5 6 7 8 |
[centos-servers] 172.16.0.245 [ubuntu-servers] 172.16.0.248 [debian-servers] 172.16.0.247 |
- نکته: میتوان به جای آدرس IP از نام دامنه استفاده نمود.
- نکته: نامهای centos-servers و ubuntu-servers و debian-servers مثال بوده و باید تغییر یابند.
- نکته: در زیر نام هر گروه، آدرس IP یا دامنهی خادمهای تحت مدیریت نوشته میشود.
- در مرحله بعد برای بررسی و آزمایش فهرست ایجاد شده به صورت زیر عمل کنید :
|
1 |
# ansible -i hosts.list <span style="color: #ff0000;">all</span> --list-hosts |
- در صورتی که دستور بالا به صورت موفقیت آمیز اجرا شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
|
1 2 3 4 |
hosts (3): 172.16.0.245 172.16.0.248 172.16.0.247 |
- نکته: کلمهی all اشاره به تمام گروهها و خادمهای تحت مدیریت دارد.
- در نهایت برای آزمایش و بررسی اتصال میان خادم مرکزی و خادمهای تحت مدیریت به صورت زیر عمل کنید :
|
1 |
# ansible -i hosts.list <span style="color: #ff0000;">all</span> -m <span style="color: #ff0000;">ping</span> |
- ممکن است خطایی مشابه خطای زیر را دریافت کنید :
|
1 2 3 4 5 6 7 |
172.16.0.247 | FAILED! => { "changed": false, "module_stderr": "Shared connection to 172.16.0.247 closed.\r\n", "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", "msg": "MODULE FAILURE", "rc": 127 } |
- همان طور که در متن خطا اشاره شده است، پرونده Python در مسیر usr/bin/ موجود نمیباشد.
- اصولا این پرونده و پروندهی Python3 از جنس Symbolic Link میباشند.
- عدم یافت پروندهی Python نشان از آن دارد که در سیستم مقصد، بستهی Python نسخه ۲ نصب نمیباشد.
- برای حل این موضوع میتوان از سه روش زیر استفاده کرد :
- روش اول) نصب بستهی Python نسخه ۲ بر روی سیستم مقصد به صورت دستی
- روش دوم) ساخت یک Symbolic Link با نام Python از روی پروندهی اجرایی Python نسخه ۳ (پیشنهادی)
- روش سوم) استفاده از متغیر محلی ansible_python_interpreter به صورت زیر :
|
1 |
# ansible -i hosts.list all -m <span style="color: #ff0000;">ping</span> -e ansible_python_interpreter=/usr/bin/python3 |
- در صورتی که دستور بالا به صورت موفقیت آمیز اجرا شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
|
1 2 3 4 |
172.16.0.245 | SUCCESS => { "changed": false, <span style="color: #ff0000;">"ping": "pong"</span> } |
- همان طور که در خروجی بالا مشخص است، عبارت SUCCESS به معنی اجرای موفقیت آمیز ماژول چاپ شده است.
- همچنین عبارت changed بیانگر این میباشد که آیا تغییراتی بر روی سیستم مقصد صورت گرفته است یا خیر
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04