راهنمای نصب انسیبل در اوبونتو
ابزارهای مدیریت پیکربندی، امکان خودکارسازی فرایندهای زیرساختی را فراهم میکنند. انسیبل یکی از ابزارهای محبوب برای مدیریت فرایندهای زیرساخت است که بین متخصصان DevOps محبوبیت بالایی دارد. در این مطلب از ابر زس به راهنمای نصب انسیبل روی اوبونتو میپردازیم.
از محبوبترین ابزارهای مدیریت پیکربندی برای سیستمهای لینوکس میتوان به Chef و Puppet اشاره کرد. البته این ابزارها برای بسیاری از کاربران، بیش از حد پیچیده هستند؛ اما Ansible نسبتا سادهتر است و نیازی به نصب نرمافزار خاصی روی نودها ندارد. علاوه بر این از SSH برای اجرای وظایف اتوماسیون و فایلهای YAML برای تعریف جزئیات استفاده میکند.
پیش نیازهای نصب ansible روی اوبونتو
در این راهنمای نصب انسیبل نیاز به موارد زیر دارید:
یک نود کنترل انسیبل: نود کنترل (Control Node) ماشینی است که از آن برای اتصال و کنترل میزبانهای Ansible از طریق SSH استفاده میکنیم. نود کنترلی انسیبل ماشین لوکال یا سروری است که به اجرای Ansible اختصاص دارد. در این مقاله نود کنترلی، یک سیستم اوبونتو ۲۲.۰۴ است. اطمینان حاصل کنید که گره کنترل دارای موارد زیر است:
- یک کاربر غیر روت با امتیازات sudo
- یک جفت کلید SSH مربوط به کاربر
یک یا چند هاست انسیبل: هاست انسیبل، هر ماشینی است که نود کنترل ansible برای خودکارسازی آن ماشین پیکربندی شده است. در این مقاله فرض بر این است که هاستهای انسیبل شما سرورهای اوبونتو ۲۲.۰۴ ریموت هستند. اطمینان حاصل کنید که هر هاست شامل کلید عمومی SSH نود کنترل انسیبل است که به کلیدهای مجاز یک کاربر سیستم (authorized_keys) اضافه میشود. این کاربر میتواند یوزر روت یا غیر روت با امتیازات sudo باشد.
بیشتر بخوانید: انسیبل چیست؟
مراحل نصب انسیبل روی اوبونتو ۲۲.۰۴
نصب ansible بسیار راحت بوده و شما با دنبال کردن مراحل زیر میتوانید آن را انجام دهید:
مرحله اول: نصب انسیبل
جهت استفاده از انسیبل بهعنوان ابزاری برای مدیریت زیرساخت سرور، باید این نرمافزار را روی دستگاه نصب کنید تا بهعنوان نود کنترل Ansible عمل کند.
از نود کنترلی دستور زیر را اجرا کنید تا PPA رسمی پروژه (personal package archive) را در فهرست منابع سیستم خود قرار دهید:
sudo apt-add-repository ppa:ansible/ansible
هنگامی که از شما خواسته شد تا افزودن PPA را بپذیرید، ENTER
را فشار دهید.
در مرحله بعد، ایندکس پکیج سیستم خود را رفرش کنید تا از بستههای موجود در PPA که به تازگی اضافه شده است، آگاه شود:
sudo apt update
اکنون پس از این بهروزرسانی، میتوانید نرم افزار Ansible را نصب کنید:
sudo apt install ansible
اکنون control node انسیبل همه نرمافزارهای مورد نیاز برای مدیریت هاست را دارد. در مرحله بعد، نحوه اضافه کردن هاست به فهرست موجود نود کنترل را بررسی میکنیم تا بتوان آنها را کنترل کرد.
مرحله دوم: نحوه تنظیم Inventory File
در ادامه راهنمای نصب انسیبل به روش تنظیم فایل اینونتوری میپردازیم. فایل اینونتوری (inventory file) شامل اطلاعاتی در مورد هاستهایی است که با انسیبل مدیریت میکنید. میتوانید یک تا چند صد سرور را در inventory file قرار دهید و هاستها را میتوان در گروهها و زیر گروهها دستهبندی کنید. فایل اینونتوری معمولاً برای تنظیم متغیرهایی استفاده میشود که فقط برای هاستها یا گروههای خاص معتبر هستند تا در پلی بوک و قالبها استفاده شوند. برخی از متغیرها نیز میتوانند بر نحوه اجرای یک پلی بوک مانند ansible_python_interpreter تأثیر بگذارند.
برای ویرایش محتویات inventory پیشفرض انسیبل، فایل etc/ansible/hosts/
را با استفاده از ادیتور تکست انتخابی خود در نود کنترل انسیبل باز کنید:
sudo nano /etc/ansible/hosts
نکته: توجه داشته باشید که انسیبل معمولاً یک فایل اینونتوری پیشفرض در etc/ansible/hosts
ایجاد میکند اما این امکان را به شما میدهد که inventory file را در هر مکانی که با نیازهای شما مطابقت دارد ایجاد کنید. در این حالت، باید مسیر فایل اینونتوری سفارشی خود را با پارامتر i-
هنگام اجرای دستورات Ansible و playbooks مشخص کنید. پیشنهاد میکنیم فایلهای اینونتوری هر پروژه را جدا کنید تا ریسک اجرای پلیبوکها روی گروه اشتباه سرورها را کاهش دهید.
بهصورت پیشفرض، فایل اینونتوری شامل تعدادی مثال است که میتوانید از آنها به عنوان مرجع تنظیم اینونتوری استفاده کنید. برای مثال در ادامه گروهی به نام [servers] را با سه سرور مختلف در آن تعریف میکنیم که هر کدام با نام مستعار سفارشی server2 ،server1 و server3 شناسایی میشوند. اطمینان حاصل کنید که IPهای هایلایت شده را با آدرسهای IP هاستهای انسیبل جایگزین کنید.
[servers]
server1 ansible_host=216.239.38.120
server2 ansible_host=98.137.27.103
server3 ansible_host=202.89.233.101
[all:vars]
ansible_python_interpreter=/usr/bin/python3
زیرگروه all:vars
پارامتر هاست ansible_python_interpreter
را تنظیم میکند که برای همه هاستهای اینونتوری معتبر خواهد بود. این پارامتر مطمئن میشود که سرور راه دور از /usr/bin/python3
پایتون ۳ به جای /usr/bin/python
(پایتون ۲.۷) که در نسخههای اخیر اوبونتو وجود ندارد، استفاده میکند.
در نهایت برای ذخیره فایل، کلیدهای CTRL+X
و Y
و برای تایید تغییرات نهایی کلید ENTER
را فشار دهید.
برای بررسی inventory، میتوانید دستور زیر را اجرا کنید:
ansible-inventory --list -y
در ادامه فرایند نصب انسیبل خروجی زیرا را مشاهده خواهید کرد که شامل زیرساخت سرور فایل اینونتوری تعریف شده است:
Output
all:
children:
servers:
hosts:
server1:
ansible_host: 216.239.38.120
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 98.137.27.103
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 202.89.233.101
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}
اکنون که inventory file را پیکربندی کردهاید، همه چیزهایی را که برای آزمایش اتصال به هاست انسیبل موردنیاز است در اختیار دارید.
مرحله سوم: تست اتصال نصب انسیبل
پس از تنظیم فایل inventory برای سرورها، زمان آن رسیده است که بررسی کنید آیا انسیبل قادر به اتصال به این سرورها و اجرای دستورات از طریق SSH است یا خیر.
برای این آموزش، ما از حساب روت اوبونتو استفاده خواهیم کرد؛ زیرا این حساب معمولاً تنها حسابی است که به طور پیشفرض در سرورهای جدید ایجاد شده در دسترس است. اگر هاستهای Ansible شما قبلاً یک کاربر sudo غیر روت دارند، پیشنهاد میکنیم، از آن حساب استفاده کنید.
میتوانید از آرگومان u-
برای مشخص کردن یوزر سیستم راه دور استفاده کنید. زمانی که از این آرگومان استفاده نکنید، انسیبل سعی میکند به عنوان کاربر فعلی سیستم به نود کنترل متصل شود.
از ماشین لوکال یا نود کنترل Ansible، دستور زیر را اجرا کنید:
ansible all -m ping -u root
این دستور از ماژول پینگ داخلی انسیبل برای تست اتصال روی تمام نودها از inventory پیشفرض استفاده میکند و بهعنوان روت به هم متصل میشوند.
ماژول پینگ این موارد را تست میکند:
- آیا هاستها قابل دسترسی هستند.
آیا اعتبارنامه SSH معتبری دارید.
آیا هاستها میتوانند ماژولهای Ansible را با استفاده از پایتون اجرا کنند.
در نهایت باید خروجی زیر را مشاهده کنید:
Output
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
اگر اولین باری است که از طریق SSH به این سرورها متصل میشوید، از شما خواسته میشود که صحت هاستهایی را که از طریق Ansible به آنها وصل میشوید، تأیید کنید. برای تایید این اطلاعات کافی است عبارت yes
را تایپ کنید و سپس کلید ENTER
را فشار دهید.
هنگامی که یک پاسخ "pong"
را از یک هاست دریافت کردید، به این معناست که شما آماده اجرای دستورات Ansible و playbooks در آن سرور هستید.
مرحله چهارم: اجرای دستورات Ad-Hoc (اختیاری)
پس از تست و نصب انسیبل و تأیید این موضوع که نود کنترل انسیبل توانایی برقراری ارتباط با هاست را دارد، میتوانید دستورات ad-hoc و playbooks را در سرورهای خود اجرا کنید.
هر دستوری که روی یک سرور راه دور از طریق SSH اجرا میکنید، میتواند با Ansible روی سرورهای مشخص شده در فایل اینونتوری اجرا شود. به عنوان مثال، میتوانید میزان استفاده از دیسک را در همه سرورها با به کار بردن دستور زیر بررسی کنید:
ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.8G 0 3.8G 0% /dev
tmpfs 728M 624K 728M 1% /run
/dev/vda1 156G 2.4G 154G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 107M 3.6M 103M 4% /boot/efi
tmpfs 698M 0 698M 0% /run/user/0
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 391M 608K 390M 1% /run
/dev/vda1 72G 2.2G 70G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 109M 3.6M 105M 4% /boot/efi
tmpfs 325M 0 325M 0% /run/user/0
...
دستور df -h
را میتوانید با هر دستوری که دوست داشتید جایگزین کنید. همچنین میتوانید ماژولهای Ansible را از طریق دستورات ad-hoc اجرا کنید، مشابه آنچه که قبلاً با ماژول ping
برای آزمایش اتصال انجام دادید.
به عنوان مثال، در ادامه نحوه استفاده از ماژول apt
برای نصب آخرین نسخه vim
در تمام سرورهای inventory آمده است:
ansible all -m apt -a "name=vim state=latest" -u root
همچنین میتوانید هنگام اجرای دستورات انسیبل، هاستهای جداگانه، گروهها و زیر گروهها را هدف قرار دهید. به عنوان مثال، میتوانید آپتایم هر هاست در گروه سرورها را با دستور زیر بررسی کنید:
ansible servers -a "uptime" -u root
میتوانیم چندین هاست را با جدا کردن آنها با دو نقطه مشخص کنیم:
ansible server1:server2 -m ping -u root
جمعبندی
در این مقاله آموزشی با مراحل نصب انسیبل آشنا شدیم. با استفاده از گامهای بالا میتوانید Ansible را نصب و یک فایل اینونتوری را برای اجرای دستورات ad-hoc از یک نود کنترل انسیبل تنظیم کنید. هنگامی که تأیید کردید که میتوانید زیرساخت خود را از یک ماشین کنترلکننده مرکزی Ansible متصل و کنترل نمایید، میتوانید هر دستور یا پلیبوک را که میخواهید روی آن هاست اجرا کنید.