این راهنمای گام به گام شما را در مراحل نصب و پیکربندی Ansible در لینوکس راهنمایی می کند. همچنین نحوه راه اندازی Ansible homelab در لینوکس را برای یادگیری اصول ansible توضیح می دهد.
۱. معرفی
Ansible یک ابزار اتوماسیون فناوری اطلاعات است که از طریق آن می توانید تعداد “N” وظایف را در محیط نرم افزار خود خودکار کنید. برای اینکه بدانید Ansible چیست و ویژگی های آن، راهنمای “مقدمه ای بر Ansible“ من را مطالعه کنید.
بدیهی است که Ansible برای مدیریت پیکربندی در مقیاس بزرگ طراحی شده است. اگر هدف شما یادگیری و بازآفرینی سریع محیط است، پس در مسیر درستی هستید!
Ansible یک معماری بدون عامل است . یعنی هیچ عامل/فرآیند قابل تشخیصی روی گره های مدیریت شده اجرا نمی شود.
همانطور که قبلاً در مقاله مقدماتی Ansile اشاره کردم، دو نوع گره در ansible وجود دارد.
- Node Master/Controller – سرور/ایستگاه کاری که ansible در آن نصب خواهد شد. از این گره، تمام playbookها و دستورات ansible را اجرا خواهید کرد.
- گره های مدیریت شده – لیست میزبان هایی که با استفاده از ansible مدیریت می شوند.
لازم نیست تمام گره های مدیریت شده دارای نسخه یا نوع توزیع مشابه باشند. شما می توانید توزیع های مختلفی از لینوکس را به عنوان گره های مدیریت شده داشته باشید.
ارتباط بین کنترل کننده و گره های مدیریت شده با استفاده از احراز هویت مبتنی بر کلید ssh انجام می شود .
این راهنمای عملی به شما یاد می دهد که چگونه آزمایشگاه Ansible را در توزیع های لینوکس راه اندازی کنید.
توجه داشته باشید:
۱- شما نمی توانید از ویندوز به عنوان گره کنترل کننده استفاده کنید.
۲- امکان پیکربندی چندین گره کنترلر وجود دارد.
قبل از شروع کار با Ansible، اجازه دهید تصویر ذهنی از راه اندازی Ansible homelab خود را به شما نشان دهم.
۲. نمودار معماری برای آزمایشگاه ۳ گره
تصویر گرافیکی زیر به شما یک تصویر ذهنی از شکل ظاهری آزمایشگاهنشان می دهد.
در این مثال آزمایشگاهی، من یک گره Controller را در اوبونتو ۲۰.۰۴ و ۲ گره مدیریت شده را در CentOS 8 و Ubuntu ۲۱.۰۴ تنظیم می کنم.
۳. Ansible را در لینوکس نصب و پیکربندی کنید
ابتدا نحوه راه اندازی گره مدیریت شده Ansible را در لینوکس خواهیم دید.
۳.۱. Ansible را در لینوکس نصب کنید
از آنجایی که Ansible با پایتون نوشته شده است، دستگاه لینوکس شما باید پایتون را نصب کرده باشد تا ansible کار کند.
خوشبختانه همه توزیعهای لینوکس با پایتون از پیش نصب شده ارائه میشوند. Ansible از Python 2.7 و Python 3.5 و نسخه های بالاتر پشتیبانی می کند.
برای بررسی اینکه چه نسخه ای از پایتون روی دستگاه شما نصب شده است، می توانید از دستورات زیر استفاده کنید. خروجی ممکن است بسته به نحوه تنظیم پایتون در توزیع شما متفاوت باشد.
$ which python python2 python3
/usr/bin/python2
/usr/bin/python3
نسخه پایتون را بررسی کنید:
$ python2 --version
Python 2.7.18rc1
$ python3 --version
Python 3.8.5
$ compgen -c python | grep -P '^python..\d'
python3.8
python3.8-config
python2.7
شما می توانید ansible را به دو صورت در لینوکس نصب کنید.
۱- با استفاده از مدیریت بسته سیستم عامل
۲- استفاده از PIP – مدیر بسته پایتون
۳.۱.۱. Ansible را با استفاده از سیستم بسته منیجر نصب کنید
ابتدا نحوه استفاده از مدیر بسته توزیع خود را برای نصب ansible خواهید دید. بر اساس توزیع لینوکس خود، دستورات زیر را اجرا کنید.
Ansible را در Arch Linux، EndeavourOS، Manjaro Linux نصب کنید:
$ sudo pacman -S ansible
دبیان:
ویرایش /etc/apt/sources.list
فایل:
$ sudo nano /etc/apt/sources.list
خط زیر را اضافه کنید:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
سپس دستورات زیر را اجرا کنید:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible
فدورا:
$ sudo dnf install ansible
CentOS، RHEL، AlmaLinux، Rocky Linux:
$ sudo dnf install epel-release
$ sudo dnf install ansible
اوبونتو و مشتقات آن:
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
ممکن است در مخازن توزیع شما نسخه قدیمی Ansible وجود داشته باشد. اگر می خواهید نسخه به روز شده Ansible را روی سیستم خود نصب کنید، می توانید از Pip ، مدیر بسته پایتون استفاده کنید.
۳.۱.۲. Ansible را با استفاده از Pip نصب کنید
ابتدا با اجرای دستورات زیر بررسی کنید که آیا PIP نصب شده است:
$ which pip pip3
/usr/bin/pip
/usr/bin/pip3
$ pip --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
اگر PIP نصب نشده است، دستورات زیر را برای نصب آن اجرا کنید.
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user
پس از نصب PIP، دستور زیر را برای نصب ansible اجرا کنید:
$ sudo python3 -m pip install ansible
با این کار آخرین نسخه Ansible نصب می شود.
شما همچنین می توانید یک نسخه خاص Ansible، به عنوان مثال ۲.۹، مانند زیر نصب کنید:
$ sudo python3 -m pip install 'ansible==2.9'
پس از نصب Ansible، دستور زیر را برای بررسی نسخه ansible اجرا کنید:
$ ansible --version
این دستور اطلاعاتی در مورد مکان فایل میزبان، فایل پیکربندی و فایل باینری ansible و نسخه نصب شده Ansible می دهد.
خروجی نمونه:
ansible 2.9.0
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/mahdi/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
۳.۲. Ansible را پیکربندی کنید
همانطور که قبلا گفته شد، Ansible با استفاده از پروتکل احراز هویت ssh با گره های مدیریت شده ارتباط برقرار می کند.
ما یک جفت کلید ssh ایجاد می کنیم و آنها را در تمام گره های مدیریت شده توزیع می کنیم. بنابراین هر زمان که یک فرمان ansible ارسال شود، با استفاده از این کلیدها با گره های مدیریت شده احراز هویت می شود.
3.2.1. جفت کلید SSH برای گره های مدیریت شده ایجاد کنید
یک کاربر جدید به نام ansible در هر دو گره کنترل کننده و مدیریت شده ایجاد کنید.
$ sudo useradd ansible ##create user
$ sudo passwd ansible ##set password for ansible user.
به عنوان کاربر ansible وارد شوید و جفت کلید ssh را با استفاده از دستورات ایجاد کنید:
$ su - ansible
$ ssh-keygen -t rsa
این دستور یک جفت کلید SSH تولید می کند.
اکنون کلید عمومی را در تمام گره های مدیریت شده توزیع کنید.
می توانید از دستور ssh-copy-id
برای کپی کردن کلید عمومی در گره هدف استفاده کنید.
برای کپی کردن کلید عمومی در گره هدف با دستور ssh-copy-id، اجرا کنید:
$ ssh-copy-id -i ~/.ssh/id_rsa ansible@host-name
اگر گره های بیشتری دارید، از for loop
برای کپی کردن کلید ssh در تمام گره های هدف استفاده کنید.
من ۲ گره مدیریت شده دارم و نام آنها را centos1 (centos8) و ubuntu1 (ubuntu 20.04) گذاشتم. برای کپی کردن کلید در هر دو گره از کد زیر استفاده کردم:
$ for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa ansible@${node} done
اکنون به گره مدیریت شده خود وارد شوید تا بررسی کنید که آیا احراز هویت مبتنی بر کلید به خوبی کار می کند یا خیر.
$ ssh username@hostname
اکنون نصب ansible کامل شده است. به عنوان گام بعدی، یک فایل inventory باید ایجاد شود و برخی از دستورات ansible بروی میزبان های مدیریت شده اجرا شود.
۳.۲.۲. تست پیکربندی Ansible
Ansible دو فایل مهم دارد که برای ارسال دستورات Adhoc یا playbook لازم است .
Ansible.cfg
: فایل پیکربندی ansible.Hosts
: فایل inventory که در آن جزئیات میزبان ارائه شده است.
خوب، در یک مقاله جداگانه در مورد فایل های پیکربندی و inventory بیشتر بحث می کنیم. در حال حاضر برای اجرای اولین دستور ansible، فقط باید نام میزبان گره مدیریت شده خود را در فایل موجودی اضافه کنید.
فایل پیکربندی Ansible در فایل /etc/ansible/ansible.cfg
قرار دارد. شما همچنین می توانید این جزئیات را با اجرای دستور ansible version
بدست آورید:
$ ansible --version
ansible 2.9.0
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/karthick/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
فایل ansible.cfg را باز کنید و به دنبال پارامتر inventory بگردید. این پارامتر در طول زمان اجرا توسط ansible برای دریافت مسیر فایل inventory مورد استفاده قرار می گیرد.
$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg
#inventory = /etc/ansible/hosts
inventory به طور پیش فرض به فایل/etc/ansible/hosts
اشاره می کند. فایل hosts را باز کنید و نام میزبان گره مدیریت شده ی آدرس IP آنها را اضافه کنید.
من یک نگاشت DNS به IP دارم، بنابراین نام dns را در فایل hosts داده ام. همچنین می توانید آدرس IP را بدهید.
همه چیز تنظیم شده است تا کارهای ما را به توسط انسیبل اجرا شود!
مشابه "Hello world"
برنامه در برنامه نویسی، ansible نیز یک ماژٰول به نام ping
را به عنوان اولین فرمان برای بررسی اتصال بین کنترلر و گره های مدیریت شده دارد.
ماژول ping
سعی می کند به گره های مدیریت شده دسترسی پیدا کند و بررسی کند که آیا مفسر پایتون برای استفاده و پاسخ موجود است یا خیر و در صورت وجود pong
پاسخ می دهد.
$ ansible all -m ping
همچنین می توانید با استفاده از -i
مانند زیر به صراحت فایل میزبان را مشخص کنید:
$ ansible all -m ping -i flag <path-to-host-file>
حالا می توانید با هر ماژولی که می خواهید شروع کنید.
اگر می خواهید گره های کنترلر بیشتری اضافه کنید، تنها کاری که باید انجام دهید این است که کلید SSH را از گره کنترلر به گره جدید کپی کنید و نام یا IP آن را در فایل میزبان اضافه کنید.
نتیجه
در این راهنما، نحوه نصب و پیکربندی Ansible در لینوکس را مورد بحث قرار دادیم. ما همچنین به شما نشان دادهایم که چگونه به صورت دستی یک Ansible homelab با سه گره را راهاندازی کنید.
راه حل های خودکار دیگری مانند راه اندازی آزمایشگاه ansible با استفاده از Vagrant یا Docker وجود دارد . ما این موضوعات را در مقالات بعدی خود پوشش خواهیم داد.
Ansible یک موضوع گسترده است! ما فقط اصول اولیه Ansible را پوشش دادیم. برای اطلاعات بیشتر در مورد استفاده از Ansible، اسناد رسمی Ansible را بررسی کنید .
افزودن نظر