خانه » Ansible را در لینوکس نصب و پیکربندی کنید
DevOPS آموزش

Ansible را در لینوکس نصب و پیکربندی کنید

این راهنمای گام به گام شما را در مراحل نصب و پیکربندی Ansible در لینوکس راهنمایی می کند. همچنین نحوه راه اندازی Ansible homelab در لینوکس را برای یادگیری اصول ansible توضیح می دهد.

۱. معرفی

Ansible یک ابزار اتوماسیون فناوری اطلاعات است که از طریق آن می توانید تعداد “N” وظایف را در محیط نرم افزار خود خودکار کنید. برای اینکه بدانید Ansible چیست و ویژگی های آن، راهنمای مقدمه ای بر Ansible من را مطالعه کنید.

بدیهی است که Ansible برای مدیریت پیکربندی در مقیاس بزرگ طراحی شده است. اگر هدف شما یادگیری و بازآفرینی سریع محیط است، پس در مسیر درستی هستید!

Ansible یک معماری بدون عامل است . یعنی هیچ عامل/فرآیند قابل تشخیصی روی گره های مدیریت شده اجرا نمی شود.

همانطور که قبلاً در مقاله مقدماتی Ansile اشاره کردم، دو نوع گره در ansible وجود دارد.

  • Node Master/Controller – سرور/ایستگاه کاری که ansible در آن نصب خواهد شد. از این گره، تمام playbookها و دستورات ansible را اجرا خواهید کرد.
  • گره های مدیریت شده – لیست میزبان هایی که با استفاده از ansible مدیریت می شوند.

لازم نیست تمام گره های مدیریت شده دارای نسخه یا نوع توزیع مشابه باشند. شما می توانید توزیع های مختلفی از لینوکس را به عنوان گره های مدیریت شده داشته باشید.

ارتباط بین کنترل کننده و گره های مدیریت شده با استفاده از احراز هویت مبتنی بر کلید ssh انجام می شود .

این راهنمای عملی به شما یاد می دهد که چگونه آزمایشگاه Ansible را در توزیع های لینوکس راه اندازی کنید.

توجه داشته باشید:

۱- شما نمی توانید از ویندوز به عنوان گره کنترل کننده استفاده کنید.

۲- امکان پیکربندی چندین گره کنترلر وجود دارد.

قبل از شروع کار با Ansible، اجازه دهید تصویر ذهنی از راه اندازی Ansible homelab خود را به شما نشان دهم.

۲. نمودار معماری برای آزمایشگاه ۳ گره

تصویر گرافیکی زیر به شما یک تصویر ذهنی از شکل ظاهری آزمایشگاهنشان می دهد.

راه اندازی خانه Ansible من

در این مثال آزمایشگاهی، من یک گره 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 را در گره های هدف کپی کنید

اکنون به گره مدیریت شده خود وارد شوید تا بررسی کنید که آیا احراز هویت مبتنی بر کلید به خوبی کار می کند یا خیر.

$ ssh username@hostname

اکنون نصب ansible کامل شده است. به عنوان گام بعدی، یک فایل inventory باید ایجاد شود و برخی از دستورات ansible بروی میزبان های مدیریت شده اجرا شود.

۳.۲.۲. تست پیکربندی Ansible

Ansible دو فایل مهم دارد که برای ارسال دستورات Adhoc یا playbook لازم است .

  1. Ansible.cfg: فایل پیکربندی ansible.
  2. 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 را بدهید.

فایل Inventory انسیبل

همه چیز تنظیم شده است تا کارهای ما را به توسط انسیبل اجرا شود!

مشابه "Hello world"برنامه در برنامه نویسی، ansible نیز یک ماژٰول به نام ping را به عنوان اولین فرمان برای بررسی اتصال بین کنترلر و گره های مدیریت شده دارد.

ماژول ping سعی می کند به گره های مدیریت شده دسترسی پیدا کند و بررسی کند که آیا مفسر پایتون برای استفاده و پاسخ موجود است یا خیر و در صورت وجود pong پاسخ می دهد.

$ ansible all -m ping

همچنین می توانید با استفاده از -i مانند زیر به صراحت فایل میزبان را مشخص کنید:

$ ansible all -m ping -i flag <path-to-host-file>
ماژول پینگ Ansible

حالا می توانید با هر ماژولی که می خواهید شروع کنید.

اگر می خواهید گره های کنترلر بیشتری اضافه کنید، تنها کاری که باید انجام دهید این است که کلید SSH را از گره کنترلر به گره جدید کپی کنید و نام یا IP آن را در فایل میزبان اضافه کنید.

نتیجه

در این راهنما، نحوه نصب و پیکربندی Ansible در لینوکس را مورد بحث قرار دادیم. ما همچنین به شما نشان داده‌ایم که چگونه به صورت دستی یک Ansible homelab با سه گره را راه‌اندازی کنید.

راه حل های خودکار دیگری مانند راه اندازی آزمایشگاه ansible با استفاده از Vagrant یا Docker وجود دارد . ما این موضوعات را در مقالات بعدی خود پوشش خواهیم داد.

Ansible یک موضوع گسترده است! ما فقط اصول اولیه Ansible را پوشش دادیم. برای اطلاعات بیشتر در مورد استفاده از Ansible، اسناد رسمی Ansible را بررسی کنید .

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم. هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

درباره نویسنده

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم.
هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

افزودن نظر

برای ارسال نظرات خود اینجا را کلیک کنید