Cơ sở kiến thức

Thực hiện công việc khởi động đầu tiên với cloud-init

Đính kèm một tài liệu user-data vào đơn hàng và instance sẽ đến với người dùng, khóa, gói phần mềm và tường lửa của bạn đã sẵn sàng từ đầu.

Cái gì chạy, và khi nào

Mọi bản image Linux đều mang cloud-init. Ở lần khởi động đầu tiên, nó đọc user-data gắn với đơn hàng của bạn, áp dụng một lần, và ghi một dấu đánh dấu để nó không bao giờ chạy lại. Tất cả điều đó xảy ra trước khi bạn có thể gõ bất cứ thứ gì, đó là điểm mấu chốt: khoảng thời gian giữa lúc một instance tồn tại và được cấu hình là khoảng thời gian bạn không nên có.

Xác thực tài liệu trước khi bạn đặt hàng. Trình kiểm tra schema sẽ bắt lỗi thụt lề mà nếu không sẽ khiến bạn phải dựng lại:

cloud-init schema --config-file user-data.yaml --annotate

Một user-data làm những việc hữu ích

#cloud-config
hostname: edge-01
fqdn: edge-01.example.com
timezone: UTC

users:
  - name: deploy
    groups: [sudo]
    shell: /bin/bash
    sudo: "ALL=(ALL) NOPASSWD:ALL"
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3Nza... deploy@laptop

ssh_pwauth: false
disable_root: true

package_update: true
package_upgrade: true
packages:
  - nftables
  - vnstat
  - mtr-tiny

write_files:
  - path: /etc/ssh/sshd_config.d/10-local.conf
    permissions: "0644"
    content: |
      PermitRootLogin no
      PasswordAuthentication no
      AllowUsers deploy

runcmd:
  - [systemctl, enable, --now, nftables]
  - [systemctl, restart, ssh]

Dòng đầu tiên không phải là chú thích cũng không phải tùy chọn. Nếu thiếu #cloud-config, tài liệu sẽ bị bỏ qua trong im lặng và instance khởi động như thể bạn không đính kèm gì.

Trên AlmaLinux, groups: [sudo] trở thành groups: [wheel] và dịch vụ cần khởi động lại là sshd. Mọi thứ khác đều giống hệt.

Theo dõi hoạt động

cloud-init status --long
journalctl -u cloud-final -b
less /var/log/cloud-init-output.log

Nhật ký cho bạn biết giai đoạn nào thất bại. cloud-init-output.log chứa đầu ra thực tế của các mục runcmd của bạn, nơi lý do sẽ nằm ở đó.

Đừng đặt bí mật trong đó

User-data vẫn có thể đọc được từ bên trong instance trong suốt vòng đời của nó:

cloud-init query userdata

Bất cứ thứ gì trong đó đều có sẵn cho bất kỳ tiến trình nào đạt quyền root, và cho bất kỳ ai khôi phục snapshot của đĩa. Hãy dùng nó để cài đặt một thông tin xác thực lấy bí mật, chứ không phải để mang bí mật.

Thử nghiệm mà không đốt instance

cloud-init clean --logs --reboot

Điều đó xóa dấu đánh dấu, nhật ký và bộ nguồn dữ liệu đã lưu trong bộ nhớ cache, sau đó khởi động lại vào lần khởi động đầu tiên mới. Hãy chạy nó trên một instance dùng thử. Chạy nó trong môi trường sản xuất và bạn sẽ khám phá runcmd của mình làm gì lần thứ hai, điều hiếm khi giống lần đầu.

Điểm dừng

cloud-init dành cho khởi tạo và không biết trạng thái máy nên ở trạng thái nào vào ngày mai. Hãy dùng nó để đạt đến điểm mà công cụ thực sự của bạn có thể tiếp quản: một khóa, một mạng, một agent. Dừng ở đó. Sáu mươi dòng là một user-data lành mạnh, và sáu trăm dòng là một hệ thống quản lý cấu hình không có cách hội tụ.

cloud-init query -a
cloud-init query ds.meta_data

ID instance, mã trang web, hostname và các địa chỉ được gán lúc khởi động đều nằm trong đó, đó là thứ một tập lệnh cần khi nó phải tự đăng ký ở đâu đó mà chưa biết nó thức dậy ở đâu.

Sẵn sàng khi bạn cần

Chọn thành phố. Chọn kích thước. Thanh toán bằng coin.

Không có biểu mẫu về bạn là ai, không chờ đợi con người phê duyệt, không gọi điện thoại để xác minh bất cứ điều gì. Hóa đơn được thanh toán và thông tin đăng nhập sẽ vào hộp thư của bạn.