- به منظور بررسی و آزمایش اتصال میان خادم مرکزی و خادمهای تحت مدیریت مراحل زیر را دنبال کنید.
- ابتدا یک پرونده با نام hosts.list یا هر نام دلخواه دیگر ایجاد کنید. برای این منظور :
# touch hosts.list
- سپس پروندهی ساخته شده را با یک ویرایشگر باز کنید. برای این منظور :
# nano hosts.list
- در نهایت آدرس خادمهای تحت مدیریت را به شکل زیر وارد کنید :
[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 یا دامنهی خادمهای تحت مدیریت نوشته میشود.
- در مرحله بعد برای بررسی و آزمایش فهرست ایجاد شده به صورت زیر عمل کنید :
# ansible -i hosts.list all --list-hosts
- در صورتی که دستور بالا به صورت موفقیت آمیز اجرا شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
hosts (3):
172.16.0.245
172.16.0.248
172.16.0.247
- نکته: کلمهی all اشاره به تمام گروهها و خادمهای تحت مدیریت دارد.
- در نهایت برای آزمایش و بررسی اتصال میان خادم مرکزی و خادمهای تحت مدیریت به صورت زیر عمل کنید :
# ansible -i hosts.list all -m ping
- ممکن است خطایی مشابه خطای زیر را دریافت کنید :
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 به صورت زیر :
# ansible -i hosts.list all -m ping -e ansible_python_interpreter=/usr/bin/python3
- در صورتی که دستور بالا به صورت موفقیت آمیز اجرا شده باشد، خروجیای مشابه زیر دریافت خواهید کرد :
172.16.0.245 | SUCCESS => {
"changed": false,
"ping": "pong"
}
- همان طور که در خروجی بالا مشخص است، عبارت SUCCESS به معنی اجرای موفقیت آمیز ماژول چاپ شده است.
- همچنین عبارت changed بیانگر این میباشد که آیا تغییراتی بر روی سیستم مقصد صورت گرفته است یا خیر
- آزمایش شده بر روی Ansible نسخهی 2.5.1
- آزمایش شده بر روی سیستم عامل Ubuntu 18.04