برای نصب نیاز به یکی از سیستم عامل های :
- CentOS
- Free BSD
- Ubuntu
- MAC OS
- Debian
نصب Ansible روی هر دو سرور Ubuntu و CentOS نمایش داده شده ولی مابقی مراحل روی سرور CentOS انجام می گردد.
نصب برروی CentOS
قمد اول نصب repository است :
sudo yum install epel-release
sudo yum install ansible
بعد از این مرحله دستور زیر رو اجرا کنید که از ورژن نصب شده مطمئن بشین
ansible --version
نصب برروی Ubuntu 18
sudo apt-get install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt-get install ansible
ansible –version
مفهوم Control Node : هر دستگاهی که روی آن Ansible نصب شده باشه یک Control Node ه ولی ویندوز نمیتونه یک Control Node باشه.
اما به سروری که مدیریت می شود Managed Host می گویند، و تمامی آنها در یک فایلی به نام Host Inventory روی Control Node تنظیم و نگهداری می گردد.
Syntax کامند ها
به طور کلی کامندهای Ansible به شکل زیر است
Ansible -m command -a “uptime” dev
در بالا با m- ماژول رو انتخاب می کنیم که در اینجا نام ماژول Command است ( انسیبل داری 1375 ماژول است)
همچنین uptime کامندی است که باید روی سرور اجرا شوأ
و در نهایت dev که گروهی از سرورهاست
مثلا، اگر بخواهیم یک کامند روی تعدای از دیتابیس سرورهامون اجرا بشه، مراحل کار به این صورته که :
- در ابتدا یک فایل Inventory شامل گروه های سرورها ساخته می شود، که همان Managed Host ها هستند. آدرس این فایل درون /etc/ansible/hosts هست .
- همانطور که در تصویر زیر اومده وب سرورها در یک گروه و دیتابیس سرور ها هم در گروهی دیگر آمده است
اما بهتره همیشه یه گروهی داشته باشیم که کل سرورهامون اونجاست بخاطر همین من یه گروه linuxgroup هم اضافه میکنم به گروه ها
اگر خواستیم لیست سرورهای هر گروه رو ببینیم با این کامند این کار رو انجام میدیم
ansible --list-hosts [name of group]
همچنین داخل این فایل می توانیم، مشخصات هاست، پورت مربوطه، نام کاربری که Ansible می خواهد با ان متصل شود را در مقابل هر Host قرار دهیم.
اگر خواستیم که یک رنج از ای پی را در Host Inventory ثبت کنیم بدین صورت این کار انجام می شود
مثلا برای اینکه تمام ای پی های بین رنج 192.168.4.0 تا 192.168.7.255 اعمال شود بدین صورت وارد می شود
192.168.[4:7].[0:2455]
یا همینطور برای نام سرورها مثلا برای سرورهای بین 10 تا 20 :
vm-[10:20].vmehrabi.com
نکاتی در فایل تنظیمات Ansible روی سرور
این تنظیمات رو روی سرور CentOS فعلا انجام نمی دهیم ولی برای اطلاعات خوب است بدانیم:
- به صورت پیش فرض فایل کانفیگ در /etc/ansible/ansible.cfg موجود است
- اگر خواستیم یوزری وصل می شود با مجوز یوزر root متصل شود در فایل تنظیمات قسمت [privilege_escalation] یک ورودی با نام become=True قرار می دهیم.
- برای اینکه اپشن قبلی انجام شود یک کامند لازم است که با ورودی become_method = sudo به ان معرفی میکنیم.
- سپس یوزری که باید با آن به مجوز روت برسد را معرفی میکنیم become_user =root
- اگر خواستیم که پسورد را در هنگام گرفتن این مجوز بپرسد این ورودی را وارد می کنیم become_ask_pass= True
تنظیمات روی سرور Ansible
سپس روی این سرور یک یوزر با نام ansuser می سازیم
نکته : اسم سرور رو به ansible-srv-1 تغییر دادم تا کنسول ها بهتر شناسایی بشه
تنظیمات روی Managed Host ها
- معمولا روی Managed هاست ها اگرلازم باشه با ماژول های مختلفی کار کنیم باید Python رو روی اونها هم نصب کنیم
- اول از هر چیزی باید یک یوزر روی Managed Host ها ساخته بشه که در اینجا من نام یوزر رو ansuser میزارم
- بعد از ساخته شدن این فرمان passwd ansuser رو میزنم تا یک پسورد براش تعریف کنم.
- بعد از این مرحله یک فولدر داخل Homefolder یوزری که ساختم درست میکنم برای اینکار اول از هر چیزی با اون یوزر وارد میشم . منظور از هوم فولدر /home/ansuser است.
su - ansuser
- و سپس مطابق شکل یک فولدر میسازم و بهش دسترسی می دم
mkdir /home/ansuser/.ssh
chmod 700 /home/ansuser/.ssh/
روی تمامی کلاینت هایی که قراره Ansible اونهارو مدیریت کنه این عملیان رو انجام میدم.
تنظیمات روی سرور
- سپس با دستور زیر کلید عمومی و خصوصی را برای این یوزر روی سرور اینجاد می کنیم.
ssh-keygen
سپس به پوشه .ssh رفته
cd /home/ansuser/.ssh
حال publickey روی سرور رو روی تمامی کلاینت ها کپی میکنیم
scp -p id_rsa.pub db.vmehrabi.com:/home/ansuser/.ssh/authorized_keys
scp -p id_rsa.pub web.vmehrabi.com:/home/ansuser/.ssh/authorized_keys
برای سرور db هم به همین ترتیب:
اجرای چند کامند آزمایشی
برای اینکه از درستی تنظیمات مطمئن شویم این دستور را روی سرور اجرا میکنیم تا کامند uptime را روی سرورها اجرا کند
ansible -m command -a "uptime" hosts
همانطور که در شکل بالا می بینیم کامند برای این گروه ها اجرا شده است این گروه ها همان هایی هستند که در قسمت قبل در فایل /etc/ansible/hosts که فایل پیش فرض Host Inventory بود ذخیر شده بودند.
همچنین برای اینکه یک کامند روی تمامی سرورها اجرا شود می توان از گروه linuxgroup استفاده کرد:
ansible -m command -a "cat /etc/redhat-release" linuxgroup