حسین جعفری
حسین جعفری
خواندن ۴ دقیقه·۳ ماه پیش

قسمت دوم: مدیریت سرورها با دستورات Ad-Hoc Ansible

قسمت اول: انسیبل چیست ؟ نصب و راه انداری انسیبل (ansible)

قسمت دوم:‌ مدیریت سرورها با دستورات Ad-Hoc Ansible

قسمت سوم: شروع کار با فایل inventory در Ansible

مقدمه

تصور کن مدیریت بهت یه وظیفه داده که باید برای گروهی از مشاوران امنیتی، دسترسی SSH و حساب‌های کاربری ایجاد کنی. همچنین سرویس بررسی‌های امنیتی باید روی همه سیستم‌ها فعال بشه. اینجا قراره با کمک دستورات Ad-Hoc Ansible این کارها رو انجام بدیم.

دستورات Ad-Hoc در Ansible

‏کامند Ad-Hoc به معنی دستورات سریع و فوری هستند که بدون نیاز به نوشتن playbook، کارهای مدیریت سرورها رو میتونیم باهاش انجام بدیم. فرض کن می‌خوای سریعاً ی سرویس رو رو چند سرور چک یا نصب کنی، دستورات Ad-Hoc بهترین گزینه برای این کارها هستند. این دستورات برای وظایف ساده مانند اضافه کردن کاربران، تغییر مجوز فایل‌ها، نصب پکیج‌ها و اجرای سریع تغییرات روی تعداد زیادی سرور استفاده می‌شوند.

برای مثال، این دستور Ad-Hoc کاربر جدیدی به نام admin را روی همه سرورهای گروه web ایجاد می‌کند:

ansible web -m user -a &quotname=admin state=present&quot

کامند Playbook در Ansible

اما وقتی کارهای پیچیده‌تری داریم یا نیاز به اجرای چندین دستور پشت سر هم داریم، نوشتن یک Playbook منطقی‌تر است. Playbook به نوعی یک "برنامه" در انسیبل است که شامل چندین وظیفه (task) است که به ترتیب اجرا می‌شوند. Playbook ها را می‌توان برای اجرای فرآیندهای پیچیده‌تر استفاده کرد.

یک مثال ساده از یک Playbook برای نصب httpd روی گروهی از سرورها:

--- - hosts: web become: yes tasks: - name: install httpd yum: name: httpd state: present - name: enable and restart httpd service: name: httpd state: started enabled: yes

تو این Playbook ابتدا پکیج httpd نصب میشه و سپس سرویسش راه‌اندازی و فعال می‌شود.

تفاوت بین دستورات Ad-Hoc و Playbook‌ها

  • کامند ‏Ad-Hoc برای دستورات سریع و فوری استفاده می‌شود، مانند نصب یک پکیج روی چند سرور.
  • ‏کامند Playbook زمانی کاربرد دارد که کارهای پیچیده‌تر و با ترتیب مشخص انجام شود.

در نتیجه، هر دو روش ابزارهای قدرتمندی هستند که با توجه به نیازهای مختلف میتونیم از آن‌ها استفاده کرد.

سناریو

خب تو این قسمت سراغ دستورات ad-hoc command میریم . تو این سناریو مدیریت ازت خواسته:

  1. ایجاد کاربران مشاور و ناظر: باید کاربرهای جدیدی به اسم consultant و supervisor رو روی سرور ایجاد کنیم
  2. قرار دادن کلید‌های SSH: کلیدهای عمومی باید توی مسیر /home/$USER/.ssh/authorized_keys قرار بگیرن.
  3. فعال‌سازی سرویس auditd: این سرویس که برای بررسی‌های امنیتی استفاده میشه، باید روی همه سرورها فعال بشه.

پیش نیاز ها

  • سرور برای اجرای دستورات و ایجاد کاربر با دسترسی sudo تا امکان اجرای دستورات رو داشته باشه تو این سناریو من یوزر ansiuble رو ساختم

قدم به قدم اجرا با Ansible

1. قدم اول ساخت فایل inventory و بررسی ارتباط با سرور از طریق ماژول ping

برای بررسی ارتباط هم از دستور زیر استفاده میکنیم.

ansible -m ping all -i inventory/hosts

خب تا اینجا ما امکان ارسال دستورات به سرور رو داریم و میریم قدم بعدی

‏‏2. ایجاد حساب‌های کاربری

توی قدم اول باید کاربر consultant و supervisor رو روی سرور ایجاد کنیم. که میتونیم با دستورات زیر این کار رو انجام بدیم.

ansible dbservers -b -m user -a &quotname=consultant&quot -i inventory/hosts.yml ansible dbservers -b -m user -a &quotname=supervisor&quot -i inventory/hosts.yml

این دستورات با استفاده از ماژولuser کاربرهای جدید رو روی سرورهای dbservers می‌سازن.

ساخت یوزر consultant
ساخت یوزر consultant
ساخت کاربر supervisor
ساخت کاربر supervisor

‏3. ساخت و قراردادن کلید‌های SSH

با دستورات زیر کلید برای هر کاربر ایجاد میکنیم

ssh-keygen -t rsa -b 2048 -f keys/consultant/id_rsa -N '' ssh-keygen -t rsa -b 2048 -f keys/supervisor/id_rsa -N ''


حالا باید دایرکتوری SSH برای کاربران ایجاد بشه و کلید‌های عمومی اون‌ها کپی بشه. دستورات زیر به ترتیب این کارها رو انجام میده. خب توی قدم بعدی باید بیایم و توی مسیر مناسب برای هر یوزر public key هر کاربری رو کپی کنیم.

ansible dbservers -b -m file -a &quotpath=/home/consultant/.ssh state=directory mode=0700 owner=consultant group=consultant&quot -i inventory/hosts.yml ansible dbservers -b -m file -a &quotpath=/home/supervisor/.ssh state=directory mode=0700 owner=supervisor group=supervisor&quot -i inventory/hosts.yml

قدم بعدی قایل ها رو کپی میکنیم.

ansible dbservers -b -m copy -a &quotsrc=./keys/consultant/id_rsa.pub dest=/home/consultant/.ssh/authorized_keys mode=0600 owner=consultant group=consultant&quot -i inventory/hosts.yml ansible dbservers -b -m copy -a &quotsrc=./keys/supervisor/id_rsa.pub dest=/home/supervisor/.ssh/authorized_keys mode=0600 owner=supervisor group=supervisor&quot -i inventory/hosts.yml

الان میتونیم با دستور زیر بررسی کنیم آیا میتونیم بدون رمز عبور ssh بزنیم یا نه

ssh consultant@db1 -i keys/consultant/id_rsa

این دستورات اطمینان حاصل می‌کنن که کلید‌های عمومی برای هر کاربر در جای مناسب قرار بگیرن.

‏‏4. فعال‌سازی سرویس auditd

باید مطمئن بشیم که سرویس auditd روی همه سیستم‌ها نصب و فعال و در حال اجراست:

ansible all -b -m apt -a &quotname=auditd state=present update_cache=yes&quot -i inventory/hosts.yml ansible all -b -m service -a &quotname=auditd state=started enabled=yes&quot -i inventory/hosts.yml

این دستور با استفاده از ماژول service، سرویس auditd رو روی همه سرورها فعال می‌کنه.

نتیجه‌گیری

تمام دستورات با موفقیت اجرا شدن و حالا حساب‌های کاربری مشاوران ایجاد شدن، کلیدهای SSH به درستی در محل قرار گرفتن و سرویس‌های امنیتی هم روی همه سرورها فعال هستن. این روش کار با Ansible بهت اجازه می‌ده خیلی سریع و ساده مدیریت سیستم‌های سروریت رو انجام بدی!


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

🪩 Follow Linkedin Hossein Jafari🪩

🕊 Twitter 🕊

انسیبلدوآپس
شاید از این پست‌ها خوشتان بیاید