<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد جوادی - SMJ</title>
        <link>https://virgool.io/feed/@smj</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 02:51:55</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/71031/avatar/LxDt9Z.jpeg?height=120&amp;width=120</url>
            <title>محمد جوادی - SMJ</title>
            <link>https://virgool.io/@smj</link>
        </image>

                    <item>
                <title>چطور با گیت رفتار کنیم؟ (برنچ‌ها)</title>
                <link>https://virgool.io/@smj/%DA%86%D8%B7%D9%88%D8%B1-%D8%A8%D8%A7-%DA%AF%DB%8C%D8%AA-%D8%B1%D9%81%D8%AA%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-%D8%A8%D8%B1%D9%86%DA%86-%D9%87%D8%A7-frdemaxlt6gn</link>
                <description>سلام و روز بخیر خدمت شما همراهان هفتگی آموزش‌های پایه حوزه دواپس. این هفته هم در خدمت شما هستم با قسمت دوم آموزش گیت، سری‌ای که در آن قصد دارم تا یکدیگر یکی از مهم‌ترین ابزار‌های هر کسی که در صنعت تکنولوژی هست را با هم بررسی کرده و یاد بگیریم.در قسمت قبل با مفهوم گیت آشنا شده و دریافتیم که گیت چیست و چه کمک‌هایی به ما می‌کند، همچنین چگونگی نصب گیت و ساخت یک گیت ریپازیتوری‌ را هم در دسترس قرار دادیم؛ اما در این قسمت قصد داریم تا چگونگی کار کردن با گیت را یاد گرفته و شروع به استفاده از گیت کنیم.ریپازیتوری من در چه مرحله‌ای قرار دارد؟این موضوع اوقاتی که تازه شروع به کار روزانه می‌کنیم برای ما سوال می‌شود.این که دیروز چه کار‌هایی کردم، چه تغییراتی با تیم همسان نشده و در کدام قسمت پروژه در حال کار کردن هستم.جواب تمامی این سوالات با کامند زیر به شما داده می‌شود.# git statusاین دستور به شما این اجازه را می‌دهد تا فایل‌های تغییر کرده، فایل‌های اضافه شده، برنچی که بر روی آن کار می‌کنید و فایل‌های کامیت شده را مشاهده کرده و از اتفاقات گذشته خب باخبر شوید.چطور یک فایل را به ریپازیتوری گیت خودم اضافه کنم؟بعضی اوقات نیاز است تا یک فایل را به ریپازیتوری گیت خود اضافه کنید مثلا در هنگام برنامه نویسی نیاز به یک فایل جدید دارید.برای انجام این کار می‌توانید خیلی عادی یک فایل یا حتی ریپازیتوری داخلی جدید بسازی که برای هر کدام از این اتفاقات می‌توانید به ترتیب از دستورات زیر استفاده کنید:# touch FILE_NAME# mkdir DIRECTORY_NAMEدر ادامه جهت این موضوع که فایل‌ اضافه شده را به ریپازیتوری در حال بررسی گیت خود اضافه کنیم می‌توانیم از دو روش استفاده کنیم:اول راه این است که یک بار تمامی فایل‌های داخل دایرکتوری‌ای که در آن حضور داریم را به گیت ریپازیتوری با استفاده از دستور زیر اضافه کنیم:# git add .روش دوم این است که فایل هدف مورد نظر خود را با استفاده از دستور زیر به طور خاص به گیت ریپازیتوری اضافه کنیم:# git add FILE_PATHبا استفاده از دو دتسور بالا فایل شما به گیت ریپازیتوری اضافه شده و در قسمت استیجینگ یا تغییر وضعیت قرار خواهد گرفت و آماده جزی از پروژه شما شدن می‌شود.چطور فایل خود را از حالت تعیین وضعیت به قسمتی از گیت ریپازیتوری خود تغییر دهم؟به از اضافه کردن فایل به حالت استیجینگ حالا یک قدم به اضافه کردن فایل به پروژه خود نزدیک‌تر شدیم. در گیت بعد از اضافه کردن هر فایل یا ایجاد هر تغییر نیاز است تا یک توضیح درباره عمل انجام شده داده شود. این توضیح به دلیل مدیریت راحت تر پروژه در ادامه خواهد بود و در بازگشت دوباره جهت تصحیح دستورات و فایل‌های پروژه نیز کمک شایانی خواهد کرد.به ارائه توضیح یا دلیل اضافه شدن یا تغییر یک فایل در گیت کامیت کردن گفته می‌شود و فایل ها بعد از کامیت شدن به حالت commited در آمده و قسمتی از پروژه خواهند بود.جهت اضافه کردن کامیت به پروژه باید از دستور زیر استفاده کنیم:# git commit -m “TASK_DESCRIPTION”در دستور بالا به جای TASK_DESCRIPTION باید از توضیح مورد نظر خود برای این اتفاق در حال انجام استفاده کنید.در نظر داشته باشید که این توضیح نباید وابسته به زمان باشد، نباید خیلی پیچیده و غیر قابل فهم باشد، نباید زیاد طولانی باشد.این توضیحات همیشه در هر کمپانی یک سری قواعد داشته که در انجام هر کار به شما گفته می‌شود اما قواعد کلی همین موارد بالاست.تو این ریپازیتوری گیت چه گذشته؟در هنگام مدیریت سرویس قسمت مهمی که به ما کمک خواهد کرد تا توانایی تصمیم گیری درباره ادامه پروژه داشته باشیم اتفاقاتی است که تا کنون در گیت رخ داده.جدای بحث مدیریت نیز برنامه‌نویس‌ها جهت تصمیم گیری و حتی گزارش کارشان می‌توانند از این امکان در گیت استفاده کنند.جهت مشاهده تمام لاگ ها یا اتفاقات انجام شده در گیت می‌توانید از دستور زیر استفاده کنید:# git logاین دستور به شما اطلاعات زیادی درباره تاریخچه گیت ریپازیتوری و پروژه می‌دهد.این اطلاعات گیت هش شما، کسی که کامیت مورد نظر را قرار داده، زمان کامیت و متن کامیت را به شما نشان می‌دهد.در حالتی که می‌خواهید از این اطلاعات در یک خط بهره‌مند شوید یا در اسکریپتی از آن نتیجه‌ای حاصل کنید می‌توانید از دستور زیر جهت نمایش اطلاعات بالا در تنها یک خط استفاده کنید.# git log --oneline برنچ‌ها یا شاخه‌ها چیستند؟برنچ‌ها شاخه‌های مختلف یک برنامه می‌باشند؛ بدین معنا که مثلا یک پروژه یا همان گیت ریپازیتوری در ۳ حالت در دسترس قرار خواهد گرفت و هر سه حالت ممکن تبدیل به سه برنچ متفاوت خواهند شد. برنچ اصلی هر پروژه‌ای در حالت عادی master می‌باشد.مثلا فکر کنید به یک تیم، یک برنامه نویس جدید اضافه شده و علاقه به ساخت راه جدیدی در برنامه موجود از خود نشان می‌دهد.در این شرایط بدین جهت که تغییری در پروداکشن رخ ندهد می‌توانیم یک برنچ جدید برای برنامه نویس بسازیم تا جدای پروداکشن اصلی بتواند تغییرات مورد نظر خود را در برنچ خود ایجاد کرده و تغییرات را مشاهده کند.این اتفاق تاثیری بر روی پروژه نداشته و باعث افزایش سرعت و دقت توسعه نرم‌افزار خواهد شد. به این دلیل که بعد از تغییر در برنچ غیر اصلی در صورتی که تغییرات موفقیت آمیز بود می‌توانید برنچ غیر اصلی را با master مرج کرده یا یکی کنید و تغییرات را در برنچ اصلی داشته باشید.چطور یک برنچ جدید بسازیم و بین برنچ‌ها جا به جا شویم؟در حالت کلی برای این که بین یک برنچ و برنچ دیگر جا به جا شویم و حتی برنچ جدیدی بسازیم می‌توانیم از دستور زیر استفاده کنیم:# git checkout -b BRANCH_NAMEمثلا برای این که بین برنچ اصلی و برنچ خودمان به نام user-signup جا به جا شویم از دستور زیر استفاده می‌کنیم:# git checkout -b user-signupبرای این که موقعیت خودمان در داخل برنچ‌ها را مشاهده کنیم می‌توانیم از دستور زیر استفاده کنیم:# git branchخروجی این دستور تمامی برنچ‌های موجود بر روی آن ریپازیتوری می‌باشد و برنچ انتخاب شده نیز با یک علامت ستاره در سمت چپ آن معین می‌گردد.با هم کار کنیم.در نظر داشته باشید که برنامه‌نویس شماره ۱ شروع به توسعه یک قسمت از نرم افزار در برنچ خود می‌کند و کامیت ها و تمامی تغییرات آن بر روی برنچ خود انجام می‌شود. در این حالت برنچ مستر یک کامیت از برنچ برنامه نویس شماره ۱ عقب تر خواهد بود. حالا تیم بزرگ‌تر خواهد شد و یک برنامه نویس شماره۲ به تیم اضافه می‌گردد و شروع به کار بر روی قسمت دیگری از برنامه می‌کند.در نظر داشته باشید که در این حالت برنچ برنامه نویس شماره ۱، برنامه نویس شماره۲ و برنچ مستر نسبت به هم متفاوت خواهند بود.برای کار کردن با برنچ ها می‌توانید از دستورات مورد استفاده زیر استفاده کنید:برای ساخت یک برنچ جدید می‌توانید از دستور زیر استفاده کنید:# git branch NEW_BRANCH_NAMEاین دستور یک برنچ جدید برای شما خواهد ساخت.برای تغییر برنچ مورد استفاده می‌توانید از دستور زیر استفاده کنید:# git checkout TARGET_BRANCHاین دستور شما را به برنچ TARGET_BRANCH خواهد برد.برای ساخت یک برنچ جدید و تغییر فوری برنچ خود به آن شاخه از دستور زیر استفاده خواهیم کرد:# git checkout -b NEW_BRANCH_NAMEبرای حذف یک برنچ از دستور زیر استفاده می‌کنیم:# git checkout -d TARGET_BRANCHبرای پیدا کردن لیست تمامی برنچ‌های موجود در ریپازیتوری مورد نظر از دستور زیر استفاده خواهیم کرد:# git branchدر نظر داشته باشید که هر کامیتی در داخل هر برنچ انجام شود مختص به این برنج بوده و آخرین کامیت آن ثبت خواهد شد.به پایان این قسمت از آموزش گیت رسیدیم و در این مرحله مفاهیم کلی درباره چگونگی کار کردن و چیستی برنچ‌ها را در  داخل گیت را با یکدیگر بررسی کردیم.در ادامه این سری با شما خواهم بود تا بتوانیم کار حرفه‌ای با گیت را یاد گرفته و در پروژه‌های خود استفاده کنیم.با تشکر از تیم ابرآراز که زمان لازم برای ساخت و نشر این مقاله را به من داد.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Wed, 20 Oct 2021 16:06:26 +0330</pubDate>
            </item>
                    <item>
                <title>گیت چیست و چرا گیت؟</title>
                <link>https://virgool.io/@smj/%DA%AF%DB%8C%D8%AA-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D8%B1%D8%A7-%DA%AF%DB%8C%D8%AA-izl07qd0orc3</link>
                <description>سلام و روز بخیر خدمت همه شما همراهان عزیز؛ بعد از چند وقت با آموزش کاربردی دیگری در خدمت شما هستم.امروز اینجا هستیم تا درباره گیت یاد گرفته و بدونیم چطور می‌توانیم تسک‌های خود را مدیریت کرده و پروژه خود را ایمن نگه داریم.گیت چیست؟به طوری کلی گیت یه سرور کنترلر یا ابزار مدیریت پروژه‌های دیپلومنت هست که به ما کمک می‌کند راحت‌تر کار‌های دیپلویمنت خود را گسترش داده و مدیریت کنیم.گیت چه ابزار‌های مهمی به ما می‌دهد؟گیت به ما اجازه می‌دهد به صورت لوکال و ریموت به ریپازیتوری‌ها یا مخازن اطلاعات خود دسترسی داشته باشیم.امکان دیگر گیت که به ما بسیار در استفاده از آن کمک می‌کند اضافه کردن ورژن کنترل و برنچ‌های مختلف است که اجازه می‌دهد روند تغییر پروژه و استفاده‌های مختلف پروژه برای ما همیشه در دسترس باشد.چرا گیت؟فرض کنید یک لیندینگ پیج در یک سرور دارید و نیاز دارید تا تغییراتی در این لیندینگ پیج انجام دهید.ابتدا این تغییرات را داخل دستگاه لوکال خود مانند لپتاپ انجام داده و تست می‌کنید و سپس وارد سرور کرده و تغییرات را عینا آنجا انجام می‌دهید.حال در نظر داشته باشید که در این بین متوجه تغییر یک محتوا در داخل سرور و دستگاه لوکال خود می‌شوید مثلا یک غلط املایی؛ این دقیقا جاییست که گیت به کمک شما آمده و برای شما قابل استفاده می‌شود.گیت یک ابزار دنبال کننده محتوا بوده که تمامی تغییرات محتوایی در کد‌ها یا فایل‌های ما را در خود ذخیره می‌کند. در سمت دیگر این کار اتفاق، گیت با کنترل ورژن خود به شما این امکان را می‌دهد که هر نسخه مورد نظر از ریپازیتوری خود در هر زمان دسترسی داشته باشید.همچنین ابزار دیگری که توسط گیت برای ما قابل استفاده است توزیع پذیری آن است؛ توزیع پذیری بدین معنا که در صورتی که چند سرور در یک زمان یک کار را انجام دهند و چند نفر هم بر روی توسعه یک ریپازیتوری در حال کار باشند می‌توانند با استفاده از گیت محتوای خود را یکپارچه نگه داشته و با یکدیگر به راحتی کار کنند.انواع ریپازیتوری در گیتدر گیت دو نوع ریپازیتوری وجود دارد:ریپازیتوری لوکالریپازیتوری ریموتریپازیتوری لوکال فایلیست که در داخل دستگاه لوکال خود نگه میدارید و دسترسی بدون واسط به آن را خواهید داشت.اما ریپازیتوری ریموت یک ریپازیتوری در داخل سرور می‌باشد که مثلا وقتی یک سیو از پروژه در دستگاه لوکال انجام می‌دهیم، تغییر در داخل سرور نیز انجام خواهد شد. استفاده دیگر ریموت ریپازیتوری وقتیست که می‌خواهیم از فایل‌های خود یک بک‌آپ تهیه کرده یا با یک تیم بر روی یک ریپازیتوری کار کنیم. در این حالت هم تیمی شما می‌تواند ریموت ریپازیتوری را گرفته و در داخل سیستم لوکال خود به آن دسترسی داشته باشد. وقتی هم‌تیمی شما تغییری در ریپازیتوری می‌دهد می‌تواند تغییر خود را پوش کرده یا به ریموت ریپازیتوری اضافه کند و شما در هنگام کار این تغییرات را از ریموت ریپازیتوری دوباره دریافت کنید.لوکال ریپازیتوری:در حالت عادی لوکال ریپازیتوری ۳ قسمت دارد:Working area:Staging area:Committed files:کامیت چیست؟هر کاربر در هنگامی که می‌خواهد تغییری در ریپازیتوری انجام دهد باید یک توضیح درباره تغییر خود وارد کند.وقتی فایل در مرحله کامیت قرار می‌گیرد از قسمت working area خارج شده و وارد مرحله تعیین حالت یا staging area می‌شود.در ادامه وقتی فایل کامیت شد یا توضیح تغییر این فایل نوشته شد فایل در قسمت commited files قرار خواهد گرفت.چطور Git را نصب کنیم؟شما می‌توانید از سایت https://git-scm.com/ ورژن مورد نظر گیت خود را دانلود کرده و نصب کنید.مثلا برای نصب گیت در مک‌بوک‌ها می‌توانیم از کامند زیر استفاده کنیم:brew install gitو در توزیع لینوکس اوبونتو نیز می‌توانید از این دستور استفاده کنید:apt install git -yبرای این که از صحت نصب گیت خود مطمئن شوید لطفا دستور زیر را اجرا کرده تا ورژن نصب شده گیت خود را مشاهده کنید:git --versionمقداردهی اولیه یا ساخت اولیه یک گیت ریپازیتوری:با دستور زیر می‌توانید یک ریپازیتوری اولیه گیت را مقدار دهی کنید:git initاین دستور یک سری اعمال انجام داده تا داخل همان فولدری که هستید یک ریپازیتوری گیت ساخته شود.در صورتی که از کامند:ls -aاستفاده کنید می‌بینید که یک فایل به اسم:.gitساخته شده است. این فولدر حاوی اطلاعات لازم برای اتصال و استفاده از گیت است.به پایان این قسمت از آموزش گیت رسیدیم و در این مرحله مفاهیم ابتدایی و اتفاقا اولیه در داخل گیت را با یکدیگر مشاهده کردیم.در ادامه این سری با شما خواهم بود تا بتوانیم کار حرفه‌ای با گیت را یاد گرفته و در پروژه‌های خود استفاده کنیم.با تشکر از تیم ابرآراز که زمان لازم برای ساخت و نشر این مقاله را به من داد.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Thu, 30 Sep 2021 15:37:36 +0330</pubDate>
            </item>
                    <item>
                <title>انسیبل. برداشت آخر.</title>
                <link>https://virgool.io/@smj/%D8%A7%D9%86%D8%B3%DB%8C%D8%A8%D9%84-%D8%A8%D8%B1%D8%AF%D8%A7%D8%B4%D8%AA-%D8%A2%D8%AE%D8%B1-zezwpdmbfmcf</link>
                <description>سلام و خسته نباشید عرض می‌کنم خدمت همه شما دنبال‌کنندگان هفتگی سری مقالات آموزش انسیبلدر هفته‌ای که پیش رو داریم پیرو بحث هفته پیش که همان پلی بوک‌های انسیبل بود قرار است آموزش‌های جدیدی را با یکدیگر ببینیم.در قسمت اولی این سری مجموعه بحث درباره مخزن انسیبل شروع شد؛ جایی که سرور‌های هدف در آن تعریف شده و چگونگی دسته بندی و ارتباط با آن‌ها در این قسمت تعریف می‌شود.در قسمت دوم بر آن شدیم تا دید کلی‌ای درباره دستورات اولیه استفاده از انسیبل ببینیم و این موضوعات را مرور کنیم. استفاده از انسیبل در این قسمت در حد ابتدایی برای ما میسر شد.اما در قسمت سوم به شما ابزار معرفی کردیم و به اصطلاح ماژول‌های پرکاربرد و قابل استفاده انسیبل را به شما معرفی کردیم. شما با استفاده از این ماژول‌ها می‌توانیستید اعمال مختلفی را در سرور‌های هدف انجام دهید.در قسمت چهارم پا از استفاده روزانه از انسیبل فرا گذاشته و رو به استفاده از این ابزار قدرتمند به عنوان یک ابزار اتومیشن گذاشتیم و با یکدیگر بحث کردیم که چگونه می‌توانیم با استفاده از پلی‌بوک‌ها اقدامات روزانه‌ای یا دوره‌ای که در تمامی ‌سرور‌های مورد هدف خود باید انجام دهیم را به صورت اتومات انجام دهیم.در قسمت پنجم اما با انسیبل‌های مشروط آشنا شدیم و گفتیم که در چه حالاتی می‌توانیم شرط‌هایی برای انجام یا عدم انجام یک تسک در یک پلی‌بوک تعریف کنیم.در نهایت در قسمت ششم درباره حلقه‌های انسیبل بحث کردیم تا پلی‌بوک‌ها هدفمند‌تر داشته باشیم و استفاده راحت‌تری از تسک‌ها بکنیم.در این قسمت یا به عبارت دیگر آخرین قسمت از سری اول آموزش انسیبل (انسیبل مقدماتی) قصد بر این داریم تا درباره رول‌های انسیبل یا نقش‌های سرور‌های مختلف صحبت کنیم.انسیبل رول چیست؟بعد از هر اتفاقی که در انسیبل پلی‌بوک با توجهw به مقاله های گذشته انجام می‌دهیم ممکن است یک سری سرور یک سری اتفاقات واحد بر هر سرور از قبیل نصب و راه قبول MySQL و Nginx رخ دهد.جهت انجام این سری اتفاقات در سرور رخ دهد می‌توانیم به جای انجام یک سری تسک روتین بر روی هر سرور، یک رول تعریف کرده که مجموعه چندین تسک مشخص و روتین بوده و آن رول را به سرور‌های مورد نظر برسانیم.در حالت اولیه برای انجام این که یک سرور MySQL درست کنید این این قسمت را در انسیبل پلی بوک بنویسید:- name: Install and Configure MySQL  hosts: db-server  tasks:    - name: Install Pre-Req      yum: name=pre-req-packages state=present    - name: Install MySQL Packages      yum: name=mysql state=present    - name: Start MySQL Service      service: name=mysql state=started    - name: Configure Database      Mysql_db: name:db1 state=presentاما به جای این کار می‌توانیم قسمتی همچون قسمت زیر در فایل پلی‌بوک بسازیم:- name: Install and Configure MySQL  hosts: db-server  roles:    - mysqlو در قسمت دیگر یا فایل دیگری معروف به فایل رول این قسمت را بگذاریم:  tasks:    - name: Install Pre-Req      yum: name=pre-req-packages state=present    - name: Install MySQL Packages      yum: name=mysql state=present    - name: Start MySQL Service      service: name=mysql state=started    - name: Configure Database      Mysql_db: name:db1 state=presentدر پلی بوک‌های انسیبل می‌توانیم فایل‌ها و قسمت‌های مختلفی مانند tasks, vars, defaults, handlers و templates داشته باشیم و این موضوع این امکان را به ما ارائه می‌دهد که قسمت‌های مختلف انسیبل را راحت تر و سریع‌تر مدیریت کنیم.چرا از انسیبل رول استفاده کنیم؟دلیل کلی استفاده از انسیبل رول می‌تواند در سه مورد بحث شود.۱- سازمان‌دهی: وقتی تسک‌های انسیبل در قالب رول‌ها قرار گرفته و این رول‌ها در داخل پلی‌بوک ها استفاده می‌شوند به ما قابلیت سازماندهی و هدفمند‌تر کارکردن بسیار زیادی ارائه می‌کند به گونه‌ای که در ادامه بسیار استفاده و دوباره نویسی و بهبود انسیبل پلی‌بوک به ما کمک خواهد کرد.۲- استفاده دوباره:استفاده از انسیبل رول به ما این امکان را می‌دهد که در صورتی که از یک رول تعریف شده نیاز بود در هر تعداد پلی بوک استفاده شود صرفا با معرفی آن این مشکل حل شده و دیگر نیازی به ساخت این رول ها نمی‌باشد.به بیان ساده‌تر در صورتی که تسک‌های خود را به صورت رول بنویسیم، در ساخت انسیبل پلی‌بوک‌های بیشتر و بهتر نیازی به دوباره کاری نبوده و دوباره از رول‌های قدیمی ساخته شده استفاده می‌کنیم.۳- انتشار و اشتراک گذاری:در بند آینده با روشی آشنا خواهیم شد که کار‌ را برای ما به شدت آسوده‌تر کرده و به ما در استفاده از انسیبل کمک می‌کند.نوشتن رول‌های انسیبل به ما این امکان را می‌دهد تا با استفاده از انسیبل گلکسی یا حتی ارائه فایل‌ها به افراد دیگر رول‌های خود را با دیگران اشتراک گذاری کرده تا بقیه هم بتوانند از این رول‌ها استفاده کنند.چگونگی دریافت رول‌ها:در جامعه انسیبل بعد از چندین سال گسترش و تحقیق پلتفرم جامعه انسیبل تحت عنوان انسیبل گلکسی یا کهکشان انسیبل شروع به کار کرد.شما با مراجعه به این سایت می‌توانید با استفاده از گزینه‌های مختلف رول‌هایی که کاربران دیگر ساخته و در حال حاضر به شما ارائه کرده‌اند را مشاهده، دریافت و استفاده کنید.بدین صورت که بعد از ورود و انتخاب رول مورد نظر می‌توانید با دستور:ansible-galaxy init mysqlرول مورد نظر را به پروژه و پلی بوک خود اضافه کنید (در مثال بالا رول MySQL به مجموعه رول‌های داخل سرویس اضافه شد.)به منظور تحقیق و انجام جستجو برای رول مورد نظر خود نیز می‌توانید از دستور:ansible-galaxy search mysqlبه طور مثال برای یافتن تمام انسیبل رول‌های درباره mysql استفاده کنید.با دستور زیر نیز می‌توانید حاصل جستجو رول مورد نظر خود که در جستجو بالا پیدا شد را نصب کنید:ansible-galaxy install geerlingguy.mysqlبا استفاده از دستور زیر نیز می‌توانید لیستی از رول‌های نصب شده بر دستگاه خود را مشاهده کنید:ansible-galaxy listدر دستور زیر نیز می‌توانید قسمتی‌که تمامی رول‌ها در آن در دستگاه شما ذخیره می‌شوند را مشاهده کنید. (قسمت DEFAULT_ROLES_PATH می‌توانید مقصد را مشاهده کنید.)ansible-config dump | grep ROLEدستور آخر نیز مربوط به نصب یک انسیبل رول در یک مقصد انتخابی می‌باشد که می‌توانید با توجه به نیاز خود بعد از سوییچ p مسیر نهایی خود را انتخاب کنید:ansible-galaxy install geerlingguy.mysql -p ./rolesامیدوارم از بحث امروز لذت برده باشید و استفاده از انسیبل پلی‌بوک را به خوبی یاد‌گرفته باشید.این مقاله آخرین قسمت از سری مقالات انیسبل مقدماتی بوده و در حال آینده سری جدید انسیبل در خدمت شما خواهم بود. همچنین هر هفته در صورت امکان با مقالات جدید در ارتباط با شما خواهم بود.امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید می‌توانید با بنده در میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sun, 29 Aug 2021 19:15:45 +0430</pubDate>
            </item>
                    <item>
                <title>اتفاقات مشروط در انسیبل</title>
                <link>https://virgool.io/@smj/%D8%A7%D8%AA%D9%81%D8%A7%D9%82%D8%A7%D8%AA-%D9%85%D8%B4%D8%B1%D9%88%D8%B7-%D8%AF%D8%B1-%D8%A7%D9%86%D8%B3%DB%8C%D8%A8%D9%84-vkfxniwwpalw</link>
                <description>سلام و خسته نباشید عرض می‌کنم خدمت همه شما دنبال‌کنندگان هفتگی سری مقالات آموزش انسیبلدر هفته‌ای که پیش رو داریم پیرو بحث هفته پیش که همان پلی بوک‌های انسیبل بود قرار است آموزش‌های جدیدی را با یکدیگر ببینیم.در قسمت اولی این سری مجموعه بحث درباره مخزن انسیبل شروع شد؛ جایی که سرور‌های هدف در آن تعریف شده و چگونگی دسته بندی و ارتباط با آن‌ها در این قسمت تعریف می‌شود.در قسمت دوم بر آن شدیم تا دید کلی‌ای درباره دستورات اولیه استفاده از انسیبل ببینیم و این موضوعات را مرور کنیم. استفاده از انسیبل در این قسمت در حد ابتدایی برای ما میسر شد.اما در قسمت سوم به شما ابزار معرفی کردیم و به اصطلاح ماژول‌های پرکاربرد و قابل استفاده انسیبل را به شما معرفی کردیم. شما با استفاده از این ماژول‌ها می‌توانیستید اعمال مختلفی را در سرور‌های هدف انجام دهید.در قسمت پیش پا از استفاده روزانه از انسیبل فرا گذاشته و رو به استفاده از این ابزار قدرتمند به عنوان یک ابزار اتومیشن گذاشتیم و با یکدیگر بحث کردیم که چگونه می‌توانیم با استفاده از پلی‌بوک‌ها اقدامات روزانه‌ای یا دوره‌ای که در تمامی ‌سرور‌های مورد هدف خود باید انجام دهیم را به صورت اتومات انجام دهیم.امروز درباره روش‌های نوشتن پلی‌بوک بیشتر‌ با هم بحث کرده و موارد مختلفی در این‌باره را در این مقاله و مقاله هفته آینده با یک‌دیگر مرور خواهیم کرد.اتفاقات مشروط در انسیبل:بگذارید اتفاقی که در این قسمت قرار است از آن حرف بزنیم را با یک مثال توضیح دهم.فرض کنید ماشین‌های مورد نظر شما در انسیبل پلی بوک از دو سیستم عامل centOS و Ubuntu استفاده می‌کنند که هر کدام پکیج منیجر مورد نظر خود یعنی yum و apt را در اختیار دارند.حال می‌خواهیم یک سرویس انجین‌ایکس را بر روی دو دستگاه نصب کنیم.پلی‌بوک مورد نظر ما در این تسک باید از کدام پکیج منیجر برای این عمل استفاده کند؟برای انجام این اتفاق ما از شرط when در پلی بوک خود استفاده می‌کنیم.بدین صورت که در انتهای تسک مورد نظر یک خط با توجه به مثال زیر اضافه می‌کنیم؛ وقتی شرایط داخل این قسمت به حالت صحیح درآید این تسک اجرا خواهد شد.---
- name: Install NGINX
hosts: all
tasks:
- name: Install NGINX on Ubuntu
apt:
name: nginx
state:  present
when: ansible_os_family == “Debian”
- name: Install NGINX on Ubuntu
apt:
name: nginx
state:  present
when: ansible_os_family == “RedHat”در این قسمت در قسمت when تعریف کردیم که در صورتی که از نظر انسیبل سیستم‌عامل مورد نظر از خانواده دبیان بود از تسک بالا و در صورتی که از خانواده RedHat بود از تسک پایین استفاده شود.برای چک شدن این اتفاق مطمئن باشید که از == استفاده کرده‌اید و یک مساوی خالی نگذاشته‌اید.توجه داشته باشید در صورتی که نیاز داشته باشید تا دو قانون تعریف کنید و در صورت تصدیق هر کدام از این دو شرط تسک اجرا شود می‌توانیم از اپراتور or استفاده کنیم.بدین صورت که:name: Install NGINX on Ubuntu
yum:
name: nginx
state:  present
when: ansible_os_family == “RedHat” or
ansible_os_family == “SUSE”در صورتی که نیاز داشته باشید تا دو شرط همزمان چک شده و در صورت وجود هر دو تسک انجام شود نیز می‌توانید از اپراتور and استفاده کنید.بدین صورت که:name: Install NGINX on Ubuntu
apt:
name: nginx
state:  present
when: ansible_os_family == “Debian” and
Ansible_destribution_version == “16.04”شرط‌گذاری و استفاده از آن در لوپ‌های انسیبل:حال در نظر داشته باشید که بتوانید از این قسمت در چرخه یا loop های انسیبل پلی‌بوک استفاده کنید.به طور مثال:---- name: Install Softwares
hosts: all
vars:
packages:
- name: nginx
required: True
- name: mysql
required: True
- name: apache
required: Flase
tasks:
- name: Install “{{ item.name }}” on Debian
apt:
name: “{{ item.name }}”
state: present
when item.required == True
loop: “{{ packages }}”در مثال بالا در صورتی که می‌خواستیم بر روی هر هاست nginx و mysql را نصب کنیم باید یک انسیبل پلی بوک برای هر کدام می‌نوشتیم یا هر کدام از تسک‌های موجود را با استفاده از apt یک بار بازنویسی می‌کردیم.ولی در حالتی که دیده شد می‌توانیم یک سری vars معرفی کرده و در قسمت متغییر‌هایی که تعریف کردیم به هر متغیر دو ویژگی نام و required یا مورد نیاز بودن را اضافه کنیم.در نظر داشته باشید که در قسمت دوم این لوپ نوشته شده و استفاده شده در تسک نصب برنامه در دبیان می‌توانید مشاهده کنید که در قسمت شرط نوشته شده که در صورتی که پکیج مورد نیاز بود یا required به حالت True در آمده بود از این پکیج استفاده کن و این پکیج را نصب کن، در غیر این صورت نیازی به این اتفاق نیست.شرط‌گذاری و استفاده از آن در رجیستری انسیبل:در این قسمت می‌خواهیم موضوع دیگری را در هنگام استفاده از شرط ها نشان دهیم.به طور مثال فکر کنید می‌خواهیم به طور مداوم در تعداد زیادی سرور چک کنیم که آیا سرویس httpd داون شده یا خیر و در صورت داون شدن یک ایمیل ارسال کنید.برای این امر می‌توانیم از پلی بوک زیر استفاده کنیم.---
- name: Check status of a service and email if its down
hosts: localhost
tasks:
- command: service httpd status
register: result
- mail:
to: admin@arazcloud.com
Subject: Service Alert
body: Httpd Service is down
when: result.stdout.find(‘down’) != -1در این قسمت نتیجه تسک بالا توسط ماژول رجیستری ذخیره شده و در قسمت پایین گفته شده که در صورت داون بودن سرویس ایمیل فرستاده شود.امیدوارم از بحث امروز لذت برده باشید و استفاده از انسیبل پلی‌بوک را به خوبی یاد‌گرفته باشید.در هفته‌های بعد بیشتر درباره‌ی پلی‌بوک با هم بحث‌کرده و یاد‌می‌گیریم.امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید می‌توانید با بنده در میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Thu, 12 Aug 2021 11:42:43 +0430</pubDate>
            </item>
                    <item>
                <title>شروع با پلی بوک انسیبل.</title>
                <link>https://virgool.io/@smj/%D8%B4%D8%B1%D9%88%D8%B9-%D8%A8%D8%A7-%D9%BE%D9%84%DB%8C-%D8%A8%D9%88%DA%A9-%D8%A7%D9%86%D8%B3%DB%8C%D8%A8%D9%84-lc7cpg84tjki</link>
                <description>سلام و خسته نباشید عرض می‌کنم خدمت شما همراهان هفتگی سری مقالات آموزش انسیبل.این هفته با موضوع جدیدی به نام ابزار‌های انسیبل در خدمت شما هستم تا چند مورد از مهم ترین ابزار‌های انسیبل را به شما معرفی کنم.در قسمت اول این سری مجموعه درباره مخزن انسیبل یا جایی در انسیبل که سرور‌های هدف با مشخصات آن‌ها را در آن تعریف می‌کنیم با یک‌دیگر گفت‌و‌گو کردیم؛ همچنین در قسمت دوم درباره چگونگی استفاده از دستورات انسیبل به صورت ابتدایی و کلی بحث کردیم همچنین در سومین قسمت از این سری مقالات درباره ابزار‌های انسیبل که مهم‌ترین قسمت برای چگونه کار کردن با انسیبل می‌باشند را مورد بررسی قرار دادیم.در قسمت پیش درباره استفاده از تسک انسیبل حرف زدیم و جهت گذار از آن بحث به قسمت پلی‌بوک‌های انسیبل که سطح حرفه‌ای‌تری از استفاده از انسیبل می‌باشد نیاز داریم تا ابزار‌های مختلف خود برای استفاده در انسیبل را بیشتر بشناسیم.در این مقاله قصد داریم تا شمای کلی پلی بوک‌های انسیبل را مورد بررسی قرار دهیم. در نظر داشته باشید که این مقاله صرفا جهت آشنایی با این مبحث بوده و در آینده مقالاتی با سطح پیشرفتگی بالاتر نیز به شما ارائه خواهد شد.پلی‌بوک انسیبل چیست؟در ابتدا دریافتیم که انسیبل قسمت‌های متفاوتی دارد. داستان انسیبل با استفاده از مخزن انسیبل که مکانی برای تجمع و دسته بندی سرور‌های هدف انسیبل می‌باشد شروع می‌شود و در این مخزن ما می‌توانیم این سری سرور‌ها را علاوه بر معرفی و ایجاد نحوه ارتباط با آنها دسته‌بندی هم بکنیم.در ادامه با دستورات انسیبل آشنا شدیم که وظیفه آن را بر عهده داشتند که یک کار که دوست داریم در تعداد زیادی سرور انجام شود را با استفاده از این دستوران انسیبل خالی نوشته و بعد از اجرا اتفاقی که در آن لحظه نیاز داشتیم تا در سرور‌های هدف قرار گیرد اجرا خواهد شد.مفهوم نهایی که در انسیبل با آن رو به رو خواهیم شد دست بر جایی می‌گذارد که انسیبل به آن دلیل متولد شده است. مدیریت یک پارچه زیر ساخت و اتومیشن تعداد زیادی سرویس در تعداد زیادی ماشین مجازی یا ابری.پلی بوک انسیبل یک فایل است که در آن میتوانیم مراحل مختلف اجرا را تعریف کنیم؛ هدف هر اتفاق را بررسی کرده و تنظیم کنیم. یک کار تکراری را به صورت مداوم در یک قالب منظم و مدون و بدون اشتباه.پلی بوک انسیبل ساخته شد تا کسانی که کار دواپس یا سیس ادمین می‌کنند زیرساخت‌ها و خواسته‌های خود را در قالب یه کانفیگ فایل یا کد yml درست کرده و در ادامه با همین ابزار به سرعت اتفاقات مورد نظر خود را در سرور‌های متعدد انجام دهند.الگوی کلی پلی‌بوک انسیبل چیست؟الگوی کلی پلی بوک انسیبل یک فایل yaml,yml بوده که در آن می‌توانید تسک‌های مختلف، رول های مختلف و هدف‌ها یا هاست‌های مختلف تعیین نمایید و با وارد کردن این فایل به دستور ansible paly-book می‌توان اتفاقات را رقم زد.فایل yml چیست؟استاندارد نوشتاری فایل‌های تنظیمات yaml یک نوع فایل با الگوی خاص نوشتاری می‌باشد که در آن می‌توانیم خواسته‌های مورد نیاز خود را در قالب یک نوشتار الگو مند و با تعدی از نوع نوشتار کلی بنویسیم و با معرفی این فایل به ابزار مختلف می‌توانیم استفاده‌های زیادی از این فایل‌ها بکنیم.از استفاده‌های این فایل میتوان به موارد زیر اشاره کرد:پلی بوک‌های انسیبلدیپلویمنت فایل‌های کوبرنیتزفایل netplan برای تنظیمات شبکه در توزیع‌های اوبونتوفایل داکر کامپوزاین فایل رفته رفته دارد تبدیل به یک استاندارد جهانی برای فایل های تنظیمات یا کانفیگ فایل‌ها می‌شود.چطور یک انسیبل پلی‌بوک بنویسیم؟اگر نیاز‌دارید که یک سری اتفاقات پشت سر هم در یک یا چند سرور در بازه‌زمانی‌های متعدد رخ دهد می‌توانید این فایل را به صورت پلی‌بوک انسیبل درآورید.در قسمت پایین ابتدا یک فایل انسیبل پلی بوک کوچک می‌نویسیم و در ادامه به توضیح آن می‌پردازیم تا نوع نوشتاری این نوع فایل به راحتی در اختیار شما قرار گیرد.---
- name: Update Servers and configure DNS
  hosts: all
  tasks:
    - name: Update Servers
      shell: ‘apt update -y’
    - name: Configure DNS file
      lineinfile:
      path: /etc/resolv.conf
      regexp: ‘^nameserver ’
      line: nameserver 8.8.8.8ابتدا در این قسمت از انسیبل پلی بوک مشاهده می‌کنیم که سه عدد خط تیره در بالای این متن قرار دارد که به عنوان جدا کننده این موضع انتخابی استفاده می‌شود.در سطر بعد، بعد از علامت - که نمایانگر تعریف یک قسمت جدید می‌باشد نام اتفاقی که قرار است بیوفتد جلوی name قرار می‌گیرد.در نظر داشته باشید که این اکشن باید داخل چند سرور اتفاق بیوفتد؛ در خط دوم بعد از عبارت hosts نام قسمتی از اینونتوری را که نیاز‌داریم تا در آن این اتفاق انجام شود را می‌نویسیم.این قسمت از اینونتوری معرفی شده به دستوری که باعث اجرای انسیبل پلی بوک می‌شود انتخاب میشود.خط بعدی تعریفیست برای اتفاقی که در خط‌های بعد در حال انجام می‌باشد.واژه tasks در این خط نمایانگر این است که از اینجای فایل به بعد قرار است از تسکت‌ها استفاده شود تا اتفاقات پشت سر هم انجام شود.هر تسک در یک شاخه جداگانه که با - در پایین جدا شده است قرار می‌گیرد.در تسک اولی که در بالا به آن اشاره شده است نیاز‌داریم تا سرور مورد نظر را آپدیت کنیم به همین منظور قرار است با استفاده از ماژول shell این دستور را در سرور‌های هدف قرار دهیم.خط بالایی این اتفاق اسمی‌است که برای این تسک انتخاب می‌کنیم که صد در صد اتفاقی که آن تسک باعث آن می‌شود را بنویسید.در خط پایینی با همان الگوی نوشتاری خط بالایی مواجه می‌شویم با این اتفاق‌ که تعداد آرگومانت‌های موجود در این ماژول بسیار ببیشتر از حالت قبل می‌باشد.در این قسمت قرار است فایل مربوط به DNS بررسی شود و در صورتی که DNS سرور بر روی چیزی جز دی ان اس گوگل تنظیم است آن‌را تغییر داده تا به حالتی که ما دوست داریم تغییر پیدا کند.به طور کلی انسیبل پلی‌بوک همینگونه نوشته می‌شود و می‌توانید این پایه را به خیلی حالات دیگر تغییر دهید و اتفاقاتی‌که دوست دارید را در آن رقم بزنید.امیدوارم از بحث امروز لذت برده باشید و مقدمه استفاده از انسیبل پلی بوک را به خوبی یاد گرفته باشید.در هفته های بعد بیشتر درباره‌ی پلی‌بوک با هم بحث کرده و یاد می‌گیریم.امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید می‌توانید با بنده در میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Wed, 04 Aug 2021 15:49:26 +0430</pubDate>
            </item>
                    <item>
                <title>ماژول‌های انسیبل</title>
                <link>https://virgool.io/@smj/%D9%85%D8%A7%DA%98%D9%88%D9%84-%D9%87%D8%A7%DB%8C-%D8%A7%D9%86%D8%B3%DB%8C%D8%A8%D9%84-avmaj23m55qf</link>
                <description>سلام و خسته نباشید عرض می‌کنم خدمت شما همراهان هفتگی سری مقالات آموزش انسیبل.این هفته با موضوع جدیدی به نام ابزار‌های انسیبل در خدمت شما هستم تا چند مورد از مهم ترین ابزار‌های انسیبل را به شما معرفی کنم.در قسمت اول این سری مجموعه درباره مخزن انسیبل یا جایی در انسیبل که سرور‌های هدف با مشخصات آن‌ها را در آن تعریف می‌کنیم با یک‌دیگر گفت‌و‌گو کردیم؛ همچنین در قسمت دوم درباره چگونگی استفاده از دستورات انسیبل به صورت ابتدایی و کلی بحث کردیم.در قسمت پیش درباره استفاده از تسک انسیبل حرف زدیم و جهت گذار از آن بحث به قسمت پلی‌بوک‌های انسیبل که سطح حرفه‌ای‌تری از استفاده از انسیبل می‌باشد نیاز داریم تا ابزار‌های مختلف خود برای استفاده در انسیبل را بیشتر بشناسیم.در این مقاله قصد دارم تا ۵ مورد از پر استفاده‌ترین ماژول‌ها یا ابزار انسیبل در حال حاضر را به شما معرفی کنم.در نظر داشته باشید که ابزار‌های معرفی شده به صورت کامل معرفی نمی‌شوند و تنها از نوع ساده‌ای از استفاده از این ابزار برای توضیح استفاده خواهم‌کرد.۱. ابزار ‌file:به طوری کلی این ابزار به شما کمک می‌کند که فایل‌های سیستم را مدیریت کنید، از دسترسی و سطح اجازه برای اجرا شدن، خوانده شده و نوشته شدن توسط یوزر‌ها و گرو‌ه‌های مختلف تا لینک کردن و دیگر امکانات.به طور مثال ابن ابزار به روش رو به رو نوشته و استفاده می‌شود:- name: Change file ownership, group and permissionsansible.builtin.file:path: /etc/foo.confowner: foogroup: foomode: &#039;0644&#039;چهار آرگومانت path، owner، group و mode آرگومانت‌های اصلی این بزار می‌باشند.۱.۱ آرگومانت اول path:این قسمت وظیفه آدرس دهی فایل مقصد را بر عهده‌دارد.۱.۲ آرگومانت دوم owner:در این قسمت تعریف می‌کنیم که در سیستم سازنده این فایل و یوزری که دسترسی کامل به این فایل دارد چه کسی تعریف شود.۱.۳ آرگومانت سوم group:در این قسمت گروهی که اجازه دسترسی به این فایل را دارند قرار داده می‌شوند.۱.۴ آرگومانت چهارم mode:در این قسمت حالت اجرایی فایل با استفاده از کد‌های مختصری که کاملا شبیه عددی می‌باشد که در دستور chmod استفاده می‌کنیم قرار داده می‌شود.۲. ابزار include:در این ابزار می‌توانیم یک فایل که یک تسک یا پلی در آن قرار دارد را استفاده‌کنیم.به طور مثال در نظر داشته باشید که داخل یک پلی‌بوک می‌خواهید در یک سری از سرور‌های تعریف شده در مخزن یک پلی دیگر که در فایل دیگری گذاشته اید اجرا شود؛ در همچین موقعی می‌توانیم از ابزار include استفاده کنیم.نحوه نوشتار عادی این ابزار در داخل یک پلی بوک به صورت زیر می‌باشد:- name: Include a play after another playinclude: otherplays.yamlدر این قسمت از پلی بوک فایلی که بعد از include معرفی شده در سرور(های) هدف اجرا خواهد شد.۳. ابزار template:این ابزار یک تغییر دهنده و ایجاد کننده فایل است که بر اساس استاندارد زبان jinja2 کار می‌کند.شما می‌توانید با استفاده از این ابزار یک فایل j2 در هاست خود ساخته و با توجه به ساختار نوشتار خودتان این فایل را با یک فایل در داخل سرور هدف تغییر دهید.در نظر داشته باشید که این روش برای تنظیم فایل‌های متفاوت در تعداد زیادی سرور استفاده می‌شود.ابزار template به روش زیر استفاده می‌شود:- name: Template a file to /etc/file.confansible.builtin.template:src: /mytemplates/foo.j2dest: /etc/file.confowner: bingroup: wheelmode: &#039;0644&#039;۳.۱ آرگومانت src:این قسمت فایل مبدا که در داخل دستگاه ارائه دهنده انسیبل می‌باشد را نشان می‌دهد و آدرس این فایل j2 را باید در این قسمت بنویسیم.۳.۲ آرگومانت dest:فایلی که در جلو این آرگومانت قرار می‌گیرد فایل می‌باشد که در سرور هدف تغییر می‌کند.۳.۳ آرگومانت owner:این قسمت سازنده فایل و یوزری که در سیستم عامل اجازه دسترسی به این فایل دارد رو نمایانگر می‌کند.۳.۴ آرگومانت group:این قسمت گروهی که به این فایل دسترسی دارند را نشان داده و به این گروه اجازه می‌دهد تا از محتوای فایل ساخته شده در مقصد استفاده کنند.۳.۵ آرگومانت mode:در این قسمت حالت اجرایی فایل با استفاده از کد‌های مختصری که کاملا شبیه عددی می‌باشد که در دستور chmod استفاده می‌کنیم قرار داده می‌شود.۴. ابزار commandاین ابزار وظیفه دارد که دستوری که به آن می‌دهید را در سرور هدف اجرا کند.تنها ملاحظاتی که در باره این دستور وجود دارد این است که در فضای shell اجرا نمی‌شود در نتیجه تمامی متغیر ها از قبیل $HOSTNAME در این دستور کارا نبوده و همچینین علائمی مانند | در این دستور به دلیل این که در محیط غیر قابل اجرا می‌باشد.این ابزار ساخته نشده که دستورات در سرور با آن اجرا شوند. دلیلی که این ابزار ساخته شده آن است که اجرای دستورات در شرایط خاص مورد بررسی قرار بگیرد.نحوه استفاده از این دستور در داخل پلی بوک به روش رو به رو می‌باشد:- name: Run command if /path/to/database does not exist (with &#039;args&#039; keyword)ansible.builtin.command: /usr/bin/make_database.sh db_user db_nameargs:creates: /path/to/databaseدر متن بالا جلوی اسم ابزار فایل اجرایی‌ای که باید در آن هنگام اجرا شود نوشته شده و همچنین دو آرگومانت db_user و db_name به این فایل فرستاده شده اند.این دستور با این دو آرگومانت در صورتی ساخته می‌شود که فایل /path/to/database در سرور وجود نداشته باشد.۵. ابزار serviceدر این ابزار قرار نیست کار عجیبی انجام گیرد؛ صرفا قرار است که یک سرویس در سیستم عامل هدف در شرایطی قرار گیرد که ما از آن انتظار داریم.به طور مثال فکر کنید نیاز دارید که سرویس httpd در قسمتی از کار حتما روشن باشد.برای این کار اصولی‌ترین اتفاق آن است که از این سرویس استفاده کنید.دلیل این موضوع آن است که در هنگام اجرای دستور توسط ابزاری command یا shell امکان خطا در اجرا وجود دارد ولی وقتی از این ابزار استفاده می‌کنیم انسیبل حتما این کار را انجام خواهد داد و در صورت عدم موفقیت حتما خارج می‌شود.برای انجام این اتفاق می‌توانیم درخواست خود را در فایل پلی بود اینگونه ثبت کنیم:- name: Start service httpd, if not startedansible.builtin.service:name: httpdstate: startedاین سومین قسمت از قسمت‌های سریالی آموزش کاربردی انسیبل بود که در آن قصد داریم به صورت هفتگی این سری را با همدیگر جلو ببریم.امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید می‌توانید با بنده در میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Wed, 14 Jul 2021 15:24:22 +0430</pubDate>
            </item>
                    <item>
                <title>شروع کار با دستورات انسیبل از کجاست؟</title>
                <link>https://virgool.io/@smj/%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D8%A7%D9%86%D8%B3%DB%8C%D8%A8%D9%84-%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7%D8%B3%D8%AA-uqeimwfz68sj</link>
                <description>این هفته نیز با قسمتی دیگر از سری آموزش‌های استفاده از انسیبل در خدمت شما هستم.همانطور که در قسمت پیش گفته شد انسیبل در واقع یک ابزار برای انجام کار های مشخص بر روی تعداد زیادی ماشین می‌باشد که به کمک آن می‌توانیم زیرساخت‌های خود را به خوبی گسترش داده و پشتیبانی کنیم.در قسمت قبل درباره مخزن اسنیبل یا اینونتوری با هم حرف زدیم؛ فایلی که نمایانگر سرور‌های هدف بوده و به ما اجازه می‌دهد که سرور‌های هدف یا نودهای تحت تاثیر را به صورت دسته‌بندی در آورده و به ما اجازه می‌دهد که در قسمت مورد نظر خود تاثیر دلخواه را بگذاریم.در این قسمت رو به تسک‌های انسیبل کرده و درباره نحوه استفاده از دستورات انسیبل با یکدیگر بحث می‌کنیم.تسک انسیبل چیست؟به طور کلی انسیبل دارای ساختار کاملی می‌باشد که اولین قسمت از این ساختار تسک می‌باشد.تسک‌ها یک سری اتفاقات می‌باشند که می‌توان آن‌ها را توسط دستورات انسیبل در یک یا یک گروه سرور انجام داد یا این که در پلی بوک (مفهوم پلی بوک در مقاله‌های بعدی تحت بحث قرار خواهد گرفت) از آن برای انجام کار های مختلف انجام می‌شود.دستورات انسیبل هر ابزاری که درباره آن شروع به یادگیری می‌کنیم قسمتی به نام دستورات دارد که در ابتدا بعد از فهمیدن کلیت موضوع آن ابزار این دستورات را باید فرا بگیریم تا بتوانیم ادامه آموزش را در این موضوع داشته باشیم و بتوانیم با آن کار کنیم.تسک‌ها از یک سری ماژول یا ابزار استفاده می‌کند تا آن‌ها را تحقق دهند.در این قسمت ابتدا نحوه قرارگیری دستورات انسیبل را برای شما عزیزان مطرح کرده و سپس به فراگیری تعدادی از ماژول‌ها می‌پردازیم.استفاده از تسک انسیبلبه طور کلی نحوه نوشتاری اولیه دستورات انسیبل در صورتی که بخواهیم تنها و تنها یک تسک در آن انجام شود به صورت زیر می باشد:# ansible GROUP -i INVENTORY -m MODULE -a ‘ARG’در قسمت بالا کلمات GROUP , INVENTORY , MODULE , ARG’قسمت های مختلف دستور بوده که در پایین به شرح آن‌ها می‌پردازیم:در ابتدای این دستور به قسمت GROUP برخورد می‌کنیم. این قسمت به این معناست که یک گروه یا یک سرور تعریف شده در مخزن انسیبل را می‌توانیم برای انجام این تسک هدف قرار دهیم.به طور مثال:# ansible web-server -i INVENTORY -m MODULE -a ‘ARG’در این مثال از فایل مخزن معرفی شده قسمت web-server برای انجام این تسک هدف قرار گرفته می‌شود.در قسمت بعدی به عنوان INVENTORY مواجه می‌شویم. از آنجا که در قسمت قبلی به طور کامل درباره این موضوع حرف زدیم این قسمت را با یک مثال توضیح می‌دهم:# ansible web-server -i /var/lib/ansible/inventory -m MODULE -a ‘ARG’در مثال بالا در نظر داشته باشید که به جای INVENTORY از آدرس فایل مخزن معرفی شده به انسیبل برای انجام اتفاقات استفاده می‌کنیم.به طور کلی انسیبل در قسمت اول هر کدام از دستورات یا فایل ها ابتدا همیشه باید سرور های هدف را مشخص کنیم و سپس به بحث درباره عمل قابل انجام بپردازیم.حال نوبت آن است که به قسمت MODULE و ARG توجه کنیم. این دو قسمت کاملا به یکدیگر وابسته هستند.در یک تسک انسیبل ما همواره از ابزار مختلفی استفاده می‌کنیم تا به مقصود خود نزدیک شویم.ماژول‌ها یا ابزار وسایلی هستند که به ما در انسیبل کمک می‌کنند تا اتفاقات رخ دهند.هر ماژول برای انجام به متغییر‌ها و اطلاعات مختلفی نیاز دارد که این متغییر‌ها تا بدینجای کار به عنوان ARG در مقاله حضور داشتند.در نظر داشته باشید که بعضا ممکن است ماژولی وجود داشته باشد که آرگومانت یا متغییری در آن وجود نداشته باشد به همین دلیل از استفاده از سوییچ -a خودداری خواهیم کردبه طور مثال:# ansible web-server -i /var/lib/ansible/inventory -m shell -a ‘ls’در مثال بالا در داخل گروه web-server در داخل مخزن معرفی شده به انسیبل در تک تک سرور‌های این گروه دستور ls که گیرنده لیست فایل‌های موجود در قسمت مشخصی از سرور می‌باشد را اجرا کرده و نتیجه را به ما نمایش می‌دهد.ماژول استفاده شده در این مثلا shell بوده که نمایانگر این است که متغییر یا آرگومنت معرفی شده خود را در داخل شل یا محیط دستور گیری سرور هدف قرار داده و اجرا کند.چند ماژول:در این قسمت قصد دارم تا تعدادی از ماژول ها و ابزار های کارآمد در انسیبل را به شما معرفی کنم.در نظر داشته باشید که در این قسمت تنها چند ماژول پر کاربرد و در دسترس را معرفی می‌کنیم و در یک قسمت دیگر به معرفی ماژول‌های کاربردی‌تر می‌پردازیم.در اولین قسمت از این لیست به سراغ ماژول ping می‌رویم.این ماژول هیچ گونه آرگومانتی ندارد و وظیفه آن اطلاع از وجود و ارتباط سالم با سرور های هدف می‌باشد.به طور مثال:# ansible web-server -i /var/lib/ansible/inventory -m pingخروجی این دستور به ما نشان می‌دهد که آیا web-server ها روشن و در دسترس برای انجام کار هستند یا خیر.دومین ماژول، ماژول shell می‌باشد که در بالا درباره آن بحث شد.کاری که این ماژول برای ما انجام می‌دهد این است که آرگومانت خود را عینا در داخل شل یا محیط دستورگیری سرور مقصد اجرا می‌کند.به طور مثال:# ansible web-server -i /var/lib/ansible/inventory -m shell -a ‘ifconfig eno1’دستور بالا وظیفه دریافت و نمایش اطلاعات اینترفیس یا شبکه eno1 را در صورت وجود در هر سرور بر عهده دارد.همین دو ماژول بالا برای تست و انجام تمرین در حد همین مقاله کافی بوده و در مقاله‌های بعد بیشتر درباره ماژول‌ها با همدیگر یاد می‌گیریم.این دومین قسمت از قسمت‌های سریالی آموزش کاربردی انسیبل که قصد داریم به صورت هفتگی این سری را با همدیگر جلو ببریم.امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید می‌توانید با بنده در کامنت‌ها یا در ایمیل s.m.javadi001@gmail.com میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Mon, 05 Jul 2021 19:26:51 +0430</pubDate>
            </item>
                    <item>
                <title>انسیبل چیست؟</title>
                <link>https://virgool.io/@smj/%D8%A7%D9%86%D8%B3%DB%8C%D8%A8%D9%84-%DA%86%DB%8C%D8%B3%D8%AA-r8qcez7d6agf</link>
                <description>با سلام خدمت شما همراهان گرامی.بعد از سری ۹ قسمتی چطور با داکر کار کنیم ایندفعه به یکی دیگر از سری توانایی‌های یک مهندس دواپس می‌پردازیم.تصور کنید که سرویس بسیار بزرگی متشکل از چندین ماشین مجازی در اختیار دارید و نیاز است در هر کدام از ماشین‌ها یک دستور اجرا کنید،‌ یک خط از یک فایل را تغییر دهید یا حتی یک فایل را بر روی هر کدام اجرا کنید و…اصولا این عمل اتفاق زمان گیر و فرسایشی‌ای خواهد بود و ممکن است در انجام این کارها اشتباهات مختلفی صورت بگیرد؛ همچنین در صورتی نیاز باشد تا یک زنجیره از اتفاقات داخل هر کدام از سرور ها اجرا شود این مشکلات چند برابر می‌شود و همینطور زمان انجام نیز بسیار بیشتر می‌شود.یکی از ابزارهایی که مهندسان دواپس برای فرار از این مشکل از آن استفاده می‌کنند انسیبل است.انسیبل ساخته شده تا اتفاقاتی که نیاز داریم در چندين سرور یا ماشین مجازی به صورت دسته بندی و هدفمند برای رسیدن به یک مقصود داریم را از داخل یک سرور انجام دهد.انسیبل چطور کار می‌کند؟انسیبل از داخل یک سرور یا ماشین مجازی به بقیه ماشین‌های مجازی از طریق پلتفرم های ssh و winrm وصل شده و اتفاقاتی که ما به او دستور می‌دهیم را در داخل آن سرور ها انجام داده و نتیجه را به ما اعمال می‌کند.سروری که اجرا کننده انسیبل است به نام سرور مدیر شناخته شده و می‌تواند به هر تعداد از سرور‌هایی که نیاز داشته باشیم دستورات و اتفاقات مورد نیاز ما را اعلام کند.دستورات در انسیبل چطور وارد می‌شوند؟در مفهوم انسیبل برای اجرا و انجام یک اتفاق از یک سری ابزار به اسم ماژول‌ها استفاده می‌کنیم.مثلا در نظر داشته باشید در هنگام تعمیر ماشین خود به یک پیش بر می‌خورید؛ اصولا اولین کاری که می‌کنید آن است که ابزار مورد نظر برای انجام آن کار را برداشته و با آن ابزار فعالیت مورد نظر خود را انجام می‌دهید.در انسیبل هم همین موضوع صادق است و برای هر کدام از فعالیت های مورد نیاز خودمان از یک ابزار استفاده می‌کنیم.مثلا برای اجرای یک اسکریپت در داخل سرور های هدف از ماژول script و برای اجرای یک دستور در شل از ماژول shell استفاده می‌کنیم.به طور کلی الگوی کلی وارد کردن دستور در انسیبل به شکل زیر می‌باشد:ansible TARGET -i INVENTORY -m MODULE -a ‘ARGUMENTS’در سطر بالا در قسمت TARGET قسمتی از اینونتوری و یا مخزن مورد انتخاب ما در انسیبل انتخاب می‌شود.در قسمت INVENTORY فایل مخزن مورد نظر که دستور مورد نظر ما در آن اجرا می‌شود قرار خواهد گرفت.در قسمت MODULE ماژول یا ابزار مورد نظر ما از انسیبل که قرار است از آن استفاده کنیم وارد می‌شود.در قسمت ARGUMENTS آرگومانت ها یا اجزای اجرایی و دستورات نوع استفاده از ابزار مورد نظر خود را وارد می‌کنیم.تنظیمات اولیه برای شروع کار با انسیبل چیست؟برای شروع  کار با انسیبل ابتدا نیاز است تا کلید rsa سرور هاست بر روی تمامی نود ها گذاشته شود تا انسیبل بدون نیاز به وارد کردن رمز عبور بتواند به سرور وارد شود (هر چند در صورت نیاز می‌توانیم رمز عبور ssh را به انسیبل در قسمت مخزن انسیبل تعریف کنیم تا با آن رمز عبور وارد شود.) سپس باید کاربری که به عنوان کاربر انسیبل تعیین می‌شود را در گروه کسانی قرار دهیم که دسترسی root دارند و همچنین اتصال و انجام دستور روت برای این یوزر را بدون استفاده از پسورد فراهم آوریم تا انسیبل بدون مشکل دستورات و اتفاقات مورد نظر خود را انجام دهد و بتوانیم از همه ابزار در آن استفاده کنیم.اینونتوری یا مخزن در انسیبل چیست؟اولین موضوعی که بعد از شروع به یادگیری از انسیبل به آن بر می‌خوریم مخزن انسیبل است.این فایل بدان صورت ساخته می‌شود که در آن سرور های تحت ارتباط با انسیبل تعریف شده و گروه بندی می‌شوند همچنین نوع ارتباط روش ارتباط نوع سیستم عامل و تمامی عنوانین تاثیر گذار در اتصال انسیبل به سرور ها در این قسمت گذاشته شده و به انسیبل فهمانده می‌شود.این فایل بدین صورت ساخته می‌شود که ابتدا در آن سرور ها و نود های هدف را به تفکیک تعیین و تشریح می‌کنیم و سپس در قسمت‌های دیگر این فایل می‌توانیم هاست‌های تعریف‌ شده را گروه بندی کرده و حتی بعد از آن می‌توانیم گروه‌هایی بزرگ تر از گروه‌های کوچکی که در مرحله قبل ساخته‌ایم بسازیم.ابتدا در مرحله اول نوع تعریف هاست و یک سری از قسمت‌های مورد نظر برای اتصال به هاست را مورد بررسی قرار می‌دهیم:در ابتدایی‌ترین قسمت این فایل نام هاست مورد نظر را در ابتدای کار وارد می‌کنیم بدین صورت که مثلا هاست اول را با نام host-1 در ابتدای خط به روش زیر می‌نویسیم:host-1در قسمت بعدی آیپی و یا آدرس این هاست را با فاصله نسبت به این قسمت با الگور ansible_host=IP (IP نمایانگر آدرس آیپی سرور می‌باشد) وارد می‌کنیم، به صورت زیر:host-1 ansible_host=10.0.0.5در قسمت بعد می‌توانیم نوع ارتباط خودمان با هاست مورد نظر را تعیین کنیم مثلا در صورتی که سرور مقصد از سیستم عامل لینوکس استفاده می‌کند ارتباط ما با این سرور از طریق ssh و در صورتی که سرور مقصد از سیستم عامل ویندوز استفاده می‌کند از طریق راه ارتباطی winrm استفاده می‌کنیم. تعریف این قسمت به روش زیر می‌باشد:host-1 ansible_host=10.0.0.5 ansible_connection=sshدر قسمت بعد یوزر یا نام کاربری که انسیبل از آن استفاده می‌کند تا اتفاقات مورد نظر خود در سرور هاست انجام دهد را وارد می‌کنیم مثلا در مثال مطرح شده از کاربر root استفاده می‌کنیم و قسمت مورد نظری که باید در آن تعریف شود به نام ansible_user را به شرح زیر پر می‌نماییم:host-1 ansible_host=10.0.0.5 ansible_connection=ssh ansible_user=rootجز ۵ مورد بالا قسمت های بسیار زیادی قابل تعیین در قسمت تعریف هاست ها می‌باشد اما در نظر داشته باشید که تنها این ۴ مورد ابزار کافی برای ساخت فایل انسیبل را در اختیار ما قرار می‌دهد از جایی که این مقاله برای آشنایی بیشتر با انسیبل ساخته شده است از توضیحات بیشتر سر باز زده و به ادامه توضیحات کلی درباره انسیبل می‌پردازیم.در قسمت دیگری از فایل مخزن یا اینونتوری می‌توانیم هاست های تعریف شده را در دسته بندی های مختلف قرار دهیم و در هنگام استفاده از دستور انسیبل می‌توانیم نام گروه را معرفی کرده و اتفاق مورد نظر خود را بر روی گروهی از سرور ها انجام دهیم.به طور مثال فکر کنید چند هاست با الگوی زیر در یک فایل مخزن گزارش شده اند:host-1 ansible_host=10.0.0.5 ansible_connection=ssh ansible_user=roothost-2 ansible_host=10.0.0.6 ansible_connection=ssh ansible_user=roothost-3 ansible_host=10.0.0.7 ansible_connection=ssh ansible_user=roothost-4 ansible_host=10.0.0.8 ansible_connection=ssh ansible_user=rootحال یک گروه از این هاست ها بر روی خود وب سرور داشته و گروه دیگری از این هاست ها بر روی خود دیتا بیس دارند و گروهی نیز اپلیکیشن را بر عهده دارند.مثلا سرور دیتابیس در هاست ۱ و ۳ قرار داشته و سرور اپلیکیشن در هاست ۲ و سرور وب سرور در هاست ۴ قرار داشته باشد.در حالت زیر می‌توانیم یگ گروه از هاست های بالا را تعریف کنیم که هر دو دیتا بیس باشند.به صورت زیر می‌توان یک گروه در مخزن انسیبل ایجاد کرد:[database]host1host3و فایل کلی اینونطوری ما با توجه به توضیح بالا می‌تواند به حالت زیر ساخته شود:host-1 ansible_host=10.0.0.5 ansible_connection=ssh ansible_user=roothost-2 ansible_host=10.0.0.6 ansible_connection=ssh ansible_user=roothost-3 ansible_host=10.0.0.7 ansible_connection=ssh ansible_user=roothost-4 ansible_host=10.0.0.8 ansible_connection=ssh ansible_user=root[database]host1host3[webserver]host4[app]host2(در نظر داشته باشید که گروه ها می‌توانند تنها یک عضو داشته باشند و این موضوع هیچ اشکالی ندارد حتی اگر برای تغییر نام یک هاست باشد.)نوع دیگر از گروه ها آن است که گروهی ساخته شود و زیر شاخه هایش گروه های دیگری باشند.در این صورت برای تعریف این گروه ها از عبارتی همچون عبارت زیر استفاده می‌کنیم:[GROUP:children]به این صورت که ابتدا داخل کروشه عبارت گروه خود را تایپ کرده و سپس : گذاشته و در نهایت عبارت children را استفاده می‌کنیم تا اجازه داشته باشیم در این گروه از گروه های دیگر نیز استفاده کنیم.به طور مثال برای این که گروهی به اسم all متشکل از تمامی هاست های مثال قبل را داشته باشیم بدین صورت این گروه را معرفی می‌کنیم:[all:children]databasewebserverappدر نتیجه فایل نهایی مخزن ما به صورت زیر خواهد بود:host-1 ansible_host=10.0.0.5 ansible_connection=ssh ansible_user=roothost-2 ansible_host=10.0.0.6 ansible_connection=ssh ansible_user=roothost-3 ansible_host=10.0.0.7 ansible_connection=ssh ansible_user=roothost-4 ansible_host=10.0.0.8 ansible_connection=ssh ansible_user=root[database]host1host3[webserver]host4[app]host2[all:children]databasewebserverappاین بود از اولین سری از قسمت‌های سریالی آموزش کاربردی انسیبل که قصد داریم به صورت هفتگی این سری را با همدیگر جلو ببریم.امیدوارم توضیحات من برای شما در یادگیری انسیبل کاربردی باشد.در صورتی که انتقاد یا پیشنهادی درباره این مقاله دارید می‌توانید با بنده در میان گذاشته تا سوالات شما حل شده یا در مقالات بعدی تصحیح شود.با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.تا هفته بعد...</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sat, 26 Jun 2021 14:46:49 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه با داکر کار کنیم؟ - قسمت آخر</title>
                <link>https://virgool.io/@smj/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A8%D8%A7-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%A9%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%D8%A2%D8%AE%D8%B1-s2w3rlyejzyw</link>
                <description>سلام و خسته نباشید خدمت شما همراهان عزیز. این هفته هم با یکی از سری مقالات استفاده از داکر در خدمت شما هستم و در این مقاله قرار است تا سری سوالات درباره داکر را با همدیگر بررسی کنیم.از شما متشکرم که در ۸ هفته گذشته با بنده همراه بودید و در مسیر نگاهی به داکر و استفاده پایه‌ای از این ابزار قدرتمند من را یاری نمودید.در قسمت های قبلی با دستورات داکر، روش ساخت داکر فایل، ساخت داکر کامپوز فایل و استفاده از داکر کامپوز و چیستی داکر والیوم و استفاده از آن و چیستی داکر سوارم و نحوه نصب این ابزار قدرتمند را با یکدیگر آموختیم و تقریبا مسیر یادگیری داکر به انتهای خود رسیده و آموزش مقوله جدیدی برای معرفی اولیه و در سطح پایه وجود ندارد.در نظر داشته باشید که این سری مقاله برای کسانی نوشته شده است که تا کنون تجربه‌ای در کارکردن با داکر نداشته و این سلسله مقالات اولین تجربه مواجهه آنها با داکر می‌باشد؛ به همین دلیل توضیحات اصولا سطحی و در دسترس بوده و گزینه‌های جانبی زیادی را بررسی نمی‌کنیم.در ادامه مقاله سوالات درباره داکر را ابتدا مطرح کرده و سپس در ادامه به پاسخ آن‌ها می‌پردازیم.داکر چیست؟شاید یکی از پایه‌ای‌ترین سوالات درباره داکر این موضوع باشد که اصلا داکر چیست؟در تعریف کلی داکر یک برنامه کامپیوتری است که به شما دسترسی مجازی‌سازی در سطح سیستم‌عامل می‌دهد و این تغییر را برای شما به عنوان یک کانتینر ایجاد می‌کند. داکر ابتدا در سال ۲۰۱۳ معرفی شد و به شما کمک می‌کند تا نرم‌افزار‌ها و پکیج‌هایی به اسم کانتینر را اجرا کنید.در تعریف آسان‌تر داکر یک ابزار است که طراحی شده تا در بستر کانتینر ها محیطی فراهم آورد تا ساخت و توسعه اپلیکیشن‌ها راحت‌تر انجام شود.تفاوت بین مجازی‌سازی و کانتینر‌سازی چیست؟در نظر داشته باشید که در مجازی‌سازی ما از ماشین‌های مجازی استفاده می‌کنیم که از یک سری نرم‌افزار‌ها استفاده می‌کنند که به طور مثال hypervisor ها یکی از آن‌ها هستند؛ ماشین‌های مجازی خود به عنوان یک سیستم‌عامل می‌توانند نرم‌افزار‌های متفاوتی بر روی خود داشته باشند و هر کدام میزان مشخصی رم، سی‌پی‌یو و فضای ذخیره‌سازی اشغال می‌کنند و به خود اختصاص می‌دهند.اهمیت این سوال از سری سوالات درباره داکر اینجا مطرح می‌شود که ماشین‌های مجازی کاملا فضای زیر‌ساختی مورد نیاز خود را اشغال می‌کنند و به هیچ وجه در اختیار سیستم قرار نمی‌دهند.اما در طرف دیگر کانتینر‌ها را داریم که بدین صورت ارائه می‌شوند که بر روی نرم‌افزاری به نام Container Engine قرار گرفته و به راه اندازی و اجرای اپلیکیشن‌ها می‌پردازند؛ در این ساختار ما لایه‌ای به نام سیستم‌عامل وجود نداشته و به جای آن از یک سری والیوم در فضای ذخیره سازی که با تنظیمات داکر ایمیج ساخته شده‌اند مواجه می‌شویم.در نظر داشته باشید که کانتینرها سخت‌افزار بسیار کمتری نسبت به ماشین‌های مجازی استفاده می‌کنند چون هسته‌ آن‌ها در زمان ساخت برای اجرای اپلیکیشن مورد نیاز شما بهینه می‌شود و در زمان اجرا منابع سرور شما (رم، هارد، سی‌پی‌یو) را به خود اختصاص نداده و تنها از آن به اندازه نیاز خود استفاده می‌کنند.مزیت استفاده از داکر چیست؟سوال پر اهمیت دیگری که در سری سوالات درباره داکر مطرح می‌شود آن است که مزیت استفاده از داکر چیست؟ اصلا چرا از داکر استفاده می‌کنیم؟در جواب این سوال باید گفت:یک اپلیکیشن در داخل یک کانتینر می‌تواند بر روی هر سیستمی اجرا شود و به سیستم‌عامل یا هیچ فاکتوری از هاست ارتباطی ندارد، تنها نیاز است که داکر بر روی آن سیستم‌عامل نصب باشد پس فرآیند نصب و راه‌اندازی تعدادی زیادی از نرم‌افزار‌ها از و زمانی که برای این کار می‌گذاریم کمتر می‌شود.مزیت دیگر استفاده از داکر آن است که به دلیل تست و ارائه نرم‌افزار در داخل یک کانتینر ما نگرانی‌ای درباره کار کردن یا نکردن این نرم‌افزار نخواهیم داشت، می‌توانیم داکر را در هر زمان به هر جا و هر تعدادی که نیاز است انتقال داده و استفاده نماییم و محیط تستش تست کرده و به قسمت محصول برسانیم.مزیت دیگر آن است که داکر کانتینر اصولا بر روی تمام پلتفرم ها در دسترس بوده و قابل نصب است به همین دلیل محدودیتی بر روی اجرا کانتینر‌ها در هیچ جا وجود ندارد.در ورژن کنترلرها مانند گیت هم داکر‌ها دست بالاتر را دارند چون به سادگی می‌توان از آن‌ها برای استفاده در ورژن کنترلرها استفاده کرد و توسعه اپلیکیشن و مدیریت کسب و کار را راحت‌تر انجام داد.چرا به جای ران کردن چند داکر از داکر کامپوز استفاده می‌کنیم؟سوالات درباره داکر به دو دسته تقسیم می‌شوند: چگونگی استفاده از داکر، چرایی استفاده از داکر.در مورد دوم این تقسیم‌بندی راحتی کار با داکر کانتینر به چشم می‌خورد و توسعه پذیری این ابزار هم اهمیت خود را نشان می‌دهد.اما در نظر داشته باشید موردی که به ‌آن بر می‌خوریم آن است که چند سرویس با هم کار کنند و نیاز به شبکه اختصاصی یا الویت ساخت و توسعه داشته باشید از طرفی کار کردن آن‌ها به یکدیگر وابسته باشند.در این ساختمان اپلیکیشن‌های مجزا DataBase, FileSystem, WebServer, Frontend را در اختیار داریم که در ساختمان کلی باید ۴ داکر با همین اسامی و ارتباط های مشخص در تصویر داشته باشیم که هر کدام متغییر‌های محلی خود را داشته باشید و همچنین والیوم‌های مورد استفاده آن‌ها در خیلی از سرویس‌ها مورد بحث بوده و امکان دارد با یکدیگر در ارتباط یا مشترک باشد.در لایه شبکه هم این چند اپلیکیشن برای سرویس‌دهی به مشتری نیاز است تا با یکدیگر در ارتباط باشند.در صورتی که سرویس ما نیاز به انتقال یا گسترش داشته باشد نیز باید یک یا چند ساختمان شبیه همین تصویر به مرحله ساخت برسد که در صورت اشتباه احتمالا ساختمان اصلا کار نکند.برای همین داکر یک پلتفرم به اسم docker-compose داکر کامپوز ارائه داده که می‌توانیم تمام تنظیمات ارتباطی و حافظه‌ای تمام این سرویس‌ها را در قالب یک فایل استاندارد yml ساخته و به داکر کامپوز معرفی کنیم تا تنها با یک دستور تمام سرویس ساخته شود یا هر کدام از اجزا و اپلیکیشن‌ها با استفاده از گزینه scale به اندازه مورد نیاز ما گسترش پیدا کرده و سریع‌تر و در دسترس تر کار کنند.تنظیمات HA این سرویس‌ها هم بر عهده خود داکر بوده و پخش لود در این مقوله کاملا هوشمند و از طرف شبکه داخلی داکر انجام می‌شود.بسیار متشکرم که در این سری مقالات استفاده از داکر با من در این مسیر قدم برداشتید و این قسمت تحت عنوان سوالات درباره داکر آخرین زنجیره از این مقالات بوده و در هفته‌های بعد با سری مقالات آموزش انسیبل در خدمت شما خواهم بود. امیدوارم این سری مقالات تجربه خوبی از داکر در اختیار شما گذاشته باشد و تا حدودی بتوانیم بعد از مطالعه این مقالات درکی از داکر داشته باشیم و از این تکنولوژی به روز و سریع در ساخت و ارائه سرویس‌های خود استفاده کنیم.می‌توانید نظرات و پیشنهادات خود را برای ادامه این مقاله و همچنین مقاله‌های دیگر در کامنت‌ها یا ایمیل s.m.javadi001@gmail.com با بنده در میان بگذارید.با تشکر از تیم ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشتند؛ ابرآراز ارائه دهند سرویس‌های تماما ابری بوده که در زمینه رایانش ابری فعالیت دارد، می‌توانید برای استفاده و تجربه این سرویس به سایت:https://arazcloud.comمراجعه فرمایید.</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sat, 12 Jun 2021 16:24:38 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه با داکر کار کنیم؟ - داکر سوارم - ۲</title>
                <link>https://virgool.io/@smj/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A8%D8%A7-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%A9%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-%D8%AF%D8%A7%DA%A9%D8%B1-%D8%B3%D9%88%D8%A7%D8%B1%D9%85-%DB%B2-vvwwhuafpjym</link>
                <description>سلامی دوباره خدمت شما همراهان هفتگی سری مقالات استفاده از داکر؛ از شما متشکرم که در ۷ هفته گذشته با من همراه بودین و در مسیر نگاهی به داکر و استفاده پایه‌ای از این ابزار قدرتمند بنده را یاری کردید.در هفتمین قسمت از سری آموزش‌های استفاده از داکر باز هم به سراغ داکر سوارم رفته و توضیحات کلی و تکمیلی در ادامه بحث هفته گذشت با همدیگر خواهیم داشت.در قسمت‌های قبلی با دستورات داکر، روش ساخت داکر فایل، ساخت داکر کامپوز فایل و استفاده از داکر کامپوز و چیستی داکر والیوم و استفاده از آن و چیستی داکر سوارم و نحوه نصب این ابزار قدرتمند را با یکدیگر آموختیم و حالا نوبت آن است تا به قسمت دیگری از دنیای داکر یعنی تنظیم و استفاده از داکر سوارم بپردازیم.در نظر داشته باشید که این مقاله برای کسانی نوشته شده از که تا کنون تجربه‌ای از کارکردن با داکر نداشته و این سلسله مقالات اولین تجربه مواجهه آن‌ها با داکر می‌باشد به همین دلیل توضیحات اصولا سطحی و در دسترس بوده و گزینه‌های جانبی زیادی را بررسی نمی‌کنیم.در این مقاله خواهیم خواند:چگونه داکر سوارم بسازیم و آن‌را مدیریت کنیم؟چگونه در داکر سوارم سرویس بسازیم؟چگونه داکر سوارم را گسترش داده یا محدود کنیم؟شروع کار با دستورات مدیریتی داکر سوارم:در این مرحله می‌خوایم شروعی بر دستورات مدیریتی در داکر سوارم داشته باشیم.برای تحقق این امر از دستور زیر استفاده می‌کنیم:docker swarmدر پاسخ به این دستور یک لیست از گزینه‌ها و ابزار استفاده از داکر سوارم به ما نمایان می‌شود که از این قرار هستند:ca:این گزینه به شما مدیر یا root CA را نمایش می‌دهد.Init: این گزینه سوارم را در حالت مقدماتی قرار می‌دهد.join: با این گزینه می‌توایند داخل یک نود سوارم وارد شوید.join-token: این گزینه می‌توانید توکن‌های دسترسی به سوارم را مدیریت کنید.Leave:با این دستور می‌توانید سوارم را ترک کنید.unlock: با این دستور می‌توانید سوارم را از حالت قفل خارج کنید.unlock-key: با استفاده از دستور زیر می‌توانید کلید‌های باز کردن قفل سوارم را مدیریت کنید.update: با این گزینه می‌توانید سوارم خود را آپدیت کنید.شروع کردن و ساخت داکر کانتینر در داکر سوارم:به طور کلی می‌توانید به سادگی و با استفاده از دستوری شبیه دستور زیر داکر کانتینر مورد نظر خود را در داخل سوارم ساخته و وارد پروداکشن خود نمایید.docker service create --replicas 2 -p 80:80 --name serviceName nginxدستور بالا یک سرویس داکر سوارم ساخته که نامش serviceName می‌باشد؛ این سرویس ارائه‌دهنده یک nginx بوده و این سرویس از پورت 80 هاست ارائه دهنده در دسترس خواهد بود.نکته مهم و نا معمول در این دستور قسمت --replicas بوده که مختص سوارم می‌باشد و اینطور معنا می‌‌شود که تعداد ۲ کانینر از این نوع کانتینر موجود بساز تا در صورت از دسترس خارج شدن به سرعت کانتینر رزرو وارد چرخه شود.با استفاده از دستور زیر می‌توانیم لیست تمام سرویس‌های ساخته شده در داکر سوارم خود را داشته باشیم و با این لیست پروداکشن خود را بهتر مدیریت کنیم:docker service lsبا این دستور هم می‌توانیم وضعیت تمام کانتینرهای یک سرویس را در داکر سوارم مشاهده کنیم بدین صورت که بعد از قسمت ps اسم سرویس مورد نظر خود را می‌نویسیم:docker service ps serviceNameخروجی دستور بالا شبیه دستور docker ps بوده و می‌توانید مشاهدات دقیقی در این قسمت داشته باشید.چگونه سرویس‌های خود را گسترش داده یا کوچک کنیم؟در صورتی که نیاز به گسترش تعداد کانتینر‌های موجود در سرویس خود داشته باشید می‌توانید از دستور زیر از داخل ماشین داکر سوارم منیجر خود استفاده کنید:docker service scale serviceName=2دستور بالا این‌گونه کار می‌کند که باید به جای serviceName از سرویس مورد نظر خود در سوارم استفاده کنید و بعد از آن به جای عدد از تعداد ریپلیکای مورد نیاز خود در سوارم مورد نظر استفاده کنید.در دستور بالا سرویس  serviceName دارای ۲ ریپلیکا یا کانتینر خواهد شد.در نظر داشته باشید که دستور بالا ربطی به تعداد فعلی نداشته و هم برای افزایش هم کاهش تعداد کانتینر‌ها می‌توانیم از این دستور استفاده کنیم.در نظر داشته باشید که در دستور docker service ps به شما ارائه می‌دهد که هر داکر در داخل کدام نود در حال کار کردن است و شما می‌توانید با وارد شدن به آن نود و گرفتن دستور docker ps تمام اتفاقات داکر را با کانتینر مورد نظر استفاده کنید.در صورتی که نیاز بود تا توضیحات و اتفاقات داخل یک نود را در داکر سوارم خود مشاهده کنیم می‌توانیم از دستور زیر استفاده کنیم:docker node inspect nodenameکه در قسمت nodename اسم نود مورد نظر خود مثلا worker2 را وارد می‌کنیم.دستور inspect به شما اطلاعات کامل درباره نود مورد نظر داده و می‌توانید مشکلات خود را به خوبی در این قسمت یافته و فرآیند حل کردن مشکل را سریع‌تر کنید.آپدیت کردن و خاموش کردن نودهای داکر سوارم:آپدیت کردن سرویس‌ها بسیار راحت و در دسترس می‌باشد و شما می‌توانید با استفاده از دو دستور زیر قسمت‌های مختلف سوارم خود را آپدیت کنید:docker node update ...docker service update ...به طور مثال در صورتی که می‌خواهید یک نود را خاموش کنید می‌توانید از دستور زیر استفاده کنید.docker node update --availability drain worker1این دستور نود worker1 را در حالت خاموش قرار می‌دهد.یکی دیگر از آپیدت‌هایی که ممکن است بسیار در داخل داکر سوارم مورد نظر استفاده شود آپدیت کردن ایمیج یک سرویس می‌باشد که به طور کلی به صورت زیر اتفاق می‌افتد:docker service update --image &lt;imagename&gt;:&lt;version&gt; serviceNameاین دستور در داخل تمامی کانتینر‌های این سرویس یک آپدیت بر روی ایمیج‌های این کانتینر‌ها انجام می‌دهد و ایمیج معرفی شده را با ایمیج قبلی جایگزین می‌کند.با استفاده از دستور زیر هم می‌توانید یک سرویس را حذف کنید.docker service rm serviceNameبا دستور زیر می‌توانید سوارم خود را ترک کنیدdocker swarm leaveدر نظر داشته باشید که بعد از خارج شدن از سوارم حالت نود به down تغییر می‌کند.همچنین برای نگهداشتن یک نود می‌توانید از دستور:docker-machine stop machinNameاستفاده کنید.همچنین برای حذف کردن یک نود می‌توانید از دستور زیر استفاده کنید:docker-machine rm machinNameلینک زیر یک آموزش به زبان انگلیسی درباره داکر سوارم می‌باشد که می‌توانید برای کسب اطلاعات بیشتر به این آموزش رجوع کنید:https://rominirani.com/docker-swarm-tutorial-b67470cf8872می‌توانید نظرات و پیشنهادات خود را برای ادامه این مقاله و همچنین مقاله‌های دیگر در کامنت‌ها یا ایمیل s.m.javadi001@gmail.com با بنده در میان بگذارید.با تشکر از شما که امروز در بررسی اولیه و نصب داکر سوارم با من همراه بودید.</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Thu, 27 May 2021 15:11:17 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه با داکر کار کنیم؟ - داکر سوارم - ۱</title>
                <link>https://virgool.io/@smj/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A8%D8%A7-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%A9%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-%D8%AF%D8%A7%DA%A9%D8%B1-%D8%B3%D9%88%D8%A7%D8%B1%D9%85-%DB%B1-qyfvqy606n7o</link>
                <description>سلام خدمت شما مخاطب گرامی که هر هفته با سری مقالات آموزش استفاده از داکر با من همراه بودید و در این مسیر من را همراهی کردید.در ششمین قسمت از مقالات آموزش استفاده از داکر با سراغ داکر سوارم رفته و توضیحات کلی و تکمیلی درباره دستورات نحوه استفاده و چیستی داکر سوارم با یکدیگر بحث می‌کنیم.در قسمت‌های قبلی با دستورات داکر، روش ساخت داکر فایل، ساخت داکر کامپوز فایل و استفاده از داکر کامپوز و چیستی داکر والیوم و استفاده از آن را با یکدیگر آموختیم و حالا نوبت آن است تا به قسمت دیگری از دنیای داکر به اسم داکر سوارم ورود پیدا کنیم.در نظر داشته باشید که این مقاله برای کسانی نوشته شده از که تا کنون تجربه‌ای از کارکردن با داکر نداشته و این سلسله مقالات اولین تجربه مواجهه آن‌ها با داکر می‌باشد به همین دلیل توضیحات اصولا سطحی و در دسترس بوده و گزینه‌های جانبی زیادی را بررسی نمی‌کنیم.در این مقاله خواهیم خواند:داکر سوارم چیست؟چگونه داکر سوارم را نصب کنیم؟چرا از داکر سوارم استفاده می‌کنیم؟توجه داشته باشید که این مقاله در دو قسمت تبیین شده و ادامه مقاله هفته آینده منتشر خواهد شد.داکر سوارم چیست؟داکر سوارم به یک سری از ماشین‌ها می‌گویند که داکر را با خود دارند و اجرا می‌کنند و به یک کلاستر الحاق می‌شوند.تصویر بالا مثالی از نحوه چینش و ساختمان داکر سوارم می‌باشد.یک نود در این مثال تبدیل به سوارم منیجر شده و چندین نود تبدیل به کارگران (worker)‌های آن سوارم منیجر خواهندشد.این ویژگی به ما این برتری را می‌دهد که با استفاده از منابع بسیار بالا داکر های خود را راه‌اندازی کنیم و از تنها یک ماشین تمام این کانتینرها را مورد بحث و بررسی و مدیریت قرار دهیم.این تصویر توضیح بیشتری درباره ساختمان داکر سوارم می‌باشد.در این مدل ارائه شده یک سرویس انجین ایکس وجود دارد؛ در این ساختار یک نود به عنوان سوارم منیجر یا مدیریت کننده سوارم معرفی شده و داکر کانتینرهایی با ایمیج nginx:latest در هر کدام از نود های این سوارم موجود می‌باشند.به طور کلی داکر سوارم ابزاری برای ارکستریشن داکرهاست که به ما سرویس بسیار در دسترس و سریع و یک پارچه‌ای را ارائه می‌کند.به طور مثال شما فکر کنید که در سیستم خود ۱۰۰ عدد کانتینر وجود دارد و شما باید برای مدیریت این ۱۰۰ داکر کانتینر یک سری فعالیت‌ها انجام‌دهیم که تعدادی از این فعالیت‌ها بدین صورت می‌باشد:سلامت تمام کانتینر‌ها را بررسی کنیم.مطمئن شویم تمام کانتینرها در تمام سیستم‌ها در حالت روشن قرار دارند.بر مبنای لود سیستم کانتینر‌ها را کوچک و بزرگ کنیم.به تمام کانتینرها فایل‌های مورد نیاز را اضافه کرده، آن‌ها را آپدیت کرده و تغییر دهیم.در تعریف ارکستریتور چیست می‌توانیم اینطور بحث کنیم که یک ابزار مدیریت و کنترل کردن تعداد زیادی داکر کانتینر است که به عنوان یک سرویس و ابزار در دسترس قابل مشاهده می‌باشد.به طور کلی یک ارکستریتور تمام اعمال بالا را برای ما انجام داده و در صورت از دسترس خارج شدن یکی از کانتینر‌ها به سرعت کانتینر جدیدی را برای ارائه خدمت در مدار قرار می‌دهد به صورتی که اصلا اختلالی در سیستم احساس نخواهد شد.تعدادی از این ابزار ارکستریتور عبارت است از: Docker Swarm, Kubernetes, Apache Mesos‌حداقل موارد مورد نیاز برای نصب داکر سوارم:تنها ۲ چیز برای نصب داکر سوارم مورد نیاز است:داکر نصب شده با حداقل ورژن ۱.۱۳داکر ماشین.از مسیر زیر می‌توانید این موضوع را مشاهده کنید.https://docs.docker.com/machine/install-machine/#installing-machine-directlyدر داکر سوارم جالب آن است که تمام سیستم‌عامل‌های مک، ویندوز و لینوکس می‌توانند به عنوان ورکری از سوارم منیجر شناخته شوند.لینک پایین هم موضوعات بسیار مهمی برای شما دارد:https://docs.docker.com/get-started/part4/نصب داکر سوارم:برای نصب داکر سوارم باید چندین قدم برداریم که قدم‌ها به شرح زیر است:قدم اول:ابتدا باید داکر ماشینی بسازیم تا به عنوان نود داکر سوارم منیجر در کلاستر ما ایفای نقش کند.برای این کار ابتدا یک ماشین می‌سازیم و از یکی از دستورات زیر برای استفاده از این آپشن استفاده می‌کنیم:docker-machine create --driver hyperv manager1
docker-machine create --drive virtualbox manager1در این خط --driver مجازی ساز این اتفاق بوده و manager1 اسم نود سوار منیجر می‌باشد.اصولا دستور اول فقط ویندوز استفاده شده و برای دیگر سیستم‌عامل‌ها از دستور دوم استفاده می‌کنیم.در صورتی که در استفاده از این دستورات به مشکل خوردید مخصوصا اگر ارور:VBoxManage not found. Make Sure VirtualBox is installed and VBoxManager is in the pathیاdocker-machine:Error with pre-create check: &amp;quotexit status 126&amp;quotرا دریافت کردید از لینک زیر استفاده کنید.https://stackoverflow.com/questions/38696164/docker-machineerror-with-pre-create-check-exit-status-126و در ادامه دوباره یکی از دستورات بالا را استفاده کنید.بعد از این اتفاق داکر ماشین شما ساخته می‌شود و شما می‌توانید برای اتصال به این ماشین اس دستور زیر استفاده کنید:docker-machine env manager1در خط بالا منظور از manager1 اسم داکر ماشین سوارم منیجر می‌باشد.در این قدم ابتدا داکر ماشین‌های مورد نظر خود را ساختیم.قدم دوم:در قدم دوم باید لیستی از ماشین‌های ساخته‌شده خود با استفاده از دستور زیر تهیه کنیم تا از وجود و صحت این ماشین‌ها کاملا مطمئن شویم:docker-machine lsبا استفاده از دستور زیر هم می‌توانیم ip ماشین ساخته‌شده را به دست آوریم:docker-machine ip manager1در خط بالا منظور از manager1 اسم داکر ماشین سوارم منیجر می‌باشد.در ادامه ماشین‌های کارگر (worker) را می‌سازیم تا کلاستر داکر سوارم ما کامل شود.برای ساخت این ماشین‌ها از دستور زیر استفاده می‌کنیم.docker-machine create --driver virtualbox worker1
docker-machine create --driver virtualbox worker2
docker-machine create --driver virtualbox worker3
....در نظر داشته باشید که تعداد ورکر‌های داکر سوارم می‌تواند با توجه به خواسته شما هر تعداد ممکن باشد.قدم سوم:در این قدم می‌خواهیم به داکر ماشین‌های ایجاد شده متصل شویم.برای این اتفاق تنها کافیست از دستور زیر استفاده کنیم:docker-machine ssh manager1در خط بالا منظور از manager1 اسم داکر ماشین سوارم منیجر می‌باشد و شما می توانید ماشین مورد نظر خود را در این قسمت وارد کنید.قدم چهارم:در این قدم می‌خواهیم مقداردهی خود برای ماشین‌های ساخته شده را انجام دهیم؛ بدان معنا که نقش هر ماشین را مشخص کنیم.برای انجام این کار باید در داخل ماشین سوارم منیجر از این دستور استفاده کنیم:docker swarm init --advertise-addr IP_SWARM_MANAGERدر خط بالا IP_SWARM_MANAGER نشانگر آی پی ماشین سوارم منیجر می‌باشد.بعد از انجام این دستور یک خط با این مدل جواب در خروجی دستور به شما ارائه می‌گردد.docker swarm join --token TOKEN IP:PORTبرای اضافه کردن ورکر به این سوارم منیجر تنها کافیست این دستور را در ورکرهای خود اجرا کنید.در نظر داشته باشید که برای اضافه کردن یک منیجر به سوارم خود می‌توانید از دستور زیر استفاده کنید:docker swarm join-token managerکه در خروجی این دستور روش اضافه کردن منیجر به سوارم و همچنین توکن این اتفاق به شما نمایش خواهد داده شد.بعد از انجام فعالیت‌های بالا در داخل داکر سوارم منیجر می‌توانیم با دستور زیر حالت وجودی نودهای خود را بررسی کنیم:docker node lsقدم پنجم:با استفاده از دستور ارائه شده در هنگام معرفی سوارم منیجر که در بالا ذکر شد ورکر‌ها را به کلاستر داکر سوارم خود اضافه می‌کنیم.در صورتی که توکن مورد نیاز خود را ندارید می‌توانیم از دو  دستور زیر برای اضافه کردن ورکر و سوارم منیجر استفاده کنید:docker swarm join-token worker
docker swarm join-token managerقدم ششم:در داخل نود سوارم منیجر از دستورات استاندارد داکر برای انجام اتفاقات استفاده می‌کنیم.به طور مثال:docker infoدر نظر داشته باشید که در خروجی دستور بالا باید عبارت Swarm: active را مشاهده نمایید.با استفاده از دستور زیر هم می‌توانید گزینه‌های استفاده از swarm را در نود سوارم منیجر خود استفاده کنید.docker swarmتا بدینجای بحث یاد گرفتیم که داکر سوارم چیست و ما چگونه می‌توانیم آن‌را نصب کنیم.هفته بعد با قسمت دوم این مقاله در خدمت شما خواهیم بود.می‌توانید نظرات و پیشنهادات خود را برای ادامه این مقاله و همچنین مقاله‌های دیگر در کامنت‌ها یا ایمیل s.m.javadi001@gmail.com با بنده در میان بگذارید.با تشکر از شما که امروز در بررسی اولیه و نصب داکر سوارم با من همراه بودید.با تشکر از شرکت ابرآراز که فرصت ارائه این مقاله را در اختیار من گذاشت.</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sat, 08 May 2021 10:31:29 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه با داکر کار کنیم؟ - داکر کامپوز - ۱</title>
                <link>https://virgool.io/@smj/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A8%D8%A7-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%A9%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D8%B2-%DB%B1-p34dxypwslf3</link>
                <description>سلام عرض می‌کنم خدمت شما خواننده عزیز که وقتتون رو در اختیار من گذاشتید تا درباره داکر بحث کنیم.این مقاله چهارمین سری از سری مقالات آموزش داکر است و در این قسمت قصد داریم توضیحات تکمیلی و کلی درباره داکر کامپوز خدمت شما ارائه کنیم.در قسمت‌های قبل با کامند‌های کلی داکر، دستورات آن چگونگی کار کردن داکر و این مورد که چطور می‌توانیم یک داکر کانتینر را بسازیم بحث کردیم؛ در مقاله قبل هم درباره چگونگی نوشتن یک داکر فایل با یکدیگر تبادل اطلاعات کردیم و در این قسمت قرار است از یک داکر پای خود را فراتر گذاشته و وارد دنیای داکر کامپوزها شویم.در نظر داشته باشید که این مقاله برای کسانی ساخته شده است که تا کنون تجربه‌ای از کاربری داکر کامپوز و داکر نداشته‌اند و در حال آشنایی با این مفاهیم می‌باشند. به همین‌دلیل توضیحات سطحی بوده و آپشن‌های بسیار زیادی از داکر کامپوز و داکر مورد توضیح قرار نخواهند گرفت.در این مقاله خواهیم خواند:چرا داکر کامپوز و داکر کامپوز چگونه کار می‌کند؟چگونه داکر کامپوز را نصب کنیم؟چطور می‌توانیم یک فایل داکر کامپوز بسازیم؟چگونه از فایل داکر کامپوز استفاده کنیم تا یک سرویس بسازیم؟دستورات پایه‌ای داکر کامپوز چیست؟داکر کامپوز چیست و ما چرا به آن نیاز داریم؟داکر کامپوز به طور کلی یک ابزار کارآمد برای ساخت و همگام کردن چند کانتینر برای ساختن یک اپلیکیشن با داکر است و به شما کمک می‌کند تا میکروسرویس‌سازی کنید.در داکر کامپوز ما برای ساخت فایل آن از فرمت yaml استفاده می‌کنیم که یک فرمت مشهور بوده و به چشم ما آشناست برای همین کار کردن با آن زیاد مشکل‌ساز نیست.در داکر کامپوز می‌توانیم تنها با یک دستور تمام سرویس‌های خود را روشن کرده و خاموش کنیم:docker-compose updocker-compose downدلیل دیگر استفاده ما از داکر کامپوز آن است که در زمان مورد نیاز به راحتی قابلیت گسترش دادن نرم افزار و scaling وجود دارد و این فرآیند انرژی زیادی از زیرساخت نمی‌گیرد.چطور داکر کامپوز را نصب کنیم؟در نظر داشته باشید که داکر کامپوز در سیستم عامل های مک و ویندوز همراه داکر نصب می‌گردند و نیازی به دوباره نصب کردن این ابزار نیست اما در سیستم عامل لینوکس نیاز است تا داکر کامپوز را نصب کنیم.برای تست کردن این مورد که داکر کامپوز بر روی دستگاه شما نصب شده یا خیر از کامند زیر استفاده کنید:docker-compose -vدر صورتی که این کامند جوابی حاصل نشد شما باید داکر کامپوز را بر روی دستگاه خود نصب نمایید.دو راه برای نصب داکر کامپوز وجود دارد:راه اول:به گیت هاب داکر کامپوز با نشانی:  https://github.com/docker/compose/releases مراجعه کنید و با استفاده از کامند زیر داکر کامپوز را در دستگاه خود نصب کنید ( این دستور مخصوص سیستم عامل لینوکس Ubuntu 18.04 می‌باشد و برای بقیه سیستم‌عامل‌ها از سایت بالا دستور مورد نظر را پیدا کنید.)$ curl -L &amp;quothttps://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)&amp;quot -o /usr/local/bin/docker-compose

$ chmod +x /usr/local/bin/docker-composeراه دوم:با استفاده از دستور pip می‌توانید داکر کامپوز را به راحتی بر روی دستگاه خود نصب کنید:pip install -U docker-composeچگونه می‌توانیم یک فایل داکر کامپوز بسازیم؟شما می‌توانید در هر نقطه از دستگاه خود که علاقه دارید یک فایل به نام docker-compose.yml یا هر فایل دیگه ای با فرمت yaml بسازیم (در صورتی که نام فایل خود را تغییر دهید باید با سوییچ -f آن را به دستورات داکر کامپوز بشناسانید.)در ابتدایی‌ترین خط تنظیمات خود ورژن داکر کامپوز مورد استفاده خود را مطرح می‌کنیم و سپس باید سرویس خود را معرفی کنید (services) در ادامه نام سرویس‌های خود (web, database , ...)را در زیر این سرویس می‌نویسیم و در ذیل این سرویس معرفی شده ایمیجی که از روی آن باید سرویس ما ساخته شود را ارائه می‌کنیم که در مثال زیر ما از ایمیج nginx استفاده کرده‌ایم.در ادامه سرویس دوم را نیز معرفی کرده و برای این سرویس از ایمیج redis برای دیتابیس استفاده می‌کنیم.version: ‘3’
services:
    web:
        image: nginx
    database:
        image: redisدر این قسمت ما می‌توانیم با استفاده از دستور زیر درستی فایل خود را چک نماییم.docker-compose configدر صورتی که این کامند را اجرا کنید به طور کامل فایل شما بررسی شده و مشکل آن به شما ارائه گشته و حتی لینک تصحیح آن مشکل را نیز به شما ارائه می‌کند.در صورتی که اروری مشاهده نکنید می‌توانید از صحت فایل خود مطمئن باشید.چگونه فایل داکر کامپوز خود را اجرا کنیم؟برای این کار تنها لازم است که در جایی که فایل docker-compose.yaml خود را ساخته‌ایم از دستور زیر استفاده کنیم:docker-compose up -dدر این دستور فایل داکر کامپوز شما خوانده می‌شود، امیج‌های مورد نظر شما از داکر هاب گرفته می‌شوند و داکر‌های مورد نظر شما ساخته می‌شوند.بعد از اجرا شدن این دستور می‌توانید با استفاده از دستور زیر وضعیت داکرهای خود را مشاهده کنید.docker-compose psبا استفاده از این دستور هم می‌توانید تمام سرویس‌های ایجاد شده در داخل فایل  داکر کامپوز خود را از دسترس خارج کرده و خاموش کنید.docker-compose downدر نظر داشته باشید که این فایل داکر کامپوز ارائه شده خیلی سطحی بوده و عملا کار دقیقی انجام نمی‌دهد؛ در صورتی که نیاز به دیدن یک فایل نمونه از فایل داکر کامپوز nginx دارید می‌توانید از این لینک ./ و قسمت docker-compose تنظیمات را خوانده و مرور کنید.به طور مثال برای nginx:web:
    image: nginx
    volumes:
        - ./templates:/etc/nginx/templates
    ports:
        - &amp;quot8080:80&amp;quot
    environment:
        - NGINX_HOST=foobar.com
        - NGINX_PORT=80با تغییر دادن متغییر‌های این فایل می‌توانید سرویس مورد نظر خود برای nginx را در فایل داکر کامپوز ارائه نمایید.مثلا با توجه به این فایل ما فایل داکر کامپوز خود را به روش زیر تغییر می‌دهیم.version: ‘3’
services:
    web:
        image: nginx
        ports:
            - 9090:80/tcp
    database:
        image: redisبعد از این تغییر داکر کامپوز خود را روشن می‌کنیم و مشاهده می‌کنیم که سرویس nginx بر روی پورت ۹۰۹۰ دستگاه در حال سرویس‌دهی است.چگونه سرویس‌های خود را گسترش دهیم؟در حالت عادی در صورتی که از میکروسرویس استفاده کنید نیاز دارید در هر زمان هر کدام از سرویس‌های خود را گسترش دهید.با سوییچ --scale می‌توانید داکر کامپوز خود را در سرویس مورد نظر به تعداد مورد نظر گسترش دهید.docker-compose up -d --scale YOURSERVICE=NUMBERبه طور مثال دستور زیر ۴ کانتینر از سرویس دیتا بیس را می‌سازد.docker-compose up -d --scale database=4با تشکر از شما که تا بدینجای مقاله با من همراه بودید و در یاد گرفت داکر من را همراهی کردید.امیدوارم این مقاله برای شما مفیده بوده باشد؛ در هفته‌های آینده با آموزش‌های پیچیده و عمیق‌تر با موضوع داکر در خدمت شما خواهیم بود.با تشکر از شما و تیم ابر آراز که فرصت نوشتن این مقالات را در اختیار من گذاشتند.ابرآراز ارائه‌دهنده سرویس‌های تماما ابری بوده و می‌تواند نیاز‌های پردازشی و سروری شما را در سریع‌ترین زمان ممکن حل کند:arazcloud.com</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sun, 18 Apr 2021 12:38:58 +0430</pubDate>
            </item>
                    <item>
                <title>چطور با داکر کار کنیم؟ - داکر ایمیج قسمت - ۱</title>
                <link>https://virgool.io/@smj/%DA%86%D8%B7%D9%88%D8%B1-%D8%A8%D8%A7-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%A9%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-%D8%AF%D8%A7%DA%A9%D8%B1-%D8%A7%DB%8C%D9%85%DB%8C%D8%AC-%D9%82%D8%B3%D9%85%D8%AA-%DB%B1-xotgppqs065p</link>
                <description>با سلام و خسته نباشید خدمت شما همراهان گرامی.بعد از طی کردن دو مرحله از توضیح و معرفی دستورات داکر از سری آموزش‌های استفاده از داکر به قسمت سوم رسیدیم و در این قسمت قصد داریم تا بیشتر در استفاده از کانتینر غرق شویم و بهتر این ابزار را بیاموزیم؛ در ادامه این مقاله با من هم مسیر باشید تا الگوی چگونگی نوشتن یک داکر فایل در حد مبتدی را با همدیگر مرور نماییم.در این مقاله قصد داریم موضوعات زیر را بررسی کنیم:داکر فایل چیست؟چگوه یک داکر فایل بسازیم؟چگونه از یک داکر فایل یک ایمیج تهیه کنیم؟داکر فایل چیست؟به طور کلی داکر فایل یک فایل متنی است که با الگوی خاصی نوشته می‌شود تا با استفاده از آن بتوانیم ایمیج‌های داکر خود را بسازیم و در داکر‌های خود به صورت اتوماتیک استفاده کنیم تا درخواست ما از یک داکر برآورده شود.به طور کلی داکر ایمیج‌ها در اینترنت به وفور یافت می‌شوند حتی در سایت hub.docker.com تعداد خیلی زیادی ایمج وجود دارد که شما می‌توایم برای استفاده در برنامه‌ها و سرویس‌های خود از آن‌ها استفاده کنید؛ اما وقتی نیاز به یک ایمیج به خصوص دارید که آن‌را هیچ جای دیگر پیدا نمی‌کنید و برای خودتان باید ساخته شود از داکر فایل برای تنظیم این ایمیج استفاده می‌کنیم.چگوه یک داکر فایل بسازیم؟برای انجام این کار ما باید چند قدم برداریم که این قدم‌ها به صورت زیر می‌باشند:قدم اول:ابتدا یک فایل متنی با نام Dockerfile در مکان مورد نظر خود در سیستم‌عامل می‌سازیم.قدم دوم:وارد فایل خود شده و شروع به ادیت کردن آن می‌کنیم:اولین قسمتی که در این فایل مورد بحث قرار می‌گیرد قسمت FROM بوده که در این قسمت ما از یک ایمیج پایه داکر استفاده می‌کنیم و بر پایه آن تغییرات مورد نظر خود را تعیین می‌کنیم. (در نظر داشته باشید که اگر علاقه‌ای بر این داشتید که هیچ ایمیج پایه‌ای استفاده نشود می‌توانید در قسمت FROM از ایمیج scratch استفاده کنید.) در این آموزش ما برای شروع از ایمیج ubuntu استفاده می‌کنیم.در این قسمت ما می توانیم امضای خود را با قسمت MAINTAINER وارد کنیم بدین صورت که بعد از این قسمت هر چه نوشته شود نماد و معرفی کننده ما برای تنظیم و ادامه زندگی این داکر فایل و آپدیت کردن ایمج خواهد بود. به طور مثال: MAINTAINER smj &lt;s.m.javadi001@gmail.com&gt; در این قسمت ایمیل خود را وارد کردم تا در صورت وجود مشکل در استفاده کردن از این ایمیج راه ارتباطی بین من و مصرف کننده وجود داشته باشد.در این قسمت می‌توانیم با استفاده از دستور RUN یک دستور عادی لینوکس در داکر خود در هنگام اجرا استفاده کنیم به طور مثال:RUN apt-get updateبا استفاده از قسمت CMD هم می‌توانیم کامندی که نیاز است تا در هنگام ساخت داکر از آن استفاده شود را به ایمیج خود معرفی کنیم. الگوی نوشتاری CMD به طور زیر می‌باشد. به طور مثال: CMD [&quot;echo&quot;, &quot;&quot;Hello World! From my first docker image...&quot;]نکته: تفاوت قسمت RUN, CMD در آن است که RUN در هنگام کار کردن کانتینر انجام می‌شود و ربطی به لحظه ساخت کانتینر داکر ندارد؛ اما CMD تنها در لحظه ساختن داکر خارج از کانتینر اجرا می‌شود.در نظر داشته باشید که تعداد بسیار زیادی قسمت دیگر ممکن از در داکر فایل وجود داشته باشد که در زیر به تعدادی از آن‌ها اشاره می‌کنیم و در مقالات بعد به توضیح کامل استفاده از آن‌ها می‌پردازیم:EXPOSE:با استفاده از این قسمت در کانتینر می‌توانیم یک پورت ارتباطی شبکه داخلی داکر جهت شنود و ارتباط با داکر در هنگام استفاده شدن را معرفی نماییم.ENV:با استفاده از این قسمت متغییر‌های تعیین شده در ایمیج را می‌توانیم مدیریت کرده و با توجه به خواسته‌های خود ایمیج جدید را تنظیم کنیم.ADD:با استفاده از این قسمت می‌توانیم فایل جدیدی را به کانتینر از داخل دستگاه اضافه کنیم.COPY:با استفاده از این قسمت هم می‌توانیم فایل یا پوشه جدیدی را به کانتینر خود از داخل دستگاه اضافه کنیم. تنها در نظر داشته باشید که تمامی کپی‌های این قسمت با یوزر root صورت گرفته و باید فایل دسترسی مدیرتی داشته باشد.ENTRYPOINT:با استفاده از این قسمت می‌توانیم یک کانتینر که به عنوان یک ابزار اجرا شونده و اجرایی استفاده می‌شود را تنظیم کنیم.VOLUME:با استفاده از این قسمت می‌توانی یک مکان برای مانت کردن فایل های خود برای این کانتینر و کانتینر‌های دیگر و شیر کردن اطلاعات بین تمامشان استفاده کنیم.USER:با استفاده از این قسمت می‌توانیم یوزر مورد نظری برای اجرای قسمت‌های RUN, CMD, ENTRYPOINT در نظر بگیریمWORKDIR:با استفاده از این قسمت پوشه مورد نظر خود برای انجام عملیات را تعیین می‌کنیم.ARG:با استفاده از این قسمت یک سری متغییرهایی تعیین می‌کنیم که در زمان بیلد استفاده می‌شوند.ONBUILD:با استفاده از این قسمت می‌توانیم یک سری ابزار برای وقتی که این ایمیج پایه یک ایمیج دیگر قرار می‌گیرد را تنظیم کنیم.STOPSIGNAL:با استفاده از این قسمت می‌توانیم حالتی برای پایان یافتن ارتباط بین سیستم عامل و این کانتینر ایجاد کرده تا از دسترس خارج شود.LABLE:توضیحاتی درباره ایمیج شما در عنوان key/value اضافه می‌کند.تا به اینجای کار ما یک داکر فایل با الگو زیر ساخته‌ایم:FROM ubuntu
MAINTAINER smj &lt;s.m.javadi001@gmail.com&gt;
RUN apt-get update
CMD [&amp;quotecho&amp;quot, &amp;quotHello World! From my first docker image...&amp;quot]حال از فایل خود خارج شده و برای درک بهتر عملیات انجام شده یک بار داکر فایل خود را تست می‌کنیم.با استفاده از دستورات Build داکر می‌توانیم از داکر فایل خود ایمیج مورد نظر را بسازیم؛ تنها کاری که نیاز است انجام شود آن است که وارد جایی که داکر فایل خود را ساخته‌ایم بشویم و در اینجا از یکی از دستورات زیر استفاده کنیم:docker build .
docker build -t &lt;&lt;IMAGENAME:TAG&gt;&gt; .با استفاده از کامند زیر داکر ایمیج شما ساخته می‌شود و شما می‌توانید تمام قسمت به قسمت اتفاقات هنگام ساختن این داکر فایل را مشاهده کنید.حال نوبت آن است که با استفاده از دستور زیر داکر ایمیج ایجاد شده را مشاهده کنیم:docker imagesدر این قسمت ایمیج خود را پیدا می‌کنیم و برای ران کردن ایمیج خود از دستور زیر استفاده می‌کنیم:docker run &lt;&lt;IMAGENAME:TAG&gt;&gt;بعد از اجرای این دستور می‌توانیم اتفاق انجام شده را مشاهده کنیم.با تشکر از شما که تا به اینجای کار در کنار ما بودید.امیدوارم این مقاله برای شما مفیده بوده باشد؛ در هفته‌های آینده با آموزش‌های پیچیده و عمیق‌تر با موضوع داکر در خدمت شما خواهیم بود.با تشکر از شما و تیم ابرآراز که فرصت نوشتن این مقالات را در اختیار من گذاشتند.ابرآراز ارائه‌دهنده سرویس‌های تماما ابری بوده و می‌تواند نیاز‌های پردازشی و سروری شما را در سریع‌ترین زمان ممکن حل کند:arazcloud.com</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sat, 10 Apr 2021 15:31:46 +0430</pubDate>
            </item>
                    <item>
                <title>با هم ببینیم داکر چجوریه؟ - قسمت ۲</title>
                <link>https://virgool.io/@smj/%D8%A8%D8%A7-%D9%87%D9%85-%D8%A8%D8%A8%DB%8C%D9%86%DB%8C%D9%85-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%86%D8%AC%D9%88%D8%B1%DB%8C%D9%87-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-kkkkp1hd32kg</link>
                <description>با سلام و خسته نباشید خدمت شما.به دومین قدم از مسیر آموزش داکر خوش آمدید.در قدم پیش با هم درباره الگوی کلی دستورات داکر و گزینه‌های و همچنین دستورات مدیریتی داکر حرف زدیم؛ این مقاله بیشتر به دستورات داکر توجه می‌کنیم و در آخر یک سری دستورات پایه‌ را با هم بررسی می‌کنیم.بعد از قسمت‌ گزینه‌ها و دستورات مدیرتی به قسمت دستورات کلی و کنترلی داکر می‌رسیم و قصد داریم شروع به یادگیری این قسمت ها بکنیم.دستورات:Attach:با استفاده از دستور زیر می‌توانیم ورودی، خروجی و ارور ها را به یک کانتینر در حال استفاده اضافه کنیم.Build:با این دستور داکر می‌توانیم از یک داکر فایل Dockerfile یک ایمیج بسازیم.Commit:با این دستور داکر می‌توانیم یک ایمیج از تغییرات کانتینر دریافت کنیم.Cp:با این دستور داکر می‌توانیم فایل ها  را بین یک کانتینر و سیستم پایه این کانتینر جا به جا کنیم.Create:با این دستور داکر می‌توانیم یک کانتینر جدید بسازیم.Diffبا استفاده از این دستور می‌توانیم تفاوت توضیحات یا مخازن یک کانتینر را در فایل سیستم موجود آن بررسی نمایم.Events:با این دستور می‌توانیم در لحظه رویداد‌های داخل کانتینر‌ها را مشاهده نماییم.Exec:این دستور داکر برای اجرا دستوران در کانتینر در حال اجرا استفاده می‌شود.Export:دستور اکسپورت به ما کمک می‌کند تا با استفاده از دستورات داکر از فایل‌های سیستمی یک داکر به صورت فشرده و tar خروجی تهیه کنیم.History:با این دستور می‌توانیم پیشینه یک ایمج داکر را مشاهده کنیم.Images:با استفاده از این دستور داکر می‌توانیم لیست داکر ایمیج‌های موجود در سرور را ببینیم.Import:با استفاده از این دستور داکر می‌توانیم با استفاده از یک tarball محتوا ها را به یک ایمیج فایل سیستم اضافه می‌کند.Info:با استفاده از این دستور تمام اطلاعات و تنظیمات داکر سیستم خود را می‌توانید مشاهده کنید.Inspect:با استفاده از این دستور داکر شما می‌توانید اطلاعات لایه پایین‌تر داکر را مشاهده کنید.Kill:با استفاده از این دستور داکر می‌توانیم یک کانتینر را به طور کامل بکشیم ( ابتدا داکر را متوقف کرده و سپس حذف می‌کند)Load:با استفاده از این دستور داکر می‌توانیم با استفاده از یک فایل tar یک داکر ایمیج را در سیستم خود بارگذاری کنیم.Login:با استفاده از این دستور می‌توانیم به داکر ریجستری مورد نظر خود را اضافه نماییم.Logout:با استفاده از این دستور از داکر ریجستری‌ای که در داخل آن خود را ثبت کرده ایم خارج می‌شویم.Logs:با استفاده از این دستور تمام لاگ ها و توضیحات سیستمی داکر را می‌توان مشاهده کرد و جهت عیب‌یابی به شدت و با قدرت بالا استفاده می‌شود.Pause:با استفاده از این دستور داکر می‌توانیم تمام فعالیت‌های داخلی داکر را متوقف کنیم. در نظر داشته باشید که این دستور برای stop کردن و به طور کل خاموش کردن داکر نمی‌باشد بلکه داکر را به حالت ایستاده و غیر فعال در می‌اورد.Port:با استفاده از این دستور داکر می‌توانیم لیستی از پورت های تعیین شده یا انتقال یافته را داشته باشیم.Ps:با استفاده از این دستور می‌توانیم لیستی از تمام کانتینر‌های داخل سرور خود به دست آوریم با تمام اطلاعات ظاهری.Pull:با استفاده از دستور داکر زیر یک ایمیج از داکر مورد نظر خود را از داخل داکر ریجستری مورد نظر  پیدا کرده و به سرور خود اضافه می‌کنیم.Push:با استفاده از این دستور می‌توانیم ایمیج مورد نظر خود را که در سرور خود به وجود آورده ایم در داخل داکر ریجستری‌ای که از قبل ثبت کرده‌ایم نگهداری کنیم و آن‌را آپلود نماییم.Rename:با استفاده از دستور داکر زیر می‌توانیم نام داکر مورد نظر خود را تغییر دهیم.Restart:با استفاده از دستور داکر رو به رو می‌توانیم داکر خود را روشن و خاموش نماییم. ( ری استارت انجام دهیم)Rm:با استفاده از این دستور داکر می‌توانیم داکر متوقف شده خود را به طور کلی حذف نماییم.Rmi:با استفاده از دستور داکر زیر می‌توانیم ایمیج داکر موجود بر روی سرور خود را حذف کنیم.Run:با استفاده از دستور زیر می‌توانیم دستور خود را در یک کانتینر جدید اجرا نماییم.Save:با استفاده این دستور داکر می‌توانیم از یک داکر ایمیج داخل سرور خود یک فایل tar ساخته تا آن را با استفاده از load در یک جای دیگر جایگذاری کنیم.Search:با استفاده از این دستور داکر می‌توانیم در داخل داکر‌هاب برای ایمیج مورد نظر خود جستجو کرده تا مقصد مورد نظر را پیدا نماییم.Start:با استفاده از این دستور داکر می‌توانیم کانتینر‌های در حالت متوقف قرار گرفته یا خارج شده را دوباره روشن کنیم.Stats:با استفاده این دستور داکر می‌توانیم اطلاعات کلی از می‌زان استفاده از شبکه، منابع و حافظه هر کدام از داکر ها را به صورت لحظه ای و دقیق مشاهده کنیم.Stop:با دستور زیر می‌توانیم داکر‌های مورد نظر خود را متوقف نماییم.Tag:با استفاده از این دستور داکر می‌توانیم یک تگ هدف برای ایمیج ها تولید کرده تا به هسته ایمیج ها اضافه شود.Top:با استفاده از این دستور می توانیم پردازش های درحال انجام در داکر خود را مشاهده کنید.Unpause:با استفاده از این دستور می توانید کانتینر خود را از حالت متوقف خارج نمایید.Update:با استفاده از دستور داکر می‌توانید تنظیمات کانتینر خود را به روز کنید.Versionبا استفاده از دستور داکر بالا هم می‌توانید ورژن داکر و کانتینر خود را مشاهده کنید.Wait:و در نهایت با این دستور می‌توانید قسمتی از داکر ها را نگه داشته و کد خروج آنها را مشاهده کنید.امیدوارم مطالب بالا به شما اطلاعات خوبی را ارائه کرده باشید.در ادامه این دوره چند مقاله‌ای با من همراه باشید تا بتوانیم به بهترین‌شکل ممکن کنار یکدیگر داکر را یاد گرفته و پیشرفت کنیم.هر هفته منتظر شما هستم.با تشکر از شما که زمان را در اختیار ما گذاشته و مقاله من را مطالعه کردید.با تشکر از تیم ابرآراز که فرصت نوشتن این مطالب رو به من دادند.ابرآراز ارائه دهنده پلتفرم‌های ابریه که می‌تونید از سرویس‌های ابریشون برای خودتون استفاده کنید و لذتش رو ببرید.لینک: yun.ir/ez5x39</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sun, 21 Mar 2021 20:55:25 +0330</pubDate>
            </item>
                    <item>
                <title>با هم ببینیم داکر چطوریه</title>
                <link>https://virgool.io/@smj/%D8%A8%D8%A7-%D9%87%D9%85-%D8%A8%D8%A8%DB%8C%D9%86%DB%8C%D9%85-%D8%AF%D8%A7%DA%A9%D8%B1-%DA%86%D8%B7%D9%88%D8%B1%DB%8C%D9%87-k3sjxbssb6mv</link>
                <description>با سلام و خسته نباشید خدمت شما عزیزان.در مقاله‌های گذشته موضوعاتی همچون داکر چیست، داکر چگونه کار می‌کند و آموزش نصب داکر را با همدیگر گذراندیم.در این مقاله قصد داریم تا راهنمایی کلی در جهت استفاده از کامند لاین داکر را با همدیگر مرور کنیم:به طور کلی داکر از نظر یک سیستم به عنوان یک پردازش استفاده می‌شود؛ شاید این تعریف، تعریف کامل و حتی صحیح برای داکر نباشد ولی تجربه همیشه نشان داده است که این دید کلی به داکرها در سطوح پایین‌تر درک و کاربرد داکرها را بسیار ملموس‌تر کرده است.عناصری که بر پایه داکر ساخته می‌شوند هیچ ریشه‌ای در داکر موجود نداشته و تنها به عنوان یک پردازش قابل ری‌استارت عمل می‌کنند: بدین صورت که هر داکر شبکه جداگانه و حافظه متصل به هاست خود را داراست و بعد از کشته شدن و جایگزینی با داکر جدید تنها این دو ویژگی آن به علاوه دانش پردازش داکر قبلی که به اصطلاح داکر ایمیج گفته می‌شود را به ارث می‌برد و برای این که به ادامه سیستم کمک کند تقریبا در مقابل دیباگ کردن مسائل بر روی سیستم‌عامل زمان ناچیزی به خود اختصاص می‌دهند چون هیچ تعمیری بر روی آن‌ها صورت نگرفته و در حقیقت کامل از بین رفته و یک پردازش جدید با آن جایگزین می‌کنیم. این‌گونه است که بیشترین آورده و سطح دسترسی را به ما هدیه می‌کند.در دستورات داکر؛ یک الگو کلی برای ارائه هر دستور وجود دارد که بدین صورت نوشته می‌شود:docker [OPTIONS] COMMANDدر این خط اینگونه نوشته می‌شود که دستوری با سر شاخه داکر با گزینه‌های مشخص یک کار مشخص را انجام دهند.در این مقاله ابتدا قسمت گزینه‌ها، سپس کامند‌ها مطرح می‌شوند و بقیه مسائل در بقیه مقالات درباره‌شان بحث خواهد شد.گزینه‌ها:--config:در این گزینه ما فایل تنظیماتی که داکر از روی آن اجرا می‌شود برای دستور مورد نظر را انتخاب می‌کنیم که به صورت عادی در قسمت ~/.docker ذخیره می‌شود.--context, -C:نام روش ارتباطی سرور با قسمت داکر دیمن بوده که برای متغیرهای داخلی، فایل‌های وارد شده به و دیگر متغییر‌های پیش نیاز به صورت خودکار تنظیم می‌شود.--debug, -D:در صورتی که نیاز به عیب‌یابی در داکر حس می‌شود یا نیاز داریم که ارور لاگ داکر را ببینیم از این گزینه استفاده می‌کنیم.--host, -H:در این گزینه لیست دیمن سوکت‌های مورد نیاز برای اتصال به داکر را می‌آوریم.--log-level:در این گزینه می‌توانیم میزان نیاز به لاگ سرور را مشخص نماییم. بدین صورت که بعد از این گزینه کلمات &quot;debug&quot;|&quot;info&quot;|&quot;warn&quot;|&quot;error&quot;|&quot;fatal&quot; را می‌نویسیم تا لاگ مورد نظر به ما نمایش داده شود. این میزان به طور عادی بر روی info تنظیم شده است.--tls:با این گزینه می توانیم از tls استفاده کنیم.--tlscacert:بعد از این گزینه، کلید مورد اعتماد رمزگذاری را بر پایه CA وارد می‌کنیم.--tlscert:در این قسمت مجوز tls را به آن ارائه می‌کنیم.--tlskey:در این قسمت هم کلید tls را به آن وارد می‌کنیم.--tlsverify:حال نوبت آن است تا مجوز را تصدیق نماییم.--version:با استفاده از این گزینه، ورژن های اجزای کانتینری مخصوصا داکر در سیستم شما به نمایش گذاشته می‌شود.دستور های مدیریت:appبا این دستور اپلیکیشن داکر به نمایش خواهد آمدbuilder با این دستور می‌توانیم مدیریتی بر روی بیلد ها داشته باشیمbuildxبا این دستور می‌توانیم با استفاده از ابزار ‌BuildKit داکر بسازیم.configبا این دستور می‌توانیم تنظیمات داکر را مدیریت کنیمcontainerبا این دستور می‌توانیم کانتینر‌های داکر را مدیریت کنیمcontext:با این دستور می‌توانیم روش ارتباطی یا دستور زبانی داکر را مدیریت کنیمimageبا این دستور می‌توانیم image های داکر ها را مدیریت کنیم.manifestبا این دستور می‌توانیم منیفست های داکر ایمج ها را دیده، مدیریت کرده و لیست کنیم.networkبه وسیله این دستور می‌توانیم شبکه داخلی داکر ها را مدیریت کنیمnodeبه وسیله این دستور می‌تواننیم در docker swarm، نود ها را مدیریت کنیم.pluginبا این دستور می‌توانیم افزونه‌ها را مدیریت کنیم.secretبا این دستور می‌تواین Docker secret ها را مدیریت کنیمserviceبا این دستور می‌توانیم سرویس‌ها را مدیریت کنیمstackبا این دستور می‌توانیم داکر استک‌ها را مدیریت کنیم.swarmبا این دستور می‌توانیم swarm ها را مدیریت کنیم.systemبا همین دستور می‌توانیم سیستم داکر را مدیریت نماییم.trustبا این دستور می‌توانیم به ایمیج های داکر‌ها اعتماد کنیم.volumeبا این دستور می توانیم فایل‌ها و موارد نگه‌داری شده در حافظه‌ داکر را مدیریت کنیم.ابر‌آراز به عنوان یکی از ارائه دهندگان زیرساخت‌های ابری در زمینه گسترش رایانش ابری خود بسیار سعی بر این دارد که سرویس‌های خود را با استفاده از تکنولوژی داکر و اورکستریتور‌های مربوط ارائه کند تا سرویس برای شما عزیزان بسیار در دسترس باشد هم در هنگام از دسترس خارج شدن سرویس سرعت برق‌آسایی در بازگشت به سرویس داشته باشیم تا شما عزیزان کمترین هزینه را برای مسائل فنی در کسب‌و‌کارهای خود بپردازید.تا بدینجای مقاله ما صرفا دستورات را دیده و با آن‌ها آشنایی اولیه پیدا کردیم.در ادامه مقالات با دیگر آموزش ها و امکاناتی که در استفاده از داکر با آن روبه‌رو می‌شویم آشنا خواهید شد و یاد خواهیم گرفت چگونه پردازش‌های خود را سریع‌تر دقیق‌تر و در دسترس‌تر انجام دهیم.مرسی از شما که وقت گذاشتید و این مقاله‌را مطالعه کردید.با تشکر از تیم ابرآراز که فرصت نوشتن این مطالب رو به من دادند.ابرآراز ارائه دهنده پلتفرم‌های ابریه که می‌تونید از سرویس‌های ابریشون برای خودتون استفاده کنید و لذتش رو ببرید.لینک: yun.ir/ez5x39</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Thu, 18 Mar 2021 12:18:45 +0330</pubDate>
            </item>
                    <item>
                <title>راحت‌ترین روش نصب kubernetes</title>
                <link>https://virgool.io/wptips/%D8%B1%D8%A7%D8%AD%D8%AA-%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D9%86%D8%B5%D8%A8-kubernetes-llp8l2jud0m5</link>
                <description>مقدمه:امروز قصد داریم تا یکی از راحت‌ترین راه‌های ممکن برای ساخت یک کلاستر kubernetes را به شما توضیح دهیم.در این روش با استفاده از یکی از سریع‌ترین و بهترین ابزارهای نصب k8s که توسط تیم kubernetes ارائه شده است می‌توانیم در سریع‌ترین زمان ممکن یک کلاستر k8s آماده به کار داشته باشیم.اسم این ابزار kubespray بوده و با استفاده از آن می‌توانیم ابزار‌های بسیار زیادی در k8s را بعد از نصب در اختیار داشته باشیم.در ادامه به توضیح کلی kubespray می‌پردازیم.ابزار Kubespray چیست؟به تعریف کلی kubespray را می‌توان ترکیبی از ابزار‌های انسیبل دانست که بعد از تنظیم و اجرا کلاستر k8s مورد نظر را به ما ارائه می‌کند.مزیت‌های kubespray:این روش مزیت‌های بسیاری دارد، از جمله ‌آن‌ها می‌توان سرعت، راحتی در نصب، ارائه ابزار جهت تعمیر و نگهداری کلاستر و نصب ابزار‌های اولیه و پایه استفاده از k8s بعد از اتمام کار در صورتی که قبل از نصب تنظیم شده باشد، نصب شده و آماده استفاده است.اجزای پشتیبانی شده توسط kubespray:اجزای زیر در صورتی که قبل از نصب در داخل فایل‌های تنظیمات آن‌را تنظیم کرده باشید؛ بعد از نصب در دسترس خواهند بود:هسته:KubernetesEtcdDockerContainerdCri-oشبکه:cni-pluginsCalicoCanalCiliumFlanneldKube-ovnMultusOvn4nfvWeaveبرنامه‌های اجرایی:AmbassadorCephfs-provisionerRbd-provisionerCert-managerCorednsIngress-nginsپیش‌نیاز‌های نصب kubernetes با kubespray:حداقل پیش‌نیاز‌های مورد نیاز برای نصب kubernetes توسط kubespray به شرح زیر می‌باشند:نصب برنامه‌های Ansible v2.9.x و Jinja 2.11+ و python-netaddrنصب python-pip و python3-pipنصب docker v19 و docker-composeقابلیت پشتیبانی از IPv4 Forwardingکیوب اسپری را به عنوان کاربر root اجرا کنید.حداقل پیش‌نیاز‌های سخت‌افزاری:۱.۵ گیگابایت فضای ذخیره‌سازی در مستر۱ گیگابایت فضای ذخیره‌سازی در هر سرورشروع به نصب:ابتدا باید پکیج‌های معرفی شده در قسمت با‌لا را بر روی سرور خود نصب کنید؛ به‌طور مثال برای سرور ubuntu 18.04:apt-get install --no-install-recommends -y python ca-certificates git make jq nmap curl uuid-runtime bc python3-pip python-pipحال نوبت آن است که Ansible را نصب کنیم:apt update -y
apt install software-properties-common -y
apt-add-repository --yes --update ppa:ansible/ansible
apt install ansible -yدر این قسمت داکر را با ورژنی که مطابقت با فرآیند نصب ما دارند نصب می‌کنیم.apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository &amp;quotdeb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&amp;quot
apt-get update -y
apt-get install docker-ce=5:19.03.15~3-0~ubuntu-bionic docker-ce-cli=5:19.03.15~3-0~ubuntu-bionic containerd.io=1.3.9-1سرویس Docker را فعال می‌کنیم:systemctl start docker
systemctl enable dockerبا دو دستور زیر ابتدا IP Forwarding را فعال کرده و سپس حافظه Swap را غیرفعال می‌کنیم.echo &amp;quotnet.ipv4.ip_forward=1&amp;quot &gt;&gt; /etc/sysctl.conf
swapoff -aبا دستور زیر یک کلید rsa می‌سازیم تا امکان استفاده از ssh بدون نیاز به رمز عبور را برای Ansible فراهم سازیم.ssh-keygenو با دستور زیر کلید خود را در تمام سرور‌ها به صورت یک به یک قرار می‌دهیم. ( به جای &lt;server name&gt; از آیپی هر سرور برای انتقال کلید به آن استفاده کنید.ssh-copy-id root@&lt;server name&gt;وقتی تا به اینجا رسیدیم تقریبا پیش‌نیازهای نصب انجام شده و نوبت دریافت پروژه از ‌Github می‌باشد.git clone https://github.com/kubernetes-incubator/kubespray.gitو وارد پوشه kubespray به وجود آمده می‌شویم:cd kubesprayدر این مرحله باید تمام پیش‌نیاز‌های باقی مانده با استفاده از دستور زیر نصب شده یا چک شوند:sudo pip install -r requirements.txtسپس برای تنظیم کاربر مورد استفاده برای انجام فرآیند نصب kubernetes از دستور زیر استفاده می‌کنیم:echo &amp;quotremote_user=ubuntu&amp;quot &gt;&gt; ansible.cfgدر این مرحله ابتدا از پوشه اصلی نصب یک رونوشت تهیه می‌کنیم تا در صورتی که مشکلی در تنظیمات پیش‌آمد بتوانیم از فایل‌های دست نخورده منبع تهیه کرده و مشکل را برطرف کنیم:cp -rfp inventory/sample inventory/prodبا دستور زیر فایل hosts.ini که در آن آدرس سرور‌هایی که به کلاستر اضافه می‌شوند نوشته می‌شود و از آن‌جا در دسترس قرار می‌گیرند ساخته می‌شود. (به جای IPهای داخل دستور از IPهای سرور‌های خود استفاده کنید.)CONFIG_FILE=inventory/prod/hosts.ini python3 contrib/inventory_builder/inventory.py 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104بعد از استفاده از دستور بالا یک فایل با نام inventory/prod/hosts.ini ساخته می‌شود و این فایل به‌این صورت می‌باشد:[all]
node1    ansible_host=192.168.1.101 ip=192.168.1.101
node2    ansible_host=192.168.1.102 ip=192.168.1.102
node3    ansible_host=192.168.1.103 ip=192.168.1.103
node4    ansible_host=192.168.1.104 ip=192.168.1.104

[kube-master]
node1
node2

[kube-node]
node1
node2
node3
node4

[etcd]
node1
node2
node3

[k8s-cluster:children]
kube-node
kube-master

[calico-rr]

[vault]
node1
node2
node3تا اینجا فرآیند نصب به نیمه خود رسیده است.در این مرحله خود شما باید در داخل آدرس inventory/prod/group_vars/ و هر دو پوشه all و k8s-cluster و تمام فایل‌های داخل را مطالعه کرده و با توجه به نیاز خود، فرآیند نصب را شخصی‌سازی کرده و ابزار‌های خود را اضافه، تغییر یا غیرفعال کنید.تنها قسمت باقی مانده از فرآیند نصب؛ دستور زیر است که ansible را فعال کرده و وارد مرحله نصب می‌شود؛ این مرحله تقریبا ۳۰ دقیقه تا یک ساعت (حتی بیشتر) زمان میبرد.ansible-playbook -b -v -i inventory/prod/hosts.ini cluster.yml -vvvvدر پایان بعد از اتمام کار موفق انسیبل می‌توانید با دستور زیر از صحت و سلامت کلاستر خود اطمینان حاصل فرمایید:kubectl get nodesامیدوارم اطلاعات منتشر شده در این مقاله توانسته باشد کمکی به شما کرده باشد.با تشکر از تیم ابر آراز که زمان لازم برای جمع آوری این مطالب را در اختیار من قرار داد.در صورتی که نیاز به سرویس تحت پلتفرم ابری داشتید؛ می‌توانید سرویس‌هایی با قیمت و کیفیت مناسب را از ما تهیه نمایید.آدرس ما: arazcloud.com</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Wed, 24 Feb 2021 17:18:46 +0330</pubDate>
            </item>
                    <item>
                <title>چطور با SElinux رفتار کنیم؟</title>
                <link>https://virgool.io/@smj/%DA%86%D8%B7%D9%88%D8%B1-%D8%A8%D8%A7-selinux-%D8%B1%D9%81%D8%AA%D8%A7%D8%B1-%DA%A9%D9%86%DB%8C%D9%85-q2t9wcs0jg5m</link>
                <description>مقدمه:در این مقاله قصد داریم تا درباره چیستی و چگونگی استفاده از selinux و پیکربندی آن را مورد بررسی و تحقیق قرار دهیم؛ در بسیاری از استفاده کنندگان از این لینوکس مرسوم است که به محض اولین مواجهه با selinux، آن‌را از کار انداخته و به ادامه فعالیت خود می‌پردازند که این قضیه مضرات بسیاری را پیرامون خود نساخته و قابل انجام می‌باشد.Selinux چیست ؟سلینوکس به طور کلی تعریف کننده و مدیریت کننده دسترسی ها در برنامه‌ها، پردازش‌ها و فایل‌های سیستمی شما در لینوکس می‌باشد که امنیت اطلاعات و پردازش را برای شما به ارمغان می‌آورد.بدین صورت که مدیریت این موضوع که چه زمانی چه چیزی به کدام یک از قسمت‌های دستگاه دسترسی داشته باشد را در خود نگاه داشته و مانع آن می‌شود که دسترسی‌های خارج از برنامه رخ دهد یا این که مشکلات امنیتی و بد افزار محور را تا حد خوبی محدود می‌کند؛ عمل بالا را به این صورت انجام می‌دهد که هر برنامه یا پردازشی که نیاز دسترسی به هر قسمتی را به عنوان یک درخواست به selinux ارائه کرده و این قسمت از سیستم با استفاده از و قسمت امنیت دستگاه لینوکسی با استفاده از خط مشی‌های امنیتی که در دیتابیس سلینوکس نگهداری می‌شود این اجازه را داده؛ یا آن‌را منع می‌کند.چگونه selinux خود را تنظیم کنیم:به طور کلی دو راه برای تنظیم و استفاده از selinux وجود دارد:راه اول آنکه از ابزار پیکربندی سطح امنیتی دستگاه لینوکسی خود استفاده کنید.دوم آنکه به صورت دستی آن‌را تنظیم نماییم.به طور کلی در فایل:/etc/sysconfig/selinuxمی‌توانیم تنظیمات اولیه سلینوکس را انجام دهیم؛ بدین صورت که در این فایل قسمتی با الگو:SELINUX=&lt;enforcing|permissive|disabled&gt;وجود دارد که هر کدام از موارد رو به روی مساوی قابل وجود می‌باشند؛ در ادامه به بررسی و توضیح هر قسمت می‌پردازیم:enforcing: بدان معناست که اقدامات امنیتی سلینوکس در حال اجرا می‌باشد.Permissive:در این قسمت سلینوکس به حالتی رفتار می‌کند که اخطار‌های امنیتی را بررسی کرده اما در قبال آن‌ها عملی انجام نمی‌دهد و تنها مشکل امنیتی را به صورت اخطار در هنگام نوشتن خروجی برنامه در ترمینال پرینت کرده و شما را از مشکل مطلع می‌سازد؛ این حالت مخصوص رفع اشکال کدها و تعمیر پردازش‌ها و برنامه‌ها بوده و به شما قدرت خوانش بالایی را اعطا خواهد‌کرد.Disable:در این حالت که اتفاقا پر تقاضاترین حالت selinux می باشد هم، این قسمت به طور کامل غیر‌فعال شده و هیچ اخطار یا تغییری در عملیات شما ایجاد نمی‌کند.در قسمتی دیگر از فایل قسمتی با الگوی زیر ارائه شده‌است:SELINUXTYPE=&lt;targeted|strict&gt;هر کدام از مسائل رو به رو به صورت زیر قابل توضیح می‌باشند:Targeted:شبکه‌های درگیر در سیستم را تحت نظر گرفته و امن می‌کند.Strict:در این قسمت تمام شبکه دستگاه تحت حمایت امنیتی selinux قرار می‌گیرند و این بدان معناست که تمام موضوعات و عناوین امنیتی و غیرامنیتی شبکه از زیر تیغ بران سلینوکس رد می‌شود.چگونه سلینوکس را کاملا غیر فعال کنیم:ابتدا دستور زیر را در سرور اجرا می‌کنیم:Sestatusاین دستور اطلاعات خوبی از اتفاقات در حال رخ دادن توسط selinux در سرور ما به ما می‌دهد.سپس با استفاده از دستور پایین سلینوکس را کاملا در سیستم خود غیر فعال می‌نماییم:sudo setenforce Permissiveحال با استفاده از دستور‌های زیر، تغییر خود را رهگیری می‌کنیم:sestatus
Getenforceدر خروجی هر دو این دستورات باید حالت selinux به permissive تغییر پیدا کرده باشد.توجه: حالت بالا سلینوکس را تا زمانی که سرور روشن است از دسترس خارج می‌کند؛ در صورتی که علاقه‌مند به غیر‌فعال کردن دائم selinux دارید می‌توانید از ابتدا وارد فایل زیر شده:sudo vi /etc/selinux/configسپس جلوی عبارت SELINUX در چه هست را پاک کرده تا کلمه disabled را وارد نمایید؛ بدین صورت:SELINUX=disabledدر این مرحله با دستور زیر دستگاه خود را ری‌استارت نمایید:sudo rebootبعد از دوباره بوت شدن سرور حال نوبت آن است تا با استفاده از دو دستور کنترلی زیر حالت سلینوکس را بررسی نمایید و از کرده خود مطمئن شوید.getenforce
sestatusبا تشکر از تیم ابر آراز که زمان لازم برای جمع آوری این مطالب را در اختیار من قرار داد.در صورتی که نیاز به سرویس تحت پلتفرم ابری داشتید؛ می‌توانید سرویس‌هایی با قیمت و کیفیت مناسب را از ما تهیه نمایید.آدرس ما: arazcloud.com</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Thu, 18 Feb 2021 13:21:33 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب Big Blue Button</title>
                <link>https://virgool.io/wptips/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-big-blue-button-u5cf9niw1tfb</link>
                <description>چرا BigBlueButton:امروزه با توجه به مشکلات به وجود آمده برای دور هم جمع شدن انسان‌ها و برقراری ارتباطات فیزیکی آن‌ها، سیستم‌ها به سمت استفاده از پلتفرم‌هایی که برقراری جلسات، کلاس‌ها و سمینارها را به صورت مجازی ممکن می‌کنند حرکت کرده اند.در این زمینه نام‌های آشنایی مانند شرکت ‌adobe و  microsoft محصولات خود را روانه بازار کرده و در دسترس عموم قرار دادند؛ اما یکی از برنامه‌های محبوبی که توانست در مدتی که نیازش احساس شد جای خود را در بین علاقه‌مندان پیداکند، برنامه BigBlueButton بود.یکی از خوبی‌های پلتفرم بیگ بلو باتن استفاده کامل از HTML5 می‌باشد که مزیت‌های بسیاری را برای استفاده به ارمغان آورده است؛ از جمله این مزیت ها می‌توان به ۲ برابر سرعت بیشتر در هنگام بارگذاری پلتفرم، کیفیت بالا‌تر صدا، تصویر و اشتراک صفحه نمایش میزبان و به تعداد بسیار زیادی ویژگی نرم‌افزاری جدید و منحصر به فرد دیگر.تذکر: قبل از شروع به نصب باید بدانید که سرویس Big Blue Button برای نصب نیاز به سیستم‌عامل Ubuntu و ورژن 16.04 دارد.روش‌های نصب:شما برای نصب کردن این نرم‌افزار به ۲ انتخاب خواهید داشت:استفاده کردن از اسکریپت آماده برای نصب این نرم‌افزار یا bbb-install.shاستفاده از راه حل قدم به قدم که در ادامه مقاله به شما توضیح داده می‌شود.راه شماره۱: استفاده از اسکریپت آماده bbb-install.shسریع‌ترین راه برای نصب این نرم‌افزار، همین راه می‌باشد. شما در این قسمت از زاه می‌توانید با استفاده کردن از لینک زیر وارد پروژه گیت‌هاب سرویس شوید و بعد از دریافت فایل، آن‌را نصب کنید.مدت زمان نصب در این حالت حدودا ۳۰ دقیقه می‌باشد (بسته به قدرت اینترنت، قدرت سیستم شما ممکن است این زمان کم یا زیاد شود.)لینک ورود به صفحه پروژه در گیت‌هاب: https://github.com/bigbluebutton/bbb-installراه شماره۲: راه حل قدم به قدمدر صورتی که در نصب کردن با استفاده از اسکریپت دچار مشکل شدید، می‌توانید از این قسمت استفاده کنید؛ همچنین در حالتی که نیاز به درک جزئی از اجزا تشکیل دهنده این نرم‌افزار داشتید، این راه را به شما پیشنهاد می‌کنیم.قبل از نصب باید دانست:اگر قسمت‌های نصب این نرم‌افزار را از داخل سایت Big Blue Button دنبال کنیم؛ می‌بینیم که به ما پیشنهاد شده تا از یک سیستم‌عامل Ubuntu 16.04 که به تازگی نصب شده است استفاده کنیم. برای همین در این آموزش فرض می‌کنیم سیستم‌عامل شما کاملا خام بوده و تازه نصب شده است.همچنین اطمینان حاصل نمایید که هیچ کدام از دو پورت 80 و 443 سرور شما توسط هیچ برنامه‌ای اشغال شده باشد.برای این موضوع می‌توانید از دستور زیر استفاده کنید:$ netstat -ntpl | grep 443
$ netstat -ntpl | grep 88در هیچ کدام از دو کامند بالا سیستم شما نباید هیچ خروجی‌ای داشته باشد.حداقل موارد مورد نیاز برای اجرای این برنامه:حداقل سیستم مورد نیاز برای اجرا این برنامه طبق موارد زیر می‌باشد:سیستم عامل: ubuntu 16.04 (تنها در این سیستم‌عامل در دسترس می‌باشد.)8 هسته پردازشی CPU.16 گیگابایت RAM.500 گیگابایت فضای ذخیره‌سازی.پورت  80 , 443 TCP در دسترس.پورت 16384 - 32768 UDP در دسترس .سرعت اینترنت با پهنای باند 250 Mbits/sec.یک هاست نیم (مانند bbb.arazcloud.com) برای تنظیم SSL Certificate بر روی سرویس.آدرس آیپی پابلیک برای دسترسی به سرور.عملیات قبل از نصب:در ابتدای راه و قبل از شروع نصب باید یک سری عملیات انجام دهید.ابتدا دستور زیر را وارد کنید.$ cat /etc/default/localeدر این مرحله باید خروجی شما مشابه این متن باشد.LANG=&amp;quoten_US.UTF-8&amp;quotدر صورتی که متن داخل این فایل شبیه خروجی گفته شده نبود شما باید از طریق دستورهای زیر تنظیمات مورد نظر را وارد کنید:$ sudo apt-get install -y language-pack-en
$ sudo update-locale LANG=en_US.UTF-8حال باید دستور زیر را وارد نمایید:$ sudo systemctl show-environmentدر این قسمت مطمئن شوید که عبارت:LANG=en_US.UTF-8را مشاهده می‌کنید.در صورتی که متن را مشاهده نکردید از دستور زیر استفاده کرده و سپس دوباره show-environment را اجرا کنید.$ sudo systemctl set-environment LANG=en_US.UTF-8حال نوبت آن است که به‌سراغ مراحل اصلی نصب برویم.چطور BigBlueButton را نصب کنیم:برای شروع باید یادآور شویم که مراحل نصب این برنامه مراحل نه چندان سخت ولی نسبتا زیادی می‌باشد؛ برای همین شاید اندکی طاقت فرسا باشد.ابتدا با دستور زیر از نبود فایل زیر مطمئن می‌شویم تا مشکلی در جریان نصب ما پیش نیاید:$ sudo rm -f /etc/apt/sources.list.d/jonathonf-ubuntu-ffmpeg-4-xenial.listسپس سرویس خود را با استفاده از دستور زیر با آخرین نسخه به‌روزرسانی می‌کنیم:$ sudo apt-get update -yدر ابتدا دستور زیر را اجرا می‌کنیم:$ sudo echo &amp;quotdeb http://archive.ubuntu.com/ubuntu/ xenial multiverse&amp;quot | sudo tee -a /etc/apt/sources.listسپس haveged را نصب می‌کنیم:$ sudo apt-get install haveged -yدر این مرحله ۳ ریپازیتوری مورد نظر برای نصب را به مخزن apt اضافه می‌کنیم:$ sudo add-apt-repository ppa:bigbluebutton/support -y
$ sudo add-apt-repository ppa:rmescandon/yq -y
$ sudo add-apt-repository ppa:libreoffice/ppa -در این مرحله دوباره سیستم را آپدیت می‌کنیم تا ریپازیتوری‌های اضافه شده رو در هنگام استفاده نصب در خدمت داشته باشید:$ apt-get update -yسرویس BigBlueButton از دیتابیس MongoDB استفاده می‌شود تا بتوانیم به سریع‌ترین حالت ممکن پردازش‌ها را انجام دهیم.برای تنظیم و نصب این مورد از دستورات زیر استفاده می‌کنیم:$ sudo wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add -
$ sudo echo &amp;quotdeb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse&amp;quot | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update -y
$ sudo apt-get install -y mongodb-org curlبرنامه ‌BigBlueButton در نسخه HTML5 نیاز به nodejs دارد؛ پس برای نصب nodejs از دستورات زیر استفاده می‌کنیم:$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejsاضافه کردن ریپازیتوری BigBlueButton به مخزن apt:ابتدا نیاز دارید که کلید عمومی پروژه خود را سرور خود اضافه کنید. برای این موضوع می‌توانید از دستور زیر استفاده کنید:$ wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -در این مرحله برای آپدیت اوله به نسخه ۲ BigBlueButton ابتدا باید bbb-client را حذف نصب کنیم:$ sudo bbb-conf --stop
$ sudo apt-get purge -y bbb-clientحال با دستورات زیر مکان صحیح دریافت سرویس BigBlueButton را به سرور ارائه می‌کنیم:\$ echo &amp;quotdeb https://ubuntu.bigbluebutton.org/xenial-22/ bigbluebutton-xenial main&amp;quot | sudo tee /etc/apt/sources.list.d/bigbluebutton.listسپس یکی دیگر از پکیج‌های مورد نیاز برای ادامه کار را نصب می‌کنیم:$ sudo apt-get install apt-transport-https -yدر این مرحله باید مطمئن شویم که کلید اوبونتو در سرور جهت نصب موجود است. این مورد را با دستور زیر نصب کنید:$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6657DBE0CC86BB64حال برای ادامه کار ابتدا سیستم را دوباره آپدیت می‌کنیم:$ sudo apt-get updateتنظیمات پیش از بالا‌ آمدن سرور در همین لحظه به پایان رسید.حال می‌توانید با دستورات زیر ‌BigBlueButton را نصب کنید:$ sudo apt-get install bigbluebutton
$ sudo apt-get install bbb-html5نصب شدن این قسمت بسیار زمان بر است و لطفا صبر کنید…بعد از اتمام نصب این سرویس شما ابتدا با دستور زیر برنامه را ری‌استارت نمایید:$ sudo bbb-conf --restartحال آن رسیده که تنظیمات BigBlueButton را چک کنیم:$ sudo bbb-conf --checkبا استفاده از دستور زیر هم از در دسترس بودن تمام سرویس ها مطمئن و مطلع شوید:$ sudo bbb-conf --statusدر حال حاضر سرور بیگ‌بلو‌باتن شما آماده استفاده می‌باشد. می‌توانید در آدرس آی پی یا آدرس هاست خود به سرویس دسترسی داشته باشید.با تشکر از تیم ابر آراز که زمان لازم برای جمع آوری این مطالب را در اختیار من قرار داد.در صورتی که نیاز به سرویس تحت پلتفرم ابری داشتید؛ می‌توانید سرویس‌هایی با قیمت و کیفیت مناسب را از ما تهیه نمایید.آدرس ما: arazcloud.com</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Mon, 01 Feb 2021 22:21:20 +0330</pubDate>
            </item>
                    <item>
                <title>ساختن Mail-Server در Ubuntu 18.04</title>
                <link>https://virgool.io/@smj/%D8%B3%D8%A7%D8%AE%D8%AA%D9%86-mail-server-%D8%AF%D8%B1-ubuntu-1804-yadub4qvzxhq</link>
                <description>مقدمه:با توجه به توسعه روز‌افزون کسب‌و‌کار‌های اینترنتی و گسترش استفاده از پلتفرم‌های تبلیغات و اهمیت حفظ شخصیت برند در ارتباط با مشتریان و همکاران اهمیت بسیار از خود نشان داده‌است.به همین دلیل، متخصصان فنی بر‌آن شدند تا سرویس‌های ایمیل اختصاصی برای خود را بر روی زیرساخت خود ایجاد آورند.در این مقاله قصد داریم چگونگی ساخت یک Mail Server بر روی یک سرور ابری بر پایه سیستم‌عامل Ubuntu 18.04 را بررسی کنیم.قدم اول: ارائه‌دهنده سرویس خود را انتخاب کنید و یک دامین برای سرور خریداری شده تهیه کنید.یکی از مهم‌ترین قسمت‌هایی که به کیفیت سرویس شما کمک می‌کند، ارائه‌دهنده زیرساخت شماست؛ چیزی که بسیار باید برای شما اهمیت داشته باشد همیشه در دسترس بودن، هزینه و کیفیت سرویسی است که از بهره می‌برید؛ خوبی و اهمیت استفاده از سرویس ابری خود را آنجا نشان می‌دهد که در هر زمان، نیاز بیشتری در استفاده از زیر‌ساخت داشتید بتوانید تنها با چند کلیک زیر‌ساخت خود را گسترش‌داده و پاسخ‌گو درخواست‌های روانه شده به روی کسب‌و‌کار خود باشید.حداقل سرویس مورد نیاز ساخت میل سرور:۲ هسته پردازنده۲ گیگابایت حافظه رم۵۰ گیگابایت حافظه ذخیره‌سازی.سیستم عامل مورد نیاز در این آموزش:سیستم عامل لینوکس توزیع Ubuntu 18.04بعد از این که سرویس خود را از یکی از ارائه دهندگان سرویس‌های ابری تهیه کردید، حال نوبت آن است که یک دامنه برای سرویس خود به سلیقه خودتان خریداری نمایید.حالا می‌توانید با دستور ssh به روش زیر به سرویس خود وصل شوید. ssh root@&lt;Server-IP&gt; که در دستور بالا به جای &lt;Server-IP&gt; از IP ارائه شده توسط ارائه دهنده سرویس خود استفاده کنید.همچنین رمز عبور هم از همان ارائه دهنده برای شما ارسال خواهد شد.قدم دوم: تنظیمات DNSحال که سرور خود را ساختیم نوبت آن است که یک دامنه به ‌IP آن اختصاص دهیم.برای انجام آن کار در ارائه دهنده دامنه خود دامنه ای با مشخصات زیر می‌سازیم:DNS Record Type (نوع): AName (آدرس رکورد): mail.&lt;Domain-Name&gt;Value (مقدار): &lt;Server-IP&gt;که در تنظیمات به جای &lt;Domain-Name&gt; از نام دامنه خریداری شده استفاده می‌کنیم و به جای &lt;Server-IP&gt; از آیپی سرور خریداری شده استفاده می‌شود.در این قسمت نوبت آن است که رکورد جدیدی در DNS سرویس خود به وجود آوریم.این رکورد در شرکت ارائه‌دهنده سرویس ابری تنظیم می‌شود، وظیفه آن است که میل سرور شما از آن برای مخابره و دریافت ایمیل استفاده می‌کند.تنظیمات این قسمت بدین صورت است:DNS Record Type (نوع): MX - Mail exchangeName (آدرس رکورد): @Value (مقدار): mail.&lt;Domain-Name&gt;توجه: از این به بعد در آموزش پیش‌رو به جای Domain-Name از arazcloud.com استفاده می‌شود.قدم سوم: تنظیم نام هاستدر این قسمت بعد از این که به سرور خریداری شده توسط ssh وصل شدیم دستورات زیر را اجرا می‌کنیم:sudo apt update -y
sudo apt upgrade -yحال نوبت آن است که نام دلخواه برای هاست خود انتخاب کنیم؛ توجه داشته باشید که نام هاست باید بدین صورت تنظیم شود: mail.&lt;Domain-Name&gt; پس در این قسمت به صورت زیر عمل می‌کنیم:sudo hostnamectl set-hostname mail.&lt;Domain-Name&gt;در قدم بعد نیاز به آن داریم که تنظیماتی بر گزینیم تا به جای استفاده از IP در داخل سرور، از یک نام برای انجام تنظیمات استفاده کنیم.تنظیمات این مرحله بدین صورت است که:دستور زیر را اجرا می‌کنیم:sudo vi /etc/hostsسپس داخل این فایل، خط زیر را وارد می‌کنیم (برای شروع وارد کردن اطلاعات از دکمه i استفاده کنید):&lt;Server-IP&gt; mail.&lt;Domain-Name&gt;حال ابتدا دکمه Esc کیبورد را فشرده سپس عبارت زیر را تایپ کنید::wqتا به الان تنظیمات مربوط به نام هاست انجام شده و سرور منتظر شروع عملیات نصب و راه اندازی می‌باشد.با دستور زیر می‌توانید نام هاست خود را یافته و از صحت عمل خود اطمینان حاصل نمایید.hostname  -fقدم چهارم: نصب کردن و تنظیم میل سرور Ubuntu 18.04 با استفاده از iRedMail:اسکریپتی که در ساده‌سازی نصب و راه‌اندازی این میل سرور ما را یاری می‌کند iRedMail نام دارد که به ما ابزار زیادی ارائه می‌دهد که به ما کمک شایانی در مدیریت، استفاده و راحت‌سازی نصب به ما ارائه می‌کند.با استفاده از دستور زیر می‌توانیم این اسکریپت را از GitHub استخراج کرده و مورد استفاده قرار دهیم:wget https://github.com/iredmail/iRedMail/archive/1.3.2.tar.gzبا دستور زیر می‌توانیم فایل دانلود شده را از حالت فشرده خارج نمایید:tar xvf 1.3.2.tar.gzوارد دایرکتوری زیر می‌شویم:cd iRedMail-1.3.2/حال دسترسی اجرا‌پذیری فایل اسکریپت دانلود شده اهدا می‌کنیم:chmod +x iRedMail.shالان اسکریپت آماده اجراست و می‌توانیم با دستور زیر نصب را شروع کنیم:bash iRedMail.shتوجه: در این قسمت از نصب، هر جا از عبارت linuxbabe.com استفاده شد، لطفا نام دامنه خود را استفاده کنید  هر جا از عبارت mail.linuxbabe.com استفاده شد، از عبارت mail.&lt;Domain-Name&gt; استفاده نمایید.در قدم اول بعد از شروع نصب صفحه زیر برای شما نمایش داده خواهد شد که در آن از دکمه Yes استفاده می‌کنیم (با دکمه Enter گزینه مشخص شده، انتخاب می‌شود)این قسمت نمایانگر مکان ذخیره سازی اتفاقات داخل ایمیل هاست که بهتر است آن‌را تغییری ندهید.در این قسمت شما می‌توانید وب سرور پنل را انتخاب کنید. (انجین‌ایکس پیشنهاد می‌شود.) (با استفاده از دکمه Space انتخاب شده و با استفاده از دکمه Enter تایید می‌گردد.)در بین گزینه‌های داده‌شده دیتابیسی که نیاز دارید تا اطلاعات سرویس در آن نگهداری شود را انتخاب کنید. (در این مقاله از MariaDB استفاده شده‌است.) (با استفاده از دکمه Space انتخاب شده و با استفاده از دکمه Enter تایید می‌گردد.)در این قدم رمز دیتابیس MySQL خود را در یوزر root انتخاب می‌کنیم.در این قدم در باکس نمایش داده شده Domain-Name مورد نظر را ارائه دهید.در قدم بعد به صفحه زیر رو‌به‌رو خواهید‌شد که نوبت آن است تا رمز‌عبور نام‌کاربری مدیریت پنل خود را انتخاب کنید (Admin Password)در این قسمت هم اجزایی که به صورت اختیاری به شما عرضه می‌شوند را می‌توانید انتخاب کرده و نصب نمایید.در قسمت‌های بعد که در کامند لاین انجام می‌شود جواب تمام سوالات را با y داده و نصب را ادامه دهید.بعد از نصب کامل این صفحه به شما نمایش داده می‌شود که در وسط صفحه نام کاربری و رمز عبور این سرویس قرار دارد:اکنون زمان آن است که دستگاه را راه اندازی مجدد کنید؛ برای این منظور از کامند زیر استفاده می‌کنیم:sudo shutdown -r nowدر حال حاضر پنل مدیریت شما در آدرس زیر در دسترس می‌باشد.https://mail.&lt;Domain-Name&gt;/iredadmin/قدم پنجم: نصب گواهی‌نامه TLS با استفاده از Let&#x27;s Encrypt:به روش زیر certbot که وظیفه تولید گواهی‌نامه و جلوگیری از انقضای آن را دارد را نصب می‌کنیم:sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot -y
sudo apt install certbot -yحال نوبت آن است که آدرس مورد نظر را با استفاده از دستور زیر تحت گواهی‌نامه ببریم:sudo certbot certonly --webroot --agree-tos --email you@example.com -d mail.your-domain.com -w /var/www/html/باید در نظر داشته باشیم که بعد از مشاهده این سوال گزینه n را انتخاب کنیم:در حال حاضر اطلاعات شما در آدرس /etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/ در دسترس می‌باشد.حال نوبت آن است که Nginx خود را برای گواهی‌نامه امنیت تنظیم کنیم:ابتدا وارد مسیر زیر می‌شویم:sudo vim /etc/nginx/templates/ssl.tmplعبارت‌های زیر را پیدا می‌کنیم:ssl_certificate /etc/ssl/certs/iRedMail.crt;
ssl_certificate_key /etc/ssl/private/iRedMail.key;عبارت‌های بالا را با عبارت‌های پایین جایگزین می‌کنیم (حتما &lt;Domain-Name&gt; را تغییر دهید):ssl_certificate /etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/privkey.pem;حال وقت آن است که تنظیمات Nginx را به‌روزرسانی کنیم:sudo nginx -t
sudo systemctl reload nginxدر این قدم برای دو سرویس Postfix و Dovecot که ارائه دهندگان سرویس‌های ایمیل ما هستند گواهی‌نامه تنظیم می‌کنیم:وارد آدرس زیر شوید:sudo vim /etc/postfix/main.cfسه خط زیر را پیدا کنیم:smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crtسه خط بالا را با سه خط پایین تعویض کنید (حتما &lt;Domain-Name&gt; را تغییر دهید):smtpd_tls_key_file = /etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/cert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/chain.pemحال دوباره تنظیم شدن Postfix می‌باشد:sudo systemctl reload postfixوارد فایل زیر می‌شویم:sudo vim /etc/dovecot/dovecot.confعبارات زیر را پیدا کنید:ssl_cert = &lt;/etc/ssl/certs/iRedMail.crt
ssl_key = &lt;/etc/ssl/private/iRedMail.keyو با عبارات زیر جایگزین کنید (حتما &lt;Domain-Name&gt; را تغییر دهید):ssl_cert = &lt;/etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/fullchain.pem
ssl_key = &lt;/etc/letsencrypt/live/mail.&lt;Domain-Name&gt;/privkey.pemالان نوبت بارگذاری دوباره Dovecot می‌باشد:sudo systemctl reload dovecotتبریک!!فرآیند نصب شما پایان یافت؛ در حال حاضر شما می‌توانید از مسیر زیر وارد پنل مدیریت میل سرور خود شوید:https://mail.your-domain.com/iredadmin/و از طریق زیر می‌توانید وارد پنل دسترسی به ایمیل شده و با جهان مبادله کنید:https://mail.your-domain.com/mail/همچنین در صورت به مشکل خورد سرور خود می‌توانید از فایل زیر اتفاقات افتاده شده در سرویس را مشاهده کنید:/var/log/mail.logاینچنین می‌توانید سرویس Mail Server اختصاصی خود را داشته باشید و از آن استفاده کنید؛ امیدوارم این مقاله توانسته باشد کمک شایانی در زمینه ارائه آموزش به شما داشته باشد.با به اشتراک‌گذاری و نشر نظرات خود می‌توانید انرژی به ما داده تا از این قبیل مقالات بیشتر تولید کنیم.با تشکر از شما.</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Sat, 16 Jan 2021 17:57:24 +0330</pubDate>
            </item>
                    <item>
                <title>اسب‌ها حاکمان بهتری هستن.</title>
                <link>https://virgool.io/@smj/%D8%A7%D8%B3%D8%A8%D9%87%D8%A7-%D8%AD%D8%A7%DA%A9%D9%85%D8%A7%D9%86-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D9%87%D8%B3%D8%AA%D9%86-xk7y3x7eqjuv</link>
                <description>همیشه انسان‌ها سعی داشتن که دنیا رو تحت کنترلشون قرار بدن. تمام قدرت و اختیار و ثروت ممکن رو غافل از این‌که اگه بد جنسی و ظلم همیشه پیروز نیست.اسب‌ها تونستن با تلاش و قلب پاکشون انسان‌ها رو کنار بزنن و الان همه زیر نظر یه عالمه اسب عادل و صادقیم که با کارای خوبشون دنیا رو جای خیلی بهتری نسبت به زمان حکومت انسان‌ها کردن؛ اما این تمام ماجرا نیست. اتفاق از وقتی شروع‌شد که چند سال بعد از این که اسب‌ها به قدرت رسیدن تصمیم گرفتن انسان‌های ظالم و شرور و به کار بگیرن و به عنوان برده‌های خودشون استفاده‌کنند.همیشه همه می‌دونستن که اسب‌ها موجودات نجیب و رفیقی هستن ولی این رو کسی نمی‌دونست که اسب‌ها موجودات عادل و پر اراده‌ای هستن.نمی‌دونم شاید شرایطی که دارم تجربه‌می‌کنم یه دنیای موازی دنیای قبلی باشه که توش بودم اما واقعا از این که حداقل تحت سلطه اسب‌ها هستم حس خوبی بهم می‌ده چون می‌دونم عادل، منطقی و پر ارادن.تصمیم اولیه اسب‌ها مبنی بر این که انسان‌های شرور رو به عنوان برده انتخاب کنن با مخالفت و شورش انسان‌ها مواجه شد و کار رو براشون خیلی سخت‌تر کرد اما  هر چی گذشت و انسان‌ها ظلم همدیگرو رو حس کردن و به خاطرش اذیت‌شدن؛ بیشتر با اسب‌ها هم عقیده شدن تا جایی که حتی به اسب‌ها کمک کردن که انسان‌های شرور رو شناسایی کنن و به برده داری بکشنشون.اسب‌ها شاید خیلی وقتا با حالات و زبان ما انسان‌ها نتونن ارتباط برقرار کنن اما تجربه نشون داده که خوب ظلم و شرارت رو می‌شناسن و خیلی خوب می‌تونن با اون مقابله کنن.از وقتی طرح برده‌داری انسان‌های شرور پیش اومده دیگه همه می‌تونن روی حرفم حساب کنن و حتی اگه کسی قولی که داده رو عمل نکنه همه انسان‌ها می‌دونن که احتمالا اتفاق بدی برای اون فرد رخ داده و سعی می‌کنن باهاش همدردی و کمک کنن.حتی جالبه که آدما خیلی با هم مهربون‌تر شدن و همش دنبال پایین کشیدن همدیگه نیستن.از وقتی رئیس‌های بلند مرتبه تبدیل به اسب شدن دیگه آدما دنبال این نیستن که همکارشون رو خراب کنن تا به مدارج بالاتری برسن و می‌دونن هر کاری بکنن توسط مدیرشون دیده می‌شه و واقعا آدمایی با توانایی بالاتر تو قسمت‌های بالاتر دیده می‌شن.سرعت رشد فناوری و انسانیت بشر چندیدن برابر شده و همه می‌دونن که شاید اسب‌ها چیزی از این رشد رو حاصل نکرده باشن اما باعث این رشد همین اسب‌های عزیزن.چیزی که جالبه رفتار اون شرور هاییه که به برده داری کشیده شدن و الان دارن به جای خیلی آدمای شریفی که کارای دست پایین انجام می‌دادن به آدمای خوب و تلاشگری که سعی می‌کنن بشر زندگی راحت‌تر و زیبا‌تری داشته باشه کمک کنن.چند روز پیش که با یکیشون حرف می‌زدم می‌دیدم به خاطر رفتار با عدالت و خوبی که کارفرما هاشون باهاشون دارن هیچ کدوم از کاری که دارن می‌کنن زیاد ناراحت نیستن؛ طمع دارن اما می‌دونن جایی که دارن حقشونه و نه بیشتر.حس انسان دوستی مطلق آدما از بین رفته و بیشتر به رفتار هم‌نوع خودشون دقت می‌کنن جای این که خیلی تعصبی بگن آدما به اسب‌ها اولویت دارن و بیشتر سعی می‌کنن کار خودشون رو درست انجام بدن و به بقیه کمک کنن تا بشه پیشرفت کنن و شرارتی از خودشون نشون ندن تا هر چی دارن ازشون گرفته بشه و تبدیل به برده بشن.این نوع ترس و نگرانی که باعث رشد بشر بشه واقعا چیزیه که آدما بهش نیاز داشتن و من به شخصه از اسب‌ها ممنونم که این هدیه رو به ما دادن.یادمه اوایل که اسب‌ها داشتن به قدرت می‌رسیدن یه عالمه جنگ و جدل تو دنیا به وجود اومد اما هیچ شهری نابود نشد، هیچ آدمی کشته نشد، هیچ تجاوزی صورت نگرفت و همه در نهایت جای شکست در مقابل اسب‌ها به این نتیجه رسیدن که اونا برای اداره جهان لایق‌ترن. اسب‌ها هیچ‌وقت به آدما بودن خودشون رو تحمیل نکردن و رفتارش و اعمالشون طوری بوده که انسان‌ها سعی کردن قدرشون رو بدونن و بهشون انرژی بدن تا یه وقت از کاری که کردن پشیمون نشن.هر روز که با آدمای شروری که برده شدن معاشرت می‌کنم دلم شاید براشون بسوزه اما وقتی می‌بینم اونا هم احساس بدی از جایی که هستن ندارن عذاب وجدانم برطرف می‌شه و بیشتر به این فکر می‌کنم که چقدر خوبه که اسب‌ها رو داریم.از بخشندگی اسب‌ها براتون بگم که شرایطی رو برای برده‌ها گذاشتن که اگه خوب شدن و پاک شدنشون تصدیق بشه اونا هم بتونن تلاش کنن که به جایی که لایقشن برسن و همه می‌دونیم که حق کسی تو این شرایط خورده نمی‌شه.حاکمان ما انسان‌ها الان رفیقای ما هستن. کسایی که کمکمون می‌کنن با توجه به توانایی‌هامون و استعداد و تلاشی که داریم به جایگاهی که لایقش هستیم برسیم و حتی برامون انگیزه ایجاد می‌کنن که بیشتر تلاش کنیم و نمی‌زارن کسی از اتفاق افتاده ناراضی باشه.الان اسب‌ها موجودات نجیب، پاک، عادل و با اقتداری هستن که نسل بشر همیشه بهشون نیاز داشته و نیاز خواهد‌داشت.اونا حتی شرایطی رو ایجاد کردن که اگه اسبی شرارت به خرج بده یا ناعادل باشه به سرنوشتی بدتر از انسان شرور دچار شه. دلیل این اتفاق رو هم بهمون گفتن که اگر کسی قدرت داشته باشه و با قدرت شرارت به خرج بده که روی زندگی کلی آدم تاثیر داشته باشه لایق بدترین هاست و برای این که اسم حکومت و عدل اسب‌ها خدشه‌دار نشه همیشه سعی می‌کنن که سخت‌گیری بیشتری رو روی اسب‌ها داشته باشن.اسب‌ها در زندگی روزمرشون بین آدما زندگی می‌کنن و از امکانات اونا استفاده می‌کنن و سعی در افزایش این امکانات دارن؛ چون می‌دونن نباید از کسایی که روشون حکومت می‌کنی دور شی و هر چی آدما بهتر زندگی کنن قطعا اسب‌ها هم زندگی راحت‌تر و بهتری داشته باشن.دید حاکمان ما به ما دیگه به عنوان صاحبان‌مون یا کسایی که به ما برتری دارن نیست و به قول خودشون ما با اونا همزیست هستیم و باید سعی کنیم جهان رو برای جفتمون جای بهتری کنیم، حتی برای اون آدم شروری که الان بردست و باید به سزای عملش برسه.دیگه جنگی تو جهان نیست چون اسب‌ها همیشه با هم صادقن و سیاست‌هایی رو دستشون نمی‌گیرن که به انسان‌ها فشار بیاد. دیگه کسی که تو زندگیش تلاش می‌کنه فقیر نیست چون هیچ وقت اسب‌ها فکر پر کردن جیب خودشون با پول آدما نیستن و سعی می‌کنن هر کسی به اندازه تلاش خودش و با توجه به شرایط جامعه بتونه پول در بیاره و موفق باشه. دیگه هیچ مریضی به خاطر پول تو حیاط بیمارستان رها نمی‌شه چون اسب‌ها معتقدن بزرگترین هدیه‌ای که به موجودات داده شده سلامتی و زندگیشونه و هیچ‌کس حق نداره اینا رو ازشون بگیره. دیگه هیچ آدم یا اسبی اعدام نمی‌شه چون اسب‌ها معتقدن هیچ عملی انقدر بد نیست که زندگی از کسی گرفته شه و مجرم‌ها فقط باید مطابق قانون به جزای عملشون برسن. دیگه هیچ کودکی سر چهارراه‌ها اسپند دود نمی‌کنه و آدامس نمی‌فروشه چون اسب‌ها معتقدن بچه‌ها، آدم بزرگای آیندن که قراره برای راحت‌تر زندگی کردن بشر کلی کار خفن انجام بدن. دیگه فرقی بین افغان و ایرانی و کانادایی و روس و آفریقایی وجود نداره، چون اسب‌ها معتقدن که همه آدما تو ویژگی آدم بودن با هم اشتراک دارن و فرقشون با توجه به تلاشی که می‌کنن به وجود میاد و همه به یک اندازه شریف و آدم هستن. دیگه فرقی نداره تو کدوم کشور زندگی می‌کنی چون اسب‌ها معتقدن که دنیا جاییه که آدما باید با هم بهترش کنن و زندگی رو توش آسون‌تر کنن جای این که سر ۲ متر خاک همدیگرو بکشن یا با هم دیگه فرق داشته باشن. دیگه همه انسان‌ها از جایی که توش زندگی می‌کنن راضین چون اسب‌ها معتقدن ما ساکن کره زمین هستیم و هیچ فرقی بین شرق و غرب این کره خاکی وجود نداره و همه جا امکانات باید برابر باشه و اگه جایی امکانات بیشتری هست به دلیل تلاش بیشتر آدم‌های استفاده کننده از اونجا باشه و سرعت اونا رو ببره بالا.از وقتی اسبا اومدن آدما انسان شدن. اسب‌ها رفیقای ما هستن نه صاحبانمون.ممنونم ازتون اسب‌های دوست داشتنی که به ما زندگی کردن رو یاد دادین.</description>
                <category>محمد جوادی - SMJ</category>
                <author>محمد جوادی - SMJ</author>
                <pubDate>Fri, 07 Aug 2020 05:50:57 +0430</pubDate>
            </item>
            </channel>
</rss>