اطلاعیه

بستن
No announcement yet.

نحوه نصب و راه اندازی Ansible در لینوکس (ابزار اتوماتیک کردن کارهای مدیریتی IT - بخش اول

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نحوه نصب و راه اندازی Ansible در لینوکس (ابزار اتوماتیک کردن کارهای مدیریتی IT - بخش اول

    Ansible یک نرم افزار قدرتمند و اوپن سورس لینوکسی (Debian/Ubuntu/Mint - RHEL/CentOS/Fedora) برای اتوماتیک کردن تسک های مدیریتی IT میباشد و به منظور کانفیگ، مدیریت و توسعه اپلیکیشن های نرم افزاری روی nod ها (کلاینت ها) بدون هیچ گونه وقفه ای و تنها با استفاده از SSH استفاده میشود. امروزه، بیشتر ابزارهای اتوماسیون IT تحت عنوان یک agent در هاست ریموت اجرا میشوند اما Ansible برای اینکه روی nod های ریموت (به منظور اجرا کردن عملیاتش) تنها به یک ارتباط SSH و پایتون (2.4 یا بالاتر) نیاز دارد.



    Ansible چگونه کار میکند ؟

    ابزارهای اتوماسیون مشابه بسیار زیادی همانند Puppet, Capistrano, Chef, Salt, Space Walk وجود دارند، اما ansible به 2 نوع سرور دسته بندی میشود :

    ماشین های کنترل کننده و Node ها (کلاینت ها) : ماشین کنترل کننده، همان سروری که Ansible روی آن نصب است و کلاینت ها توسط این ماشین از بستر SSH مدیریت میشوند. موقعیت node ها توسط این ماشین و از طریق تنظیمات آن مشخص میشوند.

    ماشین کنترل کننده (Ansible) ماژول ها را برای node ها را با استفاده از پروتکل SSH توسعه میدهد و این ماژول ها به صورت موقت روی node های ریموت ذخیره میشوند و از طریق یک ارتباط JSON از بستر standard output با ماشین ansible ارتباط برقرار میکنند.

    Ansible نیاز به حضور شخص ندارد، به این معنی که روی node های ریموت نیازی به شخص برای نصب و راه اندازی نیست، بنابراین زمانیکه این ابزار در حال کنترل هیچ node نباشد، سرویس یا برنامه بک گراندی برای ansible در حال اجرا نمیباشد.

    Ansible میتواند 100 ها node را از یک سیستم مجزا از بستر ارتباطی SSH کنترل کند و کل این عملیات میتواند تنها توسط یک دستور مجزای ansible کنترل و اجرا شود، اما در بعضی مواقع زمانیکه شما نیاز به اجرا کردن چندین دستور به منظور توسعه داشته باشید ما میتوانیم playbooks را فراهم آوریم.

    playbooks ها ترکیبی از دستورات هستند که میتوانند چندین تسک را اجرا کنند و هر playbook به فرمت YAML میباشد.



    کاربرد Ansible چیست ؟

    Ansible میتواند در ساختار IT به منظور مدیریت و توسعه اپلیکیشن های نرم افزاری روی node های ریموت مورد استفاده قرار گیرد. مثلا شما نیاز به توسعه یک نرم افزار مجزا یا چندین نرم افزار از 100 ها node و تنها توسط یک دستور مجزا این کار را انجام خواهید داد. در این چنین شرایطی Ansible به صحنه می آید و با کمک آن شما میتوانید به هر تعداد اپلیکیشنی که میخواهید به هر تعداد node و با تنها یک دستور مجزا درخواست ارسال کنید اما شما باید مقدار کمی دانش برنامه نویسی برای درک اسکریپت های Ansible داشته باشید.

    ما در اینجا یکسری آموزش از Ansible با عنوان "آماده سازی به منظور گسترش ساختار IT شما با ابزار اتوماسیون آی تی Ansible" فراهم آوردیم و آنها را در 4 پارت پوشش دادیم.


    بخش 1 : نحوه نصب و راه اندازی Ansible برای مدیریت IT در Linux

    بخش 2 : نحوه استفاده از Playbook های Ansible برای اتوماتیک کردن Task ها بر روی چندین سرور راه دور

    بخش 3 : نحوه اتوماتیک کردن تغییرات و Customize سازی WordPress به صورت همزمان روی چندین سرور Linux با استفاده از Ansible (به زودی)

    بخش 4 : مدیریت دیتای Encrypte شده ی YAMAL به همراه Ansible-Vault (به زودی)


    در این مقاله ما به شما نحوه نصب Ansible روی سیستم های RHEL/CentOS 7/6, Fedora 21-19, Ubuntu 14.10-13.04 و Debian 7/6 را آموزش خواهیم داد، همچنین با بیان نحوه مدیریت یک سرور از طریق نصب پکیج ها اعمال آپدیت ها و کمی پیشرفته تر، بحث را تا حدودی مفصل تر خواهیم کرد.



    تجهیزات مورد نیاز :

    سیستم عامل : RHEL/CentOS/Fedora و Ubuntu/Debian/Linux Mint

    Jinja2 : یک موتور جدید، سریع و آسان برای استفاده از templte های stand-alone در پایتون

    PyYAML : یک مفسر و ناشر YAML برای زبان برنامه نویسی پایتون

    parmiko : یک library داخلی پایتون برای چنل SSHv2

    httplib2 : یک کتابخانه HTTP client جامع

    sshpass : یک ابزار برای SSH کردن به نحوی که پسورد را در خود دستور وارد کنیم (SSH برای دریافت دستور به ما prompt ندهد).


    همچنین توصیه میشود مقالات زیر را هم مطالعه کنید :


    SSH کردن بدون پسورد در سرورهای لینوکسی

    عوض کردن Hostname (اسم هاست) در لینوکس

    اتوماتیک کردن کارها/تسک ها در Linux با استفاده از Shell Script


    محیط تنظیماتی ما :

    ماشین کنترل کننده - Ansible
    کد PHP:
    Operating System :    Linux Debian 9
    IP Address     
    :    192.168.10.242
    Host
    -name     :    linux-zone
    User         
    :    mohammad 

    کلاینت های Remote
    کد PHP:
    Node 1192.168.10.238
    Node 2
    192.168.10.240
    Node 3
    192.168.10.248 

    مرحله 1 : نصب ماشین Ansible

    1 - قبل از نصب Ansible روی سرور، ابتدا اجازه دهید که جزئیات سرور مانند hostname و ip address را بررسی کنیم. با کاربر root به سیستم login کنید، دستور زیر را برای تایید تنظیمات سیستمی که برای هدف بالا مورد استفاده قرار میدهیم اجرا کنید.
    کد PHP:
    # ip addr show | grep inet 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Verify-System-Details-1.png
نمایش ها:	1
اندازه:	6.5 KB
شناسه:	22271


    2 - به محض اینکه از تنظیمات سیستم مطمئن شدید نوبت به نصب نرم افزار Ansible روی سرور می رسد.



    در سیستم های Ubuntu/Debian/Linux Mint

    در اینجا ما قصد داریم که از ریپازیتوری PPA رسمی Ansible در روی سیستم های اوبونتو و مینت استفاده کنیم.

    در سیستم عامل های Debian فایل sources.list را از مسیر زیر باز کنید.
    کد PHP:
    sudo vim /etc/apt/sources.list 
    سپس ریپازیتوری زیر را اضافه و تغییرات را ذخیره کنید.
    کد PHP:
    deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main 
    سپس دستورات زیر را به جهت آپدیت ریپازیتوری ها و دانلود ansible اجرا کنید.
    کد PHP:
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
    sudo apt-get update
    sudo apt-get install ansible 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Add-Ansible-PPA3-2.png
نمایش ها:	1
اندازه:	9.5 KB
شناسه:	22272

    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Install-Ansible-in-Ubuntu-3.png
نمایش ها:	1
اندازه:	28.7 KB
شناسه:	22273


    در سیستم عامل های Ubuntu و Mint از دستورات زیر برای اضافه کردن ریپازیتوری PPA رسمی ansible به سیستم تان استفاده کنید.
    کد PHP:
    sudo apt-get install software-properties-common
    sudo apt-add-repository ppa:ansible/ansible -y
    sudo apt-get update && sudo apt-get install ansible -


    در سیستم های RHEL/CentOS/Fedora

    متاسفانه هیچ گونه ریپازیتوری رسمی برای Ansible روی RedHat وجود ندارد اما ما میتوانیم آنرا از طریق فعال کردن ریپازیتوری EPEL در RedHat/CentOS 6-7 و همچنین توزیع های پشتیبانی شده Fedora نصب کنیم.

    کاربران فدورا میتوانند Ansible را مستقیما از طریق ریپازیتوری پیش فرض نصب کنند اما اگر شما RedHat/CentOS 6-7 دارید باید ریپازیتوری EPEL را فعال کنید.

    بعد از کانفیگ ریپازیتوری EPEL شما میتوانید Ansible را با استفاده از دستور زیر نصب کنید.
    کد PHP:
    sudo yum install ansible -
    بعد از اینکه نصب با موفقیت تمام شد میتوانید ورژن آن را با استفاده از دستور زیر بررسی کنید.
    کد PHP:
    # ansible --version 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Verify-Ansible-Version-4.png
نمایش ها:	1
اندازه:	8.8 KB
شناسه:	22274



    مرحله 2 : ایجاد/ساختن SSH Key ها برای Host های Remote

    4 - به منظور اجرا کردن هر گونه توسعه یا انجام کارهای مدیریتی از سرور ansible به ماشین کلاینت ها، ابتدا ما نیاز به ایجاد و کپی SSH Key در هاست های ریموت داریم. در این سناریو، هر هاست ریموت یک اکانت کاربری linuxzone وجود دارد. (در سرور شما این کاربر متفاوت خواهد بود)

    ابتدا با استفاده از دستور زیر یک SSH Key ایجاد میکنیم و آنرا در هاست های ریموت کپی میکنیم.
    کد PHP:
    # ssh-keygen -t rsa -b 4096 -C "admin@linux-zone.org" 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Create-SSH-Key1-5.png
نمایش ها:	1
اندازه:	14.4 KB
شناسه:	22275


    5 - بعد از ایجاد با موفقیت SSH Key اکنون کلید ایجاد شده را به هر 3 سرور ریموت copy میکنیم.
    کد PHP:
    # ssh-copy-id linuxzone@192.168.10.238
    # ssh-copy-id linuxzone@192.168.10.240
    # ssh-copy-id linuxzone@192.168.10.248 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Copy-SSH-Key1-6.png
نمایش ها:	1
اندازه:	19.2 KB
شناسه:	22276

    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Copy-SSH-Keys1-7.png
نمایش ها:	1
اندازه:	31.8 KB
شناسه:	22277


    6 - بعد از کپی کردن همه SSH Key ها به هاست ریموت، اکنون روی همه هاست های ریموت برای بررسی اینکه آیا Authentication کار میکند یا خیر، یک کانکشن SSH با کلاینت های ریموت میزنیم.
    کد PHP:
    ssh linuxzone@192.168.10.238
    ssh linuxzone@192.168.10.240
    ssh linuxzone@192.168.10.248 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	SSH-Key-Authentication1-8.png
نمایش ها:	1
اندازه:	22.3 KB
شناسه:	22278



    مرحله 3 : ایجاد فایل فهرست برای هاست های ریموت

    فایل فهرست (Inventory) فایلی است که اطلاعات Host را در خود نگهداری میکند. اطلاعاتی مانند اینکه ما باید به کدام هاست ریموت از طریق سرور ansible وصل شویم. فایل فهرست پیش فرض در دایرکتوری /etc/ansible/hosts میباشد.

    7 - اکنون 3 هاست زیر را به فایل فهرست اضافه میکنیم. فایل را با استفاده از ویرایشگر مورد علاقه خود باز و ویرایش کنید. در اینجا من از vim استفاده میکنم.
    کد PHP:
    # sudo vim /etc/ansible/hosts 
    ip address و username سه هاست زیر را اضافه کنید.
    کد PHP:
    [web-servers]
    192.168.10.238 ansible_ssh_user=linuxzone
    192.168.10.240 ansible_ssh_user
    =linuxzone
    192.168.10.248 ansible_ssh_user
    =linuxzone 
    نکته : عبارت web-servers در براکت که همانند نام گروه ها مشخص شده است به منظور کلاس بندی سیستم ها و تصمیم گیری برای اینکه کدام سیستم ها را میخواهید در چه زمانی و به چه دلیلی کنترل کنید.

    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Create-Ansible-Inventory-File1-9.png
نمایش ها:	1
اندازه:	12.7 KB
شناسه:	22279


    8 - اکنون زمان بررسی 3 سرور با استفاده از ping از روی لوکال هاست مان میباشد. برای اجرای این منظور ما نیاز داریم که از دستور ansible به همراه آپشن -m (ماژول) و -all (گروه سرورها) استفاده کنیم.
    کد PHP:
    # ansible -m ping web-servers

    OR

    # ansible -m ping -all 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Ping-Remote-Hosts1-10.png
نمایش ها:	1
اندازه:	9.5 KB
شناسه:	22280


    در مثال بالا ما ماژول ping به همراه دستور ansible برای ping کردن همه هاست های ریموت در یک لحظه استفاده کردیم. به شیوه یکسانی ماژول های گوناگونی را میتوان با ansible استفاده کرد، شما میتوانید ماژول های موجود را از سایت رسمی ansible پیدا کنید.


    9 - اکنون ما از ماژول دیگر به نام command استفاده میکنیم که برای اجرا کردن لیستی از دستورات (like, df, free, uptim و ...) روی همه هاست های ریموت مورد نظر در یک لحظه مورد استفاده قرار میگیرد، برای مثال نمونه دستورات زیر را برسی نمایید.

    a - بررسی فضای مصرفی و آزاد پارتیشن ها روی همه هاست های ریموت :
    کد PHP:
    # ansible -m command -a "df -h" web-servers 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Check-Disk-Space-on-all-Hosts1-11.png
نمایش ها:	1
اندازه:	22.6 KB
شناسه:	22281


    b - بررسی میزان استفاده از memory روی همه هاست های ریموت :
    کد PHP:
    # ansible -m command -a "free -mt" web-servers 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Check-Memory-on-all-Hosts1-12.png
نمایش ها:	1
اندازه:	14.8 KB
شناسه:	22282


    c - بررسی uptime برای هر 3 سرور :
    کد PHP:
    # ansible -m command -a "uptime" web-servers 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Check-uptime-on-all-Hosts1-13.png
نمایش ها:	1
اندازه:	10.3 KB
شناسه:	22283


    d - بررسی hostname و معماری سیستم عامل :
    کد PHP:
    # ansible -m command -a "arch" web-servers
    # ansible -m shell -a "hostname" web-servers 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Check-hostname-on-all-Hosts1-14.png
نمایش ها:	1
اندازه:	13.6 KB
شناسه:	22284


    e - اگر نیاز داشته باشیم که خروجی را به یک فایلی ارسال کنیم، از دستور زیر استفاده میکنیم.
    کد PHP:
    # ansible -m command -a "df -h" web-servers > /tmp/df_output.txt 
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	Redirect-Output-to-File1-15.png
نمایش ها:	1
اندازه:	22.7 KB
شناسه:	22285


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


    خلاصه

    Ansible یک ابزار قدرتمند برای اتوماسیون IT میباشد که ضرورتی برای هر sysadmin و به منظور گسترش اپلیکیشن ها و مدیریت سرورها در یک لحظه میباشد. در میان هر ابزار اتوماسیون دیگری، همانند : puppet, capistrano, salt در حقیقت ansible بسیار جذابتر و برای نصب و راه اندازی در محیط های عملیاتی بسیار ساده تر است. من احساس میکنم که Capistrano باعث سردرگمی میشود.

    Ansible تنها از SSH به عنوان Agent استفاده میکند ما نباید هر ایجنتی را در سرورهای ریموت نصب و راه اندازی کنیم. امیدوارم این مقاله برای شما جالب بوده باشد. در مقاله بعدی ما به شما نحوه نصب معماری دایرکتوری برای گسترش ansible و ایجاد playbook ها و کار با آن را نمایش خواهیم داد.

    تا آموزش بعدی با ما همراه بمانید و فراموش نکنید که نظرات خودتان را روی ansible با ما به اشتراک بگذارید همچنین در صورت استفاده از هر گونه ابزار اتوماسیون دیگری که از ansible قدرتمند تر است آنرا به ما معرفی کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 11-27-2017, 10:59 PM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی

ایمیل مدیریت

Habili@linux-zone.org

در حال انجام ...
X