ایجاد یک ماشین مجازی خسته کننده است. ایجاد صدها وقت گیر است. cloud-init به شما امکان میدهد ایجاد ماشین مجازی را در Microsoft Azure خودکار کنید.
اگر تا به حال یک ماشین مجازی راه اندازی کرده اید، می دانید که چگونه کار می کند. اینجا و آنجا کلیک میکنید، روی مسیر خود کلیک میکنید و در پایان، یک سیستم راهاندازی میکنید. اما پس از آن شما همچنان باید نرم افزار را نصب کنید و VM را به دلخواه خود پیکربندی کنید.
حال تصور کنید که می خواهید صدها VM راه اندازی کنید. کلیک کردن در مسیر نصب آنقدرها موثر نیست. درعوض، باید تا حد امکان فرآیند را خودکار کنید و اینجاست که Cloud-init وارد می شود.
بیایید نگاهی به نحوه خودکارسازی نصب سیستم عامل و پیکربندی ماشین مجازی با استفاده از cloud-init در Microsoft Azure بیندازیم.
چرا از cloud-init برای خودکارسازی ساخت VM استفاده کنیم؟
cloud-init یک ابزار اتوماسیون قدرتمند است که Canonical، شرکت سازنده اوبونتو، آن را توسعه می دهد.
با استفاده از Cloud-init، می توانید سیستم عامل های لینوکس را نصب و راه اندازی کنید و سایر جنبه های یک ماشین مجازی را پیکربندی کنید. به عنوان مثال، میتوانید از cloud-init برای راهاندازی حسابهای کاربری، نصب و پیکربندی نرمافزار، اضافه کردن کلیدهای SSH استفاده کنید.
در حال حاضر، اکثر ارائه دهندگان خدمات ابری مانند Azure، Linode و Amazon Web Services (AWS) از cloud-init پشتیبانی می کنند.
اگرچه cloud-init در اوبونتو شروع شد، اما اکنون از تمام توزیعهای اصلی لینوکس مانند openSUSE، Debian، Red Hat Enterprise Linux (RHEL) و غیره پشتیبانی میکند.
جدا از استقرار نرمافزار در فضای ابری، میتوانید از cloud-init برای پیکربندی و نصب نرمافزار روی سرورهای on-prem یا محیطهای مجازی مانند VirtualBox، KVM و VMware نیز استفاده کنید.
ما از پلتفرم ابری Microsoft Azure برای خودکارسازی استقرار سرور اوبونتو با استفاده از cloud-init استفاده خواهیم کرد.
مرحله 1: ایجاد یک اسکریپت Cloud-init
اسکریپت های cloud-init از ماژول ها برای پیکربندی جنبه های مختلف سیستم شما استفاده می کنند. به عنوان مثال، شما از ماژول کاربران برای پیکربندی اطلاعات و حساب های کاربری، و ماژول wireguard برای پیکربندی WireGuard و غیره استفاده خواهید کرد. هزاران ماژول دیگر وجود دارد که می توانید از آنها استفاده کنید.
بیایید یک اسکریپت Cloud-init ایجاد کنیم تا بیشتر مواردی را که هنگام راهاندازی یک ماشین مجازی جدید پیکربندی میکنید، خودکار کنیم.
ما کاربری به نام “mwiza” ایجاد می کنیم و به آن رمز عبور اختصاص می دهیم. برای سادگی، بیایید از یک رمز عبور متن ساده استفاده کنیم، اما در صورت تمایل می توانید آن را رمزگذاری کنید. علاوه بر این، کلید SSH کاربر را به کلیدهای مجاز اضافه کنید. این به شما امکان می دهد برای امنیت بهتر، ورود به رمز عبور SSH را بعداً غیرفعال کنید.
علاوه بر ایجاد یک کاربر جدید، اسکریپت باید موارد زیر را انجام دهد:
- نوشتن یک فایل: یک فایل ساده ایجاد کنید و با استفاده از ماژول write_files محتوا را در آن بنویسید. فایل در فهرست اصلی قرار می گیرد. شما می توانید از همین مفاهیم برای ایجاد فایل های پیچیده تر در آینده استفاده کنید.
- دستورات در حال اجرا: ما دستورات ساده ای را برای پیکربندی فایروال UFW اجرا می کنیم، اما می تواند هر دستور دیگری از لینوکس باشد. از ماژول runcmd برای اجرای هر دستور دلخواه خود استفاده کنید. این شبیه به اجرای دستورات لینوکس با اجرای اسکریپت های Bash است.
- پیکربندی زبانها: این تنظیمات محلیهای دلخواه شما مانند طرحبندی صفحهکلید، زبان ترجیحی، منطقه زمانی و غیره را تنظیم میکند.
- نصب بسته ها: از مدیر بسته مورد علاقه خود برای نصب بسته ها بر روی سیستم خود استفاده کنید. به عنوان مثال، در سیستم های مبتنی بر دبیان، می توانید از APT استفاده کنید.
اینها تنها برخی از ماژول هایی هستند که می توانید از cloud-init استفاده کنید. چندین ماژول دیگر برای خودکار کردن انواع چیزها وجود دارد.
در اینجا اسکریپت کامل cloud-init برای پیکربندی حساب کاربری جدید آمده است. به یاد داشته باشید که کلید SSH را با کلید صحیح جایگزین کنید. همچنین می توانید نام کاربری و سایر جزئیات را تغییر دهید.
vim: syntax=yaml
# Add system users here
users:
- name: mwiza
groups: users, sudo
shell: /bin/bash
gecos: mwiza
plain_text_passwd: Live-laugh-love12345G123
lock_passwd: false
ssh_authorized_keys:
- ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB:PWELJWEEWeKBrkXWbLJBs;ldfkagfafk===C6li71Ra6i+NKkajdfi userkey@email.com
# Install, update, and upgrade packages
package_upgrade: true
package_update: true
package_reboot_if_require: true
packages:
- traceroute
- net-tools
- fail2ban
# Set locales
locale: en_UK
timezone: Etc/UTC
keyboard:
layout: nb
write_files:
- path: /etc/salt/minion.d/master_ip_port.conf
content: |
master: salt
master_port: 4506
publish_port: 4505
- path: /home/mwiza/cloud-init.txt
content: |
created by cloud-init in azure
# Running Bash commands to configure software and services
runcmd:
- ufw enable
- ufw allow ssh
- ufw allow 80
- systemctl enable ufw
# Power off the VM after initialization is finalized
shutdown: poweroff
اسکریپت Cloud-init از YAML استفاده می کند، بنابراین مطمئن شوید که تورفتگی درست باشد در غیر این صورت، آنطور که انتظار می رود کار نخواهد کرد.
مرحله 2: ایجاد منبع ماشین مجازی
مرحله بعدی ایجاد منبع لازم در Azure برای ماشین مجازی است. اگر قبلاً یک حساب کاربری دارید به Azure وارد شوید یا با رفتن به azure.microsoft.com یک حساب آزمایشی رایگان ایجاد کنید.
در صفحه اصلی پورتال Azure، روی دکمه Create a Resource کلیک کنید. از لیست محبوب ترین سرویس های Azure، ماشین مجازی را انتخاب کنید.
صفحه بعدی اطلاعاتی را برای ایجاد منابع VM مانند هارد دیسک، شبکه و غیره به شما می دهد.
نام ماشین مجازی خود را معنی دار بگذارید و منطقه استقرار را انتخاب کنید. همچنین، یک گروه منبع برای VM خود ایجاد کنید یا از یک موجود استفاده کنید.
در قسمت Authentication type، گزینه Password را انتخاب کرده و نام کاربری و رمز عبور قوی خود را وارد کنید.
پس از پر کردن تمام فیلدهای این صفحه، مشخصات شما باید مشابه موارد زیر باشد.
مرحله 3: اضافه کردن اسکریپت Cloud-init
سپس روی تب Advanced کلیک کنید تا اسکریپت cloud-init اضافه شود. اسکریپت Cloud-init را از اولین مرحله در فیلد داده سفارشی کپی و جایگذاری کنید.
در نهایت بر روی دکمه Review + create کلیک کنید. اگر همه چیز خوب باشد، آزمون قبول می شود. در غیر این صورت، سازنده Azure VM شما را در مورد اصلاحاتی که باید انجام دهید راهنمایی می کند.
مرحله 4: وارد شدن به ماشین مجازی
از اطلاعات نمای کلی ماشین مجازی برای دریافت آدرس IP عمومی ماشین مجازی خود و ورود از طریق SSH استفاده کنید. اگر از کلید SSH درست استفاده کرده باشید، سیستم از شما نمی خواهد رمز عبور کاربر را وارد کنید.
پس از ورود به سیستم، می توانید بررسی کنید که فایل هایی که می خواهید از طریق اسکریپت ایجاد کنید وجود دارد یا خیر. همچنین به دنبال بسته های نصب شده با APT باشید و بررسی کنید که فایروال با استفاده از دستور status sudo ufw به درستی پیکربندی شده است.
cloud-init همچنین اطلاعات مهم را در فایل /var/log/cloud-init.log ثبت می کند. این شامل پیام های پرمخاطب از تمام رویدادهایی است که در طول اولیه سازی ابری رخ داده اند. با استفاده از دستور cat می توانید این فایل را به صورت زیر بررسی کنید:
cat /var/log/cloud-init.log
ایجاد ماشین مجازی را به صورت خودکار با cloud-init انجام دهید
cloud-init ابزار قدرتمندی است که به شما کمک می کند نصب و راه اندازی لینوکس را خودکار کنید. می توانید از آن در فضای ابری و سرورهای on-prem استفاده کنید. چه بخواهید استقرار ماشین مجازی خود را خودکار کنید یا نیاز به استقرار سرورهای لینوکس در مقیاس بزرگ داشته باشید، Cloud-init یک انتخاب عالی است.
در یک یادداشت مرتبط، همیشه ورود SSH خود را برای ماشین های مجازی مبتنی بر ابر خود ایمن کنید تا از نقض امنیت جلوگیری کنید.