Cách tự động tạo máy ảo trong Azure bằng cloud-init

Cách tự động tạo máy ảo trong Azure bằng cloud-init

Chia sẻ kiến thức 12/05/2023

Việc tạo một máy ảo đã nhàm chán, nhưng tạo hàng trăm máy ảo còn tốn thời gian. cloud-init là công cụ cho phép bạn tự động tạo máy ảo trong Microsoft Azure.

 

Nếu bạn đã từng thiết lập một máy ảo, bạn sẽ biết quy trình đó hoạt động như thế nào. Bạn nhấp vào chỗ này và chỗ kia và cuối cùng, bạn đã thiết lập được một hệ thống. Nhưng sau đó, bạn vẫn phải cài đặt phần mềm và định cấu hình máy ảo (virtual machine, viết tắt là VM) theo sở thích của mình.

Nếu bạn cần thiết lập hàng trăm máy ảo, cách trên sẽ không hiệu quả mà bạn cần tự động hóa quy trình. Hãy cùng FUNiX cách tự động cài đặt hệ điều hành và cấu hình máy ảo bằng cách sử dụng cloud-init trong Microsoft Azure.

Tại sao nên dùng cloud-init để tự động tạo VM?

cloud-init là một công cụ tự động triển khai mạnh mẽ phát triển bởi Canonical, công ty đứng sau Ubuntu.

Bạn có thể cài đặt và triển khai hệ điều hành Linux, định cấu hình các khía cạnh khác của máy ảo với cloud-init. Ví dụ: bạn có thể dùng cloud-init để thiết lập tài khoản người dùng, thêm khóa SSH, cài đặt và định cấu hình phần mềm, v.v.

Hiện tại, các nhà cung cấp dịch vụ đám mây lớn như Azure và Amazon Web Services (AWS) đều hỗ trợ cloud-init.

cloud-init hỗ trợ tất cả các bản phân phối chính của Linux như openSUSE, Debian, Red Hat Enterprise Linux (RHEL), v.v.

Ngoài việc triển khai phần mềm trên đám mây, cloud-init cũng có thể được dùng để định cấu hình và cài đặt phần mềm trên máy chủ tại chỗ hoặc môi trường ảo như KVM, VirtualBox và VMware.

Hướng dẫn dưới đây sử dụng nền tảng đám mây Azure để tự động triển khai máy chủ Ubuntu bằng cloud-init.

Bước 1: Tạo tập lệnh cloud-init

Tập lệnh (script) cloud-init sử dụng các mô-đun để định cấu hình nhiều khía cạnh khác nhau của hệ thống. Ví dụ: bạn sẽ dùng mô-đun users để định cấu hình thông tin và tài khoản người dùng, mô-đun wireguard để định cấu hình WireGuard, v.v. Có rất nhiều mô-đun khác mà bạn có thể dùng ngay lập tức.

Hãy cùng FUNiX tạo một tập lệnh cloud-init để tự động hóa hầu hết những thứ bạn muốn cấu hình khi thiết lập một máy ảo mới.

Chúng ta sẽ tạo một người dùng có tên “mwiza” và gán cho họ một mật khẩu. Bạn có thể sử dụng mật khẩu văn bản đơn giản hoặc mã hóa nó nếu muốn. Ngoài ra, bạn nên thêm khóa SSH của người dùng vào các khóa được ủy quyền. Điều này cho phép bạn sau này tắt đăng nhập mật khẩu SSH để bảo mật tốt hơn.

Ngoài việc tạo người dùng mới, tập lệnh sẽ thực hiện các việc:

  • Viết tệp: Tạo một tệp trong thư mục chính và ghi nội dung vào đó bằng cách sử dụng mô-đun write_files. Bạn có thể làm theo cách tương tự để tạo các tệp phức tạp hơn trong tương lai.
  • Chạy các lệnh: Chúng ta sẽ chạy các lệnh đơn giản để định cấu hình tường lửa UFW, nhưng nó cũng có thể là bất kỳ lệnh Linux nào khác. Sử dụng mô-đun runcmd để chạy bất kỳ lệnh nào bạn muốn; nó cũng giống như việc chạy các lệnh Linux bằng cách thực thi các tập lệnh Bash.
  • Định cấu hình ngôn ngữ: đặt bố cục bàn phím, ngôn ngữ ưa thích, múi giờ, v.v.
  • Cài đặt gói: Sử dụng trình quản lý gói bạn quen thuộc để cài đặt các gói trên hệ thống của bạn. 
 

Trên đây chỉ là một số mô-đun bạn có thể sử dụng từ cloud-init; có  rất nhiều mô-đun khác để tự động hóa tất cả mọi thứ bạn cần.

Đây là tập lệnh cloud-init đầy đủ để định cấu hình tài khoản người dùng mới. Đừng quên thay thế khóa SSH bằng khóa chính xác. Ngoài ra, hãy thay đổi tên người dùng và bất kỳ chi tiết nào khác.

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

Tập lệnh khởi tạo trên đám mây sử dụng YAML, vì vậy bạn hãy đảm bảo rằng phần thụt đầu dòng là chính xác, nếu không, tập lệnh sẽ không hoạt động đúng cách. 

Bước 2: Tạo tài nguyên máy ảo

Bước hai là tạo tài nguyên cần thiết cho máy ảo trong Azure. Đăng nhập vào Azure nếu đã có tài khoản hoặc tạo tài khoản dùng thử miễn phí bằng cách truy cập vào website azure.microsoft.com.

Trên trang chủ Azure, nhấp vào nút Create a resource (Tạo tài nguyên). Từ danh sách các dịch vụ Azure phổ biến, chọn Virtual Machine.

Trang tiếp theo cung cấp thông tin để tạo tài nguyên máy ảo như đĩa cứng, kết nối mạng, v.v.

Đặt tên cho máy ảo của bạn và chọn khu vực triển khai. Ngoài ra, hãy tạo một nhóm tài nguyên cho máy ảo của bạn hoặc dùng một nhóm hiện có.

 

Trong Authentication (Xác thực), chọn tùy chọn Password (Mật khẩu) và cung cấp tên người dùng và mật khẩu của bạn.

Sau khi bạn điền vào tất cả các trường này, thông tin chi tiết của bạn sẽ tương tự như ảnh sau.

 

Bước 3: Thêm Tập lệnh cloud-init của bạn

Tiếp theo, nhấp vào tab Advanced để thêm tập lệnh cloud-init. Copy và paste tập lệnh cloud-init từ bước đầu tiên vào trường dữ liệu tùy chỉnh.

Cuối cùng, nhấp vào nút Review + create. Nếu có trục trặc, Azure creator sẽ hướng dẫn bạn cách chỉnh sửa.

Bước 4: Đăng nhập vào máy ảo của bạn

Sử dụng thông tin tổng quan về VM để lấy địa chỉ IP công cộng của máy ảo và đăng nhập qua SSH. Nếu bạn đã dùng đúng khóa SSH, hệ thống sẽ không nhắc bạn nhập mật khẩu người dùng.

Sau khi đăng nhập, bạn có thể check xem các tệp bạn muốn tạo thông qua tập lệnh có ở đó không. Ngoài ra, hãy tìm các gói đã cài đặt có APT và kiểm tra xem tường lửa đã được cấu hình chính xác chưa với lệnh sudo ufw status .

cloud-init cũng ghi lại các thông tin quan trọng trong tệp /var/log/cloud-init.log. Tệp này chứa các thông báo chi tiết về tất cả các sự kiện đã xảy ra trong quá trình khởi tạo cloud-init. Bạn có thể kiểm tra tệp này với lệnh cat:

 
cat /var/log/cloud-init.log

Tự động tạo máy ảo với cloud-init

cloud-init là một công cụ tuyệt vời giúp bạn tự động cài đặt và thiết lập Linux. Bạn có thể sử dụng nó trên đám mây hoặc các máy chủ tại chỗ. Dù bạn chỉ muốn tự động hóa việc triển khai máy ảo của mình hay cần triển khai nhiều máy chủ Linux trên quy mô lớn, thì cloud-init đều là một lựa chọn tuyệt vời.

Đăng ký khóa học lập trình của FUNiX tại đây:

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/automate-virtual-machine-creation-azure-with-cloud-init/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!