قسمت اول: انسیبل چیست ؟ نصب و راه انداری انسیبل (ansible)
قسمت دوم: مدیریت سرورها با دستورات Ad-Hoc Ansible
قسمت سوم: شروع کار با فایل inventory در Ansible
تصور کن مدیریت بهت یه وظیفه داده که باید برای گروهی از مشاوران امنیتی، دسترسی SSH و حسابهای کاربری ایجاد کنی. همچنین سرویس بررسیهای امنیتی باید روی همه سیستمها فعال بشه. اینجا قراره با کمک دستورات Ad-Hoc Ansible این کارها رو انجام بدیم.
کامند Ad-Hoc به معنی دستورات سریع و فوری هستند که بدون نیاز به نوشتن playbook، کارهای مدیریت سرورها رو میتونیم باهاش انجام بدیم. فرض کن میخوای سریعاً ی سرویس رو رو چند سرور چک یا نصب کنی، دستورات Ad-Hoc بهترین گزینه برای این کارها هستند. این دستورات برای وظایف ساده مانند اضافه کردن کاربران، تغییر مجوز فایلها، نصب پکیجها و اجرای سریع تغییرات روی تعداد زیادی سرور استفاده میشوند.
برای مثال، این دستور Ad-Hoc کاربر جدیدی به نام admin
را روی همه سرورهای گروه web
ایجاد میکند:
ansible web -m user -a "name=admin state=present"
اما وقتی کارهای پیچیدهتری داریم یا نیاز به اجرای چندین دستور پشت سر هم داریم، نوشتن یک 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 command میریم . تو این سناریو مدیریت ازت خواسته:
/home/$USER/.ssh/authorized_keys
قرار بگیرن.برای بررسی ارتباط هم از دستور زیر استفاده میکنیم.
ansible -m ping all -i inventory/hosts
خب تا اینجا ما امکان ارسال دستورات به سرور رو داریم و میریم قدم بعدی
توی قدم اول باید کاربر consultant و supervisor رو روی سرور ایجاد کنیم. که میتونیم با دستورات زیر این کار رو انجام بدیم.
ansible dbservers -b -m user -a "name=consultant" -i inventory/hosts.yml ansible dbservers -b -m user -a "name=supervisor" -i inventory/hosts.yml
این دستورات با استفاده از ماژولuser
کاربرهای جدید رو روی سرورهای dbservers
میسازن.
با دستورات زیر کلید برای هر کاربر ایجاد میکنیم
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 "path=/home/consultant/.ssh state=directory mode=0700 owner=consultant group=consultant" -i inventory/hosts.yml ansible dbservers -b -m file -a "path=/home/supervisor/.ssh state=directory mode=0700 owner=supervisor group=supervisor" -i inventory/hosts.yml
قدم بعدی قایل ها رو کپی میکنیم.
ansible dbservers -b -m copy -a "src=./keys/consultant/id_rsa.pub dest=/home/consultant/.ssh/authorized_keys mode=0600 owner=consultant group=consultant" -i inventory/hosts.yml ansible dbservers -b -m copy -a "src=./keys/supervisor/id_rsa.pub dest=/home/supervisor/.ssh/authorized_keys mode=0600 owner=supervisor group=supervisor" -i inventory/hosts.yml
الان میتونیم با دستور زیر بررسی کنیم آیا میتونیم بدون رمز عبور ssh بزنیم یا نه
ssh consultant@db1 -i keys/consultant/id_rsa
این دستورات اطمینان حاصل میکنن که کلیدهای عمومی برای هر کاربر در جای مناسب قرار بگیرن.
باید مطمئن بشیم که سرویس auditd
روی همه سیستمها نصب و فعال و در حال اجراست:
ansible all -b -m apt -a "name=auditd state=present update_cache=yes" -i inventory/hosts.yml ansible all -b -m service -a "name=auditd state=started enabled=yes" -i inventory/hosts.yml
این دستور با استفاده از ماژول service
، سرویس auditd
رو روی همه سرورها فعال میکنه.
تمام دستورات با موفقیت اجرا شدن و حالا حسابهای کاربری مشاوران ایجاد شدن، کلیدهای SSH به درستی در محل قرار گرفتن و سرویسهای امنیتی هم روی همه سرورها فعال هستن. این روش کار با Ansible بهت اجازه میده خیلی سریع و ساده مدیریت سیستمهای سروریت رو انجام بدی!
و در آخر این آدرس لینکدین و توئیتر من هست خوشحال میشم در ارتباط باشیم.
🪩 Follow Linkedin Hossein Jafari🪩
🕊 Twitter 🕊