اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

آموزش نصب Ansible در لینوکس

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

    آموزش نصب Ansible در لینوکس

    انسیبل (Ansible) یک ابزار قدرتمند، اوپن سورس و بدون نیاز به Agent برای اتوماتیک سازی کارها، مدیریت و توسعه اپلیکیشن ها روی سرورها بدون هیچ گونه down time و با استفاده از SSH میباشد. امروز بیشتر ابزارهای اتوماسیون IT تحت یک Agent و در یک هاست ریموت اجرا میشوند اما انسیبل تنها نیاز به یک ارتباط SSH و نرم افزار Python 2.7 به بالا روی هاست های ریموت برای اجرای کردن عملیات های مورد نظر، دارد.


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


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



    آموزش ویدیویی نصب Ansible


















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

    ابزارهای اتوماسیون مشابه زیادی مانند Puppet, Capistrano, Chef, Salt, Space Walk و غیره وجود دارند اما انسیبل شامل یک ماشین کنترل کننده (Ansible Server) و ماشین های ریموت (Clients or Nodes) دسته بندی میشود.


    ماشین کنترل کنند جایست که Ansible نصب میشود و کلاینت ها توسط این ماشین از بستر SSH مدیریت میشود. موقعیت کلاینت ها توسط ماشین کنترل کننده (سرور انسیبل) و از طریق inventory آن مشخص میشود.


    سرور Ansible ماژول هایی مورد نظر را با استفاده از پروتکل SSH روی کلاینت ها اجرا میکند و این ماژول ها به صورت موقت روی کلاینت ها ذخیره میشوند و با سرور Ansible از طریق یک ارتباط SSH و از روی خروجی استاندارد ارتباط برقرار میکنند.


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







    Playbook در Ansible چیست و چه کاربردی دارد؟

    پلی بوک ها دسته ای از دستورات (تسک ها) هستند که میتوانند چندین کار را به صورت همزمان اجرا کنند و هر پلی بوک به فرمت فایل YAML میباشد.



    ما علاوه بر این بخش سه بخش زیر را با عنوان "آماده سازی برای دیپلوی زیر ساخت IT شما با ابزار اتوماسیون ansible" برای شما فراهم آوردیم.


    نحوه استفاده از playbook های ansible برای اتوماتیک کردن کارهای پیچیده روی چندین ماشین ریموت

    نحوه اتوماتیک کردن، deployment وردپرس به صورت همزمان روی چندین سرور لینوکسی با استفاده از ansible (به زودی)

    نحوه Encrypt کردن playbook ها و فایل های YAMEL جهت محافظت از آنها توسط Ansible-Vault (به زودی)





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

    سیستم عامل : RHEL/CentOS/Fedora و Ubuntu/Debian/Linux Mint و Rocky Linux
    Jinja2 : یک موتور جدید، سریع و آسان برای استفاده از template های ansible در python
    PyYAML : یک مفسر و ناشر YAML برای زبان برنامه نویسی پایتون
    parmiko : یک library داخلی پایتون برای چنل SSHv2
    httplib2 : یک کتابخانه HTTP client جامع
    sshpass : یک ابزار برای SSH کردن بدون پسورد




    پیش نیازهای سرور کنترل کننده (Ansible Server)

    برای سرور Ansible کننده (ماشینی که انسیبل روی آن اجرا میشود) شما میتوانید هر ماشینی را با نرم افزار Python 2 (ورژن 2.7) یا Python 3 (ورژن 3.5 و بالاتر) نصب کنید. اگر از ansible-core 2.11 و Ansible 4.0.0 استفاده کنید نیاز به Python 3.8 روی ماشین های ریموت دارید. انسیل ورژن 5 و ansible-core 2.12 به Python 3.8 یا جدیدتر نیاز خواهید داشت.



    پیش نیازهای سرورهای ریموت یا کلاینت

    اگر چه که شما نیاز به سرویسی رو هاست های ریموت ندارید اما نیاز به راهی دارید که سرور انسیبل با آنها ارتباط برقرار کند. برای اکثر ماشین های ریموت انسیبل یک ارتباط SSH برقرار میکند و ماژول هایی که میخواهد استفاده کند را با استفاده از SFTP انتقال میدهد. اگر SSH کار کند اما SFTP روی یکسری از ماشین ها در دسترس نباشد میتوانید در فایل تنظیمات ansible.cfg به SCP سوئیچ کنید. برای هر ماشین یا دیوایسی که بتواند پایتون را اجرا کند شما نیاز به پایتون 2.7 یا پایتون 3.5 به بالا دارید.




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

    نصب و راه اندازی Puppet در لینوکس برای اتوماتیک کردن تسک های مدیریتی IT

    دستور DSH برای اجرا کرد دستورات لینوکسی در چندین ماشین

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

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

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

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





    محیط آزمایشگاهی ما :


    مشخصات سرور Ansible
    کد PHP:
    Operating System :    Linux Debian 10
    IP Address     
    :    172.16.17.9
    Host
    -name     :    Debian-10
    User         
    :    linuxzone 




    مشخصات هاست های ریموت
    کد PHP:
    Node 1172.16.17.2
    Node 2
    172.16.17.3
    Node 3
    1172.16.17.10 




    مرحله 1 : نحوه نصب و راه اندازی سرور Ansible در Linux


    برای نصب انسیبل برای استفاده در ترمینال لینوکس به سادگی کافیست پکیج Ansible را روی یک ماشین (که حتی میتوان از یک لپ تاپ استفاده کرد) نصب کرد. شما نیاز نیست که دیتابیس نصب کنید یا هر سرویسی را اجرا کنید. Ansible میتواند یک تعداد زیادی از ماشین های ریموت را تنها از یک سرور کنترل کننده مدیریت کند.



    نصب Ansible روی Ubuntu

    در اینجا ما قصد داریم که از ریپازیتوری PPA رسمی Ansible در روی سیستم های اوبونتو برای نصب ansible استفاده کنیم. برای افزودن رپیازیتوری PPA روی سرورتان دستورات زیر را اجرا کنید.
    کد PHP:
    sudo apt update
    sudo apt install software-properties-common
    sudo add-apt-repository --yes --update ppa:ansible/ansible
    sudo apt install ansible 


    آموزش نصب ansible در ubuntu











    نکته : روی توزیع های قدیمی تر اوبونتو "software-properties-common" در حقیقت "python-software-properties" نام دارد. شما ممکن است در ورژن های قدیمی تر به جای apt از apt-get استفاده کنید. همچنین به خاطر داشته باشید که تنها در ورژن های جدید Ubuntu (ورژن 18.04 به بالا) آپشن -u یا --update موجود است.










    نصب Ansible روی Debian

    برای نصب انسیبل در دبیان دستورات زیر را به ترتیب جهت آپدیت ریپازیتوری ها و نصب ansible در debian اجرا کنید.
    کد PHP:
    sudo apt update
    sudo apt install ansible 


    آموزش نصب ansible روی debian
















    نصب Ansible روی RHEL/CentOS/Fedora و Rocky Linux/Alma Linux


    به صورت پیش فرض Ansible روی ریپازیتوری های ردهت وجود ندارد. برای نصب Ansible روی سنت او اس، آلما لینوکس یا راکی لینوکس نیاز هست که ابتدا ریپازیتوری EPEL را نصب، سپس با استفاده از دستور yum انسیبل را نصب کنید.



    روی CentOS و Rocky Linux / AlmaLinux :
    کد PHP:
    sudo yum install epel-release
    sudo yum install ansible 




    روی Fedora :
    کد PHP:
    sudo dnf install ansible 




    روی RHEL :
    کد PHP:
    sudo yum install ansible 


    آموزش نصب ansible روی centos












    پکیج های rpm برای RHEL7 و RHEL8 از طریق مخازن Ansible Engine در دسترس میباشد. برای فعال کردن مخزن Ansible Engine روی RHEL 8 دستور زیر را اجرا کنید :
    کد PHP:
    sudo subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms 



    برای فعال کردن مخزن Ansible Engine روی RHEL 7 دستور زیر را اجرا کنید :
    کد PHP:
    sudo subscription-manager repos --enable rhel-7-server-ansible-2.9-rpms 



    پکیج های rpm برای ورژن های قابل پشتیبانی موجود از RHEL و CentOS همچنین از طریق EPEL در دسترس است.



    نکته : از آنجایی که Ansible 2.10 در حال حاضر برای RHEL موجود نیست از Ansible 2.9 برای آن استفاده کنید.


    بعد از اینکه نصب با موفقیت تمام شد میتوانید ورژن ansible را با استفاده از دستور زیر بررسی کنید.
    کد PHP:
    # ansible --version 


    نحوه چک کردن ورژن انسیبل













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

    به منظور اجرا کردن هر گونه کارهای مدیریتی از روی سرور ansible به ماشین کلاینت ها، ابتدا ما نیاز به ایجاد و کپی SSH Key روی سرور انسیبل داریم که بتوانیم از سرور انسیبل به ماشین های ریموت مان بدون پسورد SSH کنیم.


    نکته مهم : ایجاد دسترسی بدون پسورد از Ansible Server به سمت هاست های ریموت مشکل امنیتی دارد که برای پوشش دادن این مشکل انسیبل، ansible-vault را ارائه داده که امنیت Ansible را در صورتیکه هرگونه نفوذی توسط هکرها به سرور شد باعث محفوظ ماندن انسیبل در برابر هر گونه خرابکاری از سمت هکر میشود. سعی میشود در مقالات بعدی این قضیه را هم پوشش بدیم که بتوانید امنیت سرور Ansible تان را برقرار کنید.


    در این سناریو، روی هر هاست ریموت یک اکانت کاربری linuxzone وجود دارد. (در سرور شما ممکن است این کاربر متفاوت باشد)


    ابتدا با استفاده از دستور زیر یک SSH Key جهت کپی در هاست های ریموت مان ایجاد میکنیم.
    کد PHP:
    ssh-keygen -t rsa -b 4096 


    آموزش نصب ansible در linux










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


    نحوه نصب و راه اندازی ansible روی لینوکس










    بعد از کپی کردن SSH Key ایجاد شده از روی سرور ansible به هاست ریموت، اکنون یک کانکشن SSH با کلاینت های ریموت میزنیم که بررسی کنیم کلیدها با موفقیت به هاست های ریموت کپی شده اند. زمانیکه از روی سرور انسیبل به سمت هاست های ریموت ssh میزنیم، بدون وارد کردن پسورد باید بتوانیم به سرورمان لاگین کنیم.
    کد PHP:
    ssh linuxzone@172.16.17.2
    ssh linuxzone@172.16.17.3
    ssh linuxzone@172.16.17.10 






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

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


    اکنون 3 هاست زیر را به فایل inventory اضافه میکنیم. فایل hosts را با استفاده از ویرایشگر مورد علاقه خود باز و ویرایش کنید. در اینجا من از vim استفاده میکنم.
    کد PHP:
    # sudo vim /etc/ansible/hosts 



    ip address هاست های ریموت خود را همانند زیر اضافه کنید. با توجه به اینکه انسیبل به صورت پیش فرض با یوزر root میخواهد به هاست های ریموت ssh کند در اینجا ما میتوانیم یوزری که میخواهیم انسیبل از طریق آن عمل لاگین را انجام دهد به صورت متغییر تعریف کنیم. (به جای linuxzone شما یوزری که با آن لاگین میکنید را وارد کنید. در صورتی که کلیدهایی که در بالا ایجاد کردید را با یوزر root کپی کردید در اینجا نیازی به تعریف ansible_ssh_user نمیباشد.)
    کد PHP:
    [webservers]
    172.16.17.2 ansible_ssh_user=linuxzone
    172.16.17.3 ansible_ssh_user
    =linuxzone
    172.16.17.10 ansible_ssh_user
    =linuxzone 


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











    نکته : عبارت webservers در براکت که همانند نام گروه ها مشخص شده است به منظور دسته بندی هاست ها و تصمیم گیری برای اینکه کدام سیستم ها را میخواهید در چه زمانی و به چه دلیلی کنترل کنید میباشد. مثلا اگر تعداد هاست دیتابیس دارید میتوانید در اینجا یه گروه به نام DatabaseHosts ایجاد کنید و آدرس هاست های دیتابیس تان را در زیرش همانند بالا وارد کنید.



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

    OR

    # ansible -m ping -all 


    نحوه ping گرفتن از هاست ها در nasible











    در مثال بالا ما ماژول ping به همراه دستور ansible برای ping کردن همه هاست های ریموت در یک لحظه استفاده کردیم. در صورتیکه شما در فایل inventory hosts انسیبل تان تعدادی گروه دارید میتوانید با استفاده از آپشن -all همه هاست ها را پینگ بگیرید ولی اگر میخواهید پینگ هاست های یک گروه را فقط بگیرید نام گروه را به جای -all وارد کنید. به شیوه یکسانی ماژول های گوناگونی را میتوان با ansible استفاده کرد، شما میتوانید ماژول های موجود را از سایت رسمی ansible پیدا کنید.





    نکته : اگر شما روی ماشین های ریموت از SELINUX استفاده میکنید باید libselinux-python را روی آنها قبل از هر گونه عملیاتی مانند copy/file/template نصب کنید. شما میتوانید برای نصب این پکیج ها روی سیستم های ریموت از ماژول yum یا ماژول dnf استفاده کنید.


    همچنین برخی ماژول های انسیبل برای اجرا شدن روی هاست های ریموت نیاز هست که حتما روی هاست ریموت Python v 2.7 به بالا نصب باشد. در صورتیکه پایتون 2.7 به بالا نصب نیست میتوانید از ماژول raw استفاده کنید که نیازی به پایتون ندارد و میتوانید با این ماژول روی هاست های ریموت پایتون را نصب کنید. به طور مثال اگر شما نیاز داشته باشید که پایتون ورژن 2 را درون یک سیستم ردهت بیس نصب کنید شما میتوانید آنرا با دستور زیر نصب کنید.
    کد PHP:
    ansible myhost --become -m raw -"yum install -y python2" 

    ماژول raw را برای تجهیزاتی تحت شبکه که روی آنها پایتون نصب نمیشود هم میتوان استفاده کرد.



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


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


    بررسی فضای هارد دیسک توسط ansible











    b - بررسی میزان استفاده از memory روی همه هاست های ریموت :
    کد PHP:
    # ansible -m command -a "free -mt" webservers 


    چک کردن مموری در ansible












    c - بررسی uptime برای هر 3 سرور :
    کد PHP:
    # ansible -m command -a "uptime" webservers 


    بررسی uptime هاست ها در انسیبل











    d - بررسی hostname و معماری سیستم عامل :
    کد PHP:
    # ansible -m command -a "arch" webservers
    # ansible -m shell -a "hostname" webservers 


    بررسی hostname و معماری سیستم عامل در ansible












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



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


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

    دستورات cron job و crontab در لینوکس به همراه 11 مثال برای زمان بندی کارها





    خلاصه

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



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

    تا آموزش انسیبل بعدی با ما همراه بمانید و فراموش نکنید که نظرات خودتان را درباه ansible با ما به اشتراک بگذارید همچنین در صورت استفاده از هر گونه ابزار اتوماسیون دیگری که از ansible قدرتمند تر است آنرا به ما معرفی کنید.​
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 09-03-2021, 12:25 AM.

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

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

شبکه های اجتماعی
در حال انجام ...
X