زیرساخت به عنوان کد (Infrastructure as Code یا IaC) رویکردی برای مدیریت و پیکربندی زیرساختهای IT است که به توسعهدهندگان و مدیران سیستم اجازه میدهد زیرساختهای خود را با استفاده از کد مدیریت کنند. این روش باعث میشود که فرآیند پیادهسازی، تغییر و مدیریت زیرساختها به صورت خودکار و قابل تکرار انجام شود. در این مستندات، به بررسی پیادهسازی IaC با استفاده از سرورهای ابری پرداخته شده است.
الزامات
- سرور ابری با دسترسی ریشه (Root Access)
- سیستمعامل لینوکس (ترجیحاً اوبونتو ۲۰.۰۴ یا بالاتر)
- آشنایی با ابزارهای IaC مانند Ansible و Terraform
- نصب Docker برای مدیریت کانتینرها (اختیاری)
۱. مقدمهای بر زیرساخت به عنوان کد (IaC)
IaC به معنای استفاده از فایلهای متنی و کد برای مدیریت و پیکربندی زیرساختها است. با استفاده از این روش، به جای انجام تغییرات دستی در سرورها و شبکهها، زیرساختها به صورت خودکار و با تعریف کد، پیکربندی و مدیریت میشوند. این روش نه تنها امکان تکرار تغییرات را آسان میکند، بلکه خطاهای انسانی را نیز کاهش میدهد.
مزایای استفاده از IaC
- اتوماتیکسازی: تمامی زیرساختها به صورت خودکار پیادهسازی و مدیریت میشوند.
- قابلیت تکرار: تمامی پیکربندیها به راحتی میتوانند در محیطهای مختلف تکرار شوند.
- قابلیت نسخهبندی: تغییرات زیرساخت میتوانند به صورت نسخهبندی مدیریت شوند.
۲. استفاده از Ansible برای مدیریت پیکربندی
Ansible یک ابزار محبوب برای مدیریت پیکربندی زیرساختها است که به کمک آن میتوان پیکربندیهای سرورهای ابری را به صورت خودکار انجام داد.
مرحله ۱: نصب Ansible
ابتدا Ansible را بر روی سرور نصب کنید:
sudo apt-get update
sudo apt-get install -y ansible
مرحله ۲: ایجاد فایل Playbook
فایلهای Playbook در Ansible برای تعریف وظایف و پیکربندیهای مختلف استفاده میشوند. به عنوان مثال، یک Playbook ساده برای نصب Nginx بر روی سرورهای ابری:
---
- name: نصب Nginx بر روی سرور ابری
hosts: all
become: yes
tasks:
- name: نصب Nginx
apt:
name: nginx
state: present
update_cache: yes
- name: اطمینان از اجرای سرویس Nginx
service:
name: nginx
state: started
مرحله ۳: اجرای Playbook
پس از ایجاد فایل Playbook، میتوانید آن را بر روی سرورهای ابری خود اجرا کنید. ابتدا یک فایل hosts
ایجاد کنید که شامل اطلاعات سرورهای ابری باشد:
[cloud_servers]
server1 ansible_host=192.168.1.100 ansible_user=root
server2 ansible_host=192.168.1.101 ansible_user=root
سپس Playbook را اجرا کنید:
ansible-playbook -i hosts install_nginx.yml
این دستور Nginx را بر روی تمامی سرورهای ابری شما نصب و پیکربندی میکند.
۳. استفاده از Terraform برای مدیریت زیرساختها
Terraform یکی دیگر از ابزارهای محبوب IaC است که برای تعریف، پیادهسازی و مدیریت زیرساختها استفاده میشود. با Terraform میتوانید منابع زیرساختی مانند سرورها، شبکهها و دیسکها را با استفاده از کد مدیریت کنید.
مرحله ۱: نصب Terraform
برای نصب Terraform، ابتدا آخرین نسخه آن را دانلود کنید:
wget https://releases.hashicorp.com/terraform/1.0.0/terraform_1.0.0_linux_amd64.zip
unzip terraform_1.0.0_linux_amd64.zip
sudo mv terraform /usr/local/bin/
مرحله ۲: ایجاد فایل پیکربندی Terraform
فایلهای پیکربندی در Terraform با استفاده از زبان HCL (HashiCorp Configuration Language) نوشته میشوند. در اینجا یک فایل نمونه برای ایجاد یک سرور ابری:
provider "local" {
alias = "example"
}
resource "local_file" "example" {
filename = "example.txt"
content = "این یک فایل نمونه است که توسط Terraform ایجاد شده است."
}
این فایل یک فایل متنی به نام example.txt
در سرور ایجاد میکند.
مرحله ۳: اجرای پیکربندی
برای اجرای پیکربندی Terraform، ابتدا باید محیط را مقداردهی اولیه کنید:
terraform init
سپس فایل پیکربندی را اجرا کنید:
terraform apply
پس از اجرای این دستور، فایل متنی example.txt
بر روی سرور ایجاد میشود.
۴. ترکیب Ansible و Terraform
در بسیاری از موارد، میتوانید از ترکیب Ansible و Terraform برای مدیریت زیرساختها استفاده کنید. Terraform برای ایجاد منابع زیرساختی (مانند ایجاد سرورهای مجازی و شبکهها) و Ansible برای پیکربندی آن منابع بسیار مناسب است.
مرحله ۱: ایجاد زیرساخت با Terraform
ابتدا با استفاده از Terraform سرورهای ابری خود را ایجاد کنید. به عنوان مثال:
provider "local" {
alias = "cloud_provider"
}
resource "local_file" "server_config" {
filename = "server_config.txt"
content = "این فایل برای پیکربندی سرورهای ابری استفاده میشود."
}
مرحله ۲: پیکربندی سرورها با Ansible
پس از ایجاد سرورها، میتوانید با استفاده از Ansible، پیکربندیهای لازم را انجام دهید. به عنوان مثال، برای نصب Docker بر روی سرورهای جدید:
---
- name: نصب Docker
hosts: all
become: yes
tasks:
- name: نصب پیشنیازهای Docker
apt:
name: "{{ item }}"
state: present
loop:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- name: اضافه کردن کلید GPG
command: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- name: نصب Docker
apt:
name: docker-ce
state: present
این Playbook به صورت خودکار Docker را بر روی سرورهای شما نصب و پیکربندی میکند.
۵. امنیت و مدیریت تغییرات در IaC
مرحله ۱: کنترل نسخه
یکی از مزایای IaC این است که شما میتوانید تمامی فایلهای پیکربندی خود را با استفاده از ابزارهای کنترل نسخه مانند Git مدیریت کنید. این به شما امکان میدهد تمامی تغییرات را ردیابی و بررسی کنید.
مرحله ۲: استفاده از فایلهای رمزگذاری شده
برای اطمینان از امنیت در IaC، میتوانید از ابزارهایی مانند ansible-vault
استفاده کنید تا اطلاعات حساس مانند رمزهای عبور را رمزگذاری کنید:
ansible-vault create secrets.yml
سپس میتوانید این فایل را در Playbook خود استفاده کنید.
نتیجهگیری
در این مستندات، به بررسی پیادهسازی زیرساخت به عنوان کد (IaC) با استفاده از ابزارهای Ansible و Terraform بر روی سرورهای ابری پرداخته شد. با استفاده از این ابزارها، میتوانید زیرساختهای خود را به صورت خودکار و با کد مدیریت کنید، تغییرات را نسخهبندی کنید و از خطاهای انسانی جلوگیری کنید.