ابزارهای مدیریت پیکربندی، امکان خودکارسازی فرایندهای زیرساختی را فراهم میکنند. انسیبل یکی از ابزارهای محبوب برای مدیریت فرایندهای زیرساخت است که بین متخصصان 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) را در فهرست منابع سیستم خود قرار دهید: هنگامی که از شما خواسته شد تا افزودن PPA را بپذیرید، در مرحله بعد، ایندکس پکیج سیستم خود را رفرش کنید تا از بستههای موجود در PPA که به تازگی اضافه شده است، آگاه شود: اکنون پس از این بهروزرسانی، میتوانید نرم افزار Ansible را نصب کنید: اکنون control node انسیبل همه نرمافزارهای مورد نیاز برای مدیریت هاست را دارد. در مرحله بعد، نحوه اضافه کردن هاست به فهرست موجود نود کنترل را بررسی میکنیم تا بتوان آنها را کنترل کرد. در ادامه راهنمای نصب انسیبل به روش تنظیم فایل اینونتوری میپردازیم. فایل اینونتوری (inventory file) شامل اطلاعاتی در مورد هاستهایی است که با انسیبل مدیریت میکنید. میتوانید یک تا چند صد سرور را در inventory file قرار دهید و هاستها را میتوان در گروهها و زیر گروهها دستهبندی کنید. فایل اینونتوری معمولاً برای تنظیم متغیرهایی استفاده میشود که فقط برای هاستها یا گروههای خاص معتبر هستند تا در پلی بوک و قالبها استفاده شوند. برخی از متغیرها نیز میتوانند بر نحوه اجرای یک پلی بوک مانند ansible_python_interpreter تأثیر بگذارند. برای ویرایش محتویات inventory پیشفرض انسیبل، فایل نکته: توجه داشته باشید که انسیبل معمولاً یک فایل اینونتوری پیشفرض در بهصورت پیشفرض، فایل اینونتوری شامل تعدادی مثال است که میتوانید از آنها به عنوان مرجع تنظیم اینونتوری استفاده کنید. برای مثال در ادامه گروهی به نام [servers] را با سه سرور مختلف در آن تعریف میکنیم که هر کدام با نام مستعار سفارشی server2 ،server1 و server3 شناسایی میشوند. اطمینان حاصل کنید که IPهای هایلایت شده را با آدرسهای IP هاستهای انسیبل جایگزین کنید. زیرگروه در نهایت برای ذخیره فایل، کلیدهای برای بررسی inventory، میتوانید دستور زیر را اجرا کنید: در ادامه فرایند نصب انسیبل خروجی زیرا را مشاهده خواهید کرد که شامل زیرساخت سرور فایل اینونتوری تعریف شده است: اکنون که inventory file را پیکربندی کردهاید، همه چیزهایی را که برای آزمایش اتصال به هاست انسیبل موردنیاز است در اختیار دارید. پس از تنظیم فایل inventory برای سرورها، زمان آن رسیده است که بررسی کنید آیا انسیبل قادر به اتصال به این سرورها و اجرای دستورات از طریق SSH است یا خیر. برای این آموزش، ما از حساب روت اوبونتو استفاده خواهیم کرد؛ زیرا این حساب معمولاً تنها حسابی است که به طور پیشفرض در سرورهای جدید ایجاد شده در دسترس است. اگر هاستهای Ansible شما قبلاً یک کاربر sudo غیر روت دارند، پیشنهاد میکنیم، از آن حساب استفاده کنید. میتوانید از آرگومان از ماشین لوکال یا نود کنترل Ansible، دستور زیر را اجرا کنید: این دستور از ماژول پینگ داخلی انسیبل برای تست اتصال روی تمام نودها از inventory پیشفرض استفاده میکند و بهعنوان روت به هم متصل میشوند. ماژول پینگ این موارد را تست میکند: در نهایت باید خروجی زیر را مشاهده کنید: اگر اولین باری است که از طریق SSH به این سرورها متصل میشوید، از شما خواسته میشود که صحت هاستهایی را که از طریق Ansible به آنها وصل میشوید، تأیید کنید. برای تایید این اطلاعات کافی است عبارت هنگامی که یک پاسخ پس از تست و نصب انسیبل و تأیید این موضوع که نود کنترل انسیبل توانایی برقراری ارتباط با هاست را دارد، میتوانید دستورات ad-hoc و playbooks را در سرورهای خود اجرا کنید. هر دستوری که روی یک سرور راه دور از طریق SSH اجرا میکنید، میتواند با Ansible روی سرورهای مشخص شده در فایل اینونتوری اجرا شود. به عنوان مثال، میتوانید میزان استفاده از دیسک را در همه سرورها با به کار بردن دستور زیر بررسی کنید: دستور به عنوان مثال، در ادامه نحوه استفاده از ماژول همچنین میتوانید هنگام اجرای دستورات انسیبل، هاستهای جداگانه، گروهها و زیر گروهها را هدف قرار دهید. به عنوان مثال، میتوانید آپتایم هر هاست در گروه سرورها را با دستور زیر بررسی کنید: میتوانیم چندین هاست را با جدا کردن آنها با دو نقطه مشخص کنیم: در این مقاله آموزشی با مراحل نصب انسیبل آشنا شدیم. با استفاده از گامهای بالا میتوانید Ansible را نصب و یک فایل اینونتوری را برای اجرای دستورات ad-hoc از یک نود کنترل انسیبل تنظیم کنید. هنگامی که تأیید کردید که میتوانید زیرساخت خود را از یک ماشین کنترلکننده مرکزی Ansible متصل و کنترل نمایید، میتوانید هر دستور یا پلیبوک را که میخواهید روی آن هاست اجرا کنید.مراحل نصب انسیبل روی اوبونتو ۲۲.۰۴
مرحله اول: نصب انسیبل
sudo apt-add-repository ppa:ansible/ansible
ENTER
را فشار دهید.sudo apt update
sudo apt install ansible
مرحله دوم: نحوه تنظیم Inventory File
etc/ansible/hosts/
را با استفاده از ادیتور تکست انتخابی خود در نود کنترل انسیبل باز کنید:sudo nano /etc/ansible/hosts
etc/ansible/hosts
ایجاد میکند اما این امکان را به شما میدهد که inventory file را در هر مکانی که با نیازهای شما مطابقت دارد ایجاد کنید. در این حالت، باید مسیر فایل اینونتوری سفارشی خود را با پارامتر i-
هنگام اجرای دستورات Ansible و playbooks مشخص کنید. پیشنهاد میکنیم فایلهای اینونتوری هر پروژه را جدا کنید تا ریسک اجرای پلیبوکها روی گروه اشتباه سرورها را کاهش دهید.[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
را فشار دهید.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: {}
مرحله سوم: تست اتصال نصب انسیبل
u-
برای مشخص کردن یوزر سیستم راه دور استفاده کنید. زمانی که از این آرگومان استفاده نکنید، انسیبل سعی میکند به عنوان کاربر فعلی سیستم به نود کنترل متصل شود.ansible all -m ping -u root
آیا اعتبارنامه SSH معتبری دارید.
آیا هاستها میتوانند ماژولهای Ansible را با استفاده از پایتون اجرا کنند.Output
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
yes
را تایپ کنید و سپس کلید ENTER
را فشار دهید."pong"
را از یک هاست دریافت کردید، به این معناست که شما آماده اجرای دستورات Ansible و playbooks در آن سرور هستید.مرحله چهارم: اجرای دستورات Ad-Hoc (اختیاری)
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
جمعبندی