Thứ hai, 13/10/2014 | 00:00 GMT+7

Giới thiệu về Cloud-Config Scripting

Chương trình cloud-init có sẵn trên các bản phân phối gần đây (chỉ Ubuntu 14.04 và CentOS 7 tại thời điểm viết bài này) có thể sử dụng và thực thi dữ liệu từ trường dữ liệu user-data của dịch vụ metadata DigitalOcean . Quá trình này hoạt động khác nhau tùy thuộc vào định dạng của thông tin mà nó tìm thấy. Một trong những định dạng phổ biến nhất cho các tập lệnh trong user-data là định dạng file cấu hình cloud .

Các file cấu hình cloud là các tập lệnh đặc biệt được thiết kế để chạy bởi quy trình cloud-init. Chúng thường được sử dụng cho cấu hình ban đầu trong lần khởi động đầu tiên của server . Trong hướng dẫn này, ta sẽ thảo luận về định dạng và cách sử dụng các file cấu hình cloud .

Thông tin chung về Cloud-Config

Định dạng cloud-config triển khai cú pháp khai báo cho nhiều mục cấu hình chung, giúp bạn dễ dàng hoàn thành nhiều tác vụ. Nó cũng cho phép bạn chỉ định các lệnh tùy ý cho bất kỳ thứ gì nằm ngoài khả năng khai báo được định nghĩa .

Cách tiếp cận “tốt nhất của cả hai thế giới” này cho phép file hoạt động giống như file cấu hình cho các việc thông thường, đồng thời duy trì tính linh hoạt của một tập lệnh cho các chức năng phức tạp hơn.

Định dạng YAML

Tệp được ghi bằng định dạng tuần tự hóa dữ liệu YAML. Định dạng YAML được tạo ra để dễ hiểu đối với con người và dễ phân tích cú pháp cho các chương trình.

Các file YAML nhìn chung khá trực quan để hiểu khi đọc chúng, nhưng bạn nên biết các luật thực tế chi phối chúng.

Một số luật quan trọng cho file YAML là:

  • Thụt lề với khoảng trắng cho biết cấu trúc và mối quan hệ của các mục với nhau. Các mục được thụt lề nhiều hơn là các mục con của mục đầu tiên có mức độ thụt lề thấp hơn ở trên chúng.
  • Các thành viên trong danh sách có thể được xác định bằng dấu gạch ngang ở đầu.
  • Các mục nhập mảng liên kết được tạo bằng cách sử dụng dấu hai chấm (:) theo sau là dấu cách và giá trị.
  • Các khối văn bản được thụt vào. Để cho biết khối sẽ được đọc như hiện tại, với định dạng được duy trì, hãy sử dụng ký tự ống dẫn (|) trước khối.

Hãy thực hiện các luật này và phân tích một file cloud-config , chỉ chú ý đến định dạng:

#cloud-config users:   - name: demo     groups: sudo     shell: /bin/bash     sudo: ['ALL=(ALL) NOPASSWD:ALL']     ssh-authorized-keys:       - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRX user@example.com       - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcthLR0qW6y1eWtlmgUE/DveL4XCaqK6PQlWzi445v6vgh7emU4R5DmAsz+plWooJL40dDLCwBt9kEcO/vYzKY9DdHnX8dveMTJNU/OJAaoB1fV6ePvTOdQ6F3SlF2uq77xYTOqBiWjqF+KMDeB+dQ+eGyhuI/z/aROFP6pdkRyEikO9YkVMPyomHKFob+ZKPI4t7TwUi7x1rZB1GsKgRoFkkYu7gvGak3jEWazsZEeRxCgHgAV7TDm05VAWCrnX/+RzsQ/1DecwSzsP06DGFWZYjxzthhGTvH/W5+KFyMvyA+tZV4i1XM+CIv/Ma/xahwqzQkIaKUwsldPPu00jRN user@desktop runcmd:   - touch /test.txt 

Bằng cách xem file này, ta có thể học được một số điều quan trọng.

Trước tiên, mỗi file cloud-config phải bắt đầu bằng #cloud-config trên dòng đầu tiên. Điều này báo hiệu cho chương trình cloud-init rằng nó phải được hiểu là file cloud-config . Nếu đây là một file script thông thường, dòng đầu tiên sẽ cho biết trình thông dịch sẽ được sử dụng để thực thi file .

Tệp trên có hai chỉ thị cấp cao nhất, usersruncmd . Cả hai đều đóng role là key . Giá trị của các khóa này bao gồm tất cả các dòng thụt vào sau các khóa.

Trong trường hợp khóa users , giá trị là một mục danh sách duy nhất. Ta biết điều này bởi vì cấp độ thụt lề tiếp theo là dấu gạch ngang (-) chỉ định một mục danh sách và vì chỉ có một dấu gạch ngang ở cấp độ thụt lề này. Trong trường hợp chỉ thị users , điều này tình cờ cho biết ta chỉ xác định một user duy nhất.

Bản thân mục danh sách chứa một mảng kết hợp với nhiều cặp key-value hơn. Đây là các phần tử anh em vì chúng đều tồn tại ở cùng một mức độ thụt lề. Mỗi thuộc tính user được chứa trong một mục danh sách mà ta đã mô tả ở trên.

Một số điều cần lưu ý là các chuỗi bạn thấy không yêu cầu trích dẫn và không có dấu ngoặc không cần thiết để xác định các liên kết. Trình thông dịch có thể xác định kiểu dữ liệu khá dễ dàng và thụt lề cho biết mối quan hệ của các mục, cho cả con người và chương trình.

Bây giờ, bạn đã có kiến thức làm việc về định dạng YAML và cảm thấy thoải mái khi làm việc với thông tin bằng cách sử dụng các luật mà ta đã thảo luận ở trên.

Bây giờ ta có thể bắt đầu khám phá một số chỉ thị phổ biến nhất cho cloud-config .

Quản lý user và group

Để xác định user mới trên hệ thống, bạn có thể sử users chỉ thị users mà ta đã thấy trong file ví dụ ở trên.

Định dạng chung của định nghĩa user là:

#cloud-config users:   - first_user_parameter     first_user_parameter    - second_user_parameter     second_user_parameter     second_user_parameter     second_user_parameter 

Mỗi user mới nên bắt đầu bằng một dấu gạch ngang. Mỗi user xác định các tham số trong các cặp key-value . Các khóa sau có sẵn để định nghĩa:

  • tên : Tên user account .
  • group chính : Group chính của user . Theo mặc định, đây sẽ là một group được tạo phù hợp với tên user . Bất kỳ group nào được chỉ định ở đây phải đã tồn tại hoặc phải được tạo một cách rõ ràng ( ta sẽ thảo luận về điều này sau trong phần này).
  • group : Bất kỳ group bổ sung nào cũng có thể được liệt kê ở đây, được phân tách bằng dấu phẩy.
  • gecos : Một trường cho thông tin bổ sung về user .
  • shell : Vỏ cần được cài đặt cho user . Nếu bạn không đặt cái này thì vỏ sh rất cơ bản sẽ được sử dụng.
  • hết hạn : Ngày mà account sẽ hết hạn, ở định dạng YYYY-MM-DD.
  • sudo : Chuỗi sudo để sử dụng nếu bạn muốn xác định quyền sudo, không có trường tên user .
  • lock-passwd : Giá trị này được đặt thành “True” theo mặc định. Đặt giá trị này thành “Sai” để cho phép user đăng nhập bằng password .
  • passwd : Mật khẩu được băm cho account .
  • ssh-allow-key : Danh sách các public key SSH hoàn chỉnh sẽ được thêm vào file authorized_keys của user này trong .ssh của họ.
  • không hoạt động : Giá trị boolean sẽ đặt account thành không hoạt động.
  • hệ thống : Nếu "Đúng", account này sẽ là account hệ thống không có folder chính.
  • homedir : Được sử dụng để overrides mặc định /home/<username> , được tạo và đặt khác.
  • ssh-import-id : ID SSH để nhập từ LaunchPad.
  • selinux-user : Điều này được dùng để cài đặt user SELinux sẽ được sử dụng để đăng nhập account này.
  • no-create-home : Đặt thành “True” để tránh tạo folder /home/<username> cho user .
  • no-user-group : Đặt thành “True” để tránh tạo group trùng tên với user .
  • no-log-init : Đặt thành “True” để không khởi tạo database đăng nhập của user .

Ngoài một số thông tin cơ bản, chẳng hạn như khóa name , bạn chỉ cần xác định các khu vực mà bạn đang đi lệch so với mặc định hoặc cung cấp dữ liệu cần thiết.

Một điều đó là quan trọng đối với người sử dụng để nhận ra là các passwd lĩnh vực không nên được sử dụng trong các hệ thống production , trừ khi bạn có một cơ chế ngay lập tức thay đổi giá trị nhất định. Như với tất cả thông tin được gửi dưới dạng dữ liệu user , hàm băm sẽ vẫn có thể truy cập được đối với bất kỳ user nào trên hệ thống trong suốt thời gian hoạt động của server . Trên phần cứng hiện đại, những hàm băm này có thể dễ dàng bị bẻ khóa trong một khoảng thời gian nhỏ. Việc để lộ ngay cả hàm băm là một rủi ro bảo mật lớn không nên xảy ra trên bất kỳ máy nào không dùng một lần.

Đối với định nghĩa user mẫu, ta có thể sử dụng một phần của cloud-config mà ta đã thấy ở trên:

#cloud-config users:   - name: demo     groups: sudo     shell: /bin/bash     sudo: ['ALL=(ALL) NOPASSWD:ALL']     ssh-authorized-keys:       - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRX user@example.com       - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcthLR0qW6y1eWtlmgUE/DveL4XCaqK6PQlWzi445v6vgh7emU4R5DmAsz+plWooJL40dDLCwBt9kEcO/vYzKY9DdHnX8dveMTJNU/OJAaoB1fV6ePvTOdQ6F3SlF2uq77xYTOqBiWjqF+KMDeB+dQ+eGyhuI/z/aROFP6pdkRyEikO9YkVMPyomHKFob+ZKPI4t7TwUi7x1rZB1GsKgRoFkkYu7gvGak3jEWazsZEeRxCgHgAV7TDm05VAWCrnX/+RzsQ/1DecwSzsP06DGFWZYjxzthhGTvH/W5+KFyMvyA+tZV4i1XM+CIv/Ma/xahwqzQkIaKUwsldPPu00jRN user@desktop 

Để xác định group , bạn nên sử dụng chỉ thị groups . Chỉ thị này tương đối đơn giản ở chỗ nó chỉ lấy một danh sách các group bạn muốn tạo.

Một phần mở rộng tùy chọn cho điều này là tạo một danh sách phụ cho bất kỳ group nào bạn đang tạo. Danh sách mới này sẽ xác định những user sẽ được xếp vào group này:

#cloud-config groups:   - group1   - group2: [user1, user2] 

Thay đổi password cho user hiện tại

Đối với account user đã tồn tại (tài khoản root là phù hợp nhất), password có thể được cung cấp bằng cách sử dụng chỉ thị chpasswd .

Lưu ý: Chỉ thị này chỉ nên được sử dụng trong các tình huống gỡ lỗi, bởi vì, , giá trị sẽ được cung cấp cho mỗi user trên hệ thống trong suốt thời gian cuộc sống của server . Điều này thậm chí còn phù hợp hơn trong phần này vì password được gửi cùng với chỉ thị này phải được cung cấp ở dạng văn bản thuần túy .

Cú pháp cơ bản giống như sau:

#cloud-config chpasswd:   list: |     user1:password1     user2:password2     user3:password3   expire: False 

Chỉ thị chứa hai khóa mảng kết hợp. Khóa list sẽ chứa một khối liệt kê tên account và password liên quan mà bạn muốn gán. Khóa expire là một boolean xác định liệu password có phải được thay đổi ở lần khởi động đầu tiên hay không. Điều này mặc định là "Đúng".

Một điều cần lưu ý là bạn có thể đặt password thành “RANDOM” hoặc “R”, password này sẽ tạo ra một password ngẫu nhiên và ghi nó vào /var/log/cloud-init-output.log . Lưu ý mọi user trên hệ thống cũng có thể truy cập file này, vì vậy nó không an toàn hơn nữa.

Ghi file vào đĩa

Để ghi file vào đĩa, bạn nên sử dụng chỉ thị write_files .

Mỗi file cần được viết được đại diện bởi một mục danh sách trong chỉ thị. Các mục danh sách này sẽ là các mảng kết hợp xác định các thuộc tính của mỗi file .

Các khóa bắt buộc duy nhất trong mảng này là path , xác định vị trí ghi file và content chứa dữ liệu bạn muốn file chứa.

Các khóa khả dụng để cấu hình mục write_files là:

  • path : Đường dẫn tuyệt đối đến vị trí trên hệ thống file nơi file sẽ được ghi.
  • content : Nội dung cần được đặt trong file . Đối với đầu vào nhiều dòng, bạn nên bắt đầu một khối bằng cách sử dụng ký tự gạch đầu dòng (|) trên dòng “nội dung”, theo sau là một khối thụt vào chứa nội dung. Các file binary phải bao gồm “!! binary” và một khoảng trắng trước ký tự ống dẫn.
  • chủ sở hữu : Tài khoản và group user sẽ được cấp quyền sở hữu file . Chúng phải được cung cấp ở định dạng "tên user : group ".
  • quyền : Bộ quyền bát phân sẽ được cấp cho file này.
  • mã hóa : Đặc điểm kỹ thuật mã hóa tùy chọn cho file . Đây có thể là “b64” cho file Base64, “gzip” cho file nén Gzip hoặc “gz + b64” cho kết hợp. Loại bỏ điều này sẽ sử dụng loại file mặc định, thông thường.

Ví dụ: ta có thể ghi một file vào /test.txt với nội dung:

Here is a line. Another line is here. 

Phần cloud-config sẽ thực hiện điều này sẽ giống như sau:

#cloud-config write_files:   - path: /test.txt     content: |       Here is a line.       Another line is here. 

Cập nhật hoặc cài đặt gói trên server

Để quản lý các gói, có một số cài đặt và chỉ thị liên quan cần ghi nhớ.

Để cập nhật database apt trên các bản phân phối dựa trên Debian, bạn nên đặt chỉ thị package_update thành “true”. Điều này đồng nghĩa với việc gọi apt-get update từ dòng lệnh.

Giá trị mặc định thực sự là "true", vì vậy bạn chỉ cần lo lắng về chỉ thị này nếu bạn muốn tắt nó:

#cloud-config package_update: false 

Nếu bạn muốn nâng cấp tất cả các gói trên server của bạn sau khi nó khởi động lần đầu tiên, bạn có thể đặt chỉ thị package_upgrade . Điều này tương tự như apt-get upgrade thực hiện theo cách thủ công.

Điều này được đặt thành “false” theo mặc định, vì vậy hãy đảm bảo bạn đặt điều này thành “true” nếu bạn muốn có chức năng:

#cloud-config package_upgrade: true 

Để cài đặt các gói bổ sung, bạn có thể chỉ cần liệt kê các tên gói bằng cách sử dụng chỉ thị “package”. Mỗi mục danh sách phải đại diện cho một gói. Không giống như hai lệnh trên, chỉ thị này sẽ hoạt động với các bản phân phối được quản lý yum hoặc apt.

Các mục này có thể có một trong hai dạng. Đầu tiên chỉ đơn giản là một chuỗi với tên của gói. Dạng thứ hai là một danh sách có hai mục. Mục đầu tiên của danh sách mới này là tên gói và mục thứ hai là số version :

#cloud-config packages:   - package_1   - package_2   - [package_3, version_num] 

Lệnh "gói" sẽ đặt apt_update thành true, overrides mọi cài đặt trước đó.

Cấu hình Khóa SSH cho Tài khoản User và Daemon SSH

Bạn có thể quản lý SSH key trong chỉ thị users , nhưng bạn cũng có thể chỉ định chúng trong phần ssh_authorized_keys chuyên dụng. Chúng sẽ được thêm vào file ủy quyền của user được xác định đầu tiên.

Điều này có cùng định dạng chung của đặc điểm kỹ thuật chính trong chỉ thị users :

#cloud-config ssh_authorized_keys:   - ssh_key_1   - ssh_key_2 

Bạn cũng có thể tạo private key của server SSH trước thời hạn và đặt chúng trên hệ thống file . Điều này có thể hữu ích nếu bạn muốn cung cấp trước cho khách hàng của bạn thông tin về server này, cho phép server tin cậy ngay khi trực tuyến.

Để làm điều này, ta có thể sử dụng chỉ thị ssh_keys . Điều này có thể lấy các cặp khóa cho các khóa RSA, DSA hoặc ECDSA bằng cách sử dụng các mục con rsa_private , rsa_public , dsa_private , dsa_public , ecdsa_privateecdsa_public .

Vì định dạng và ngắt dòng là quan trọng đối với private key , hãy đảm bảo sử dụng một khối có khóa ký tự khi chỉ định các khóa này. Ngoài ra, bạn phải bao gồm các dòng khóa bắt đầu và khóa kết thúc để khóa của bạn có hiệu lực.

#cloud-config ssh_keys:   rsa_private: |     -----BEGIN RSA PRIVATE KEY-----     your_rsa_private_key     -----END RSA PRIVATE KEY-----    rsa_public: your_rsa_public_key 

Cài đặt certificate CA tin cậy

Nếu cơ sở hạ tầng của bạn dựa trên các khóa được ký bởi tổ chức phát hành certificate nội bộ, bạn có thể cài đặt các máy mới của bạn để tin cậy certificate CA của bạn bằng lệnh thông tin certificate . Đối với điều này, ta sử dụng chỉ thị ca-certs .

Chỉ thị này có hai mục phụ. Đầu tiên là remove-defaults , khi được đặt thành true, sẽ xóa tất cả thông tin tin cậy certificate bình thường được bao gồm theo mặc định. Điều này thường không cần thiết và có thể dẫn đến một số vấn đề nếu bạn không biết mình đang làm gì, vì vậy hãy thận trọng khi sử dụng.

Mục thứ hai là trusted , là một danh sách, mỗi mục chứa một certificate CA tin cậy :

#cloud-config ca-certs:   remove-defaults: true   trusted:     - |       -----BEGIN CERTIFICATE-----       your_CA_cert       -----END CERTIFICATE----- 

Cấu hình Resolutionv.conf để Sử dụng Server DNS Cụ thể

Nếu bạn đã cấu hình các server DNS của riêng mình mà bạn muốn sử dụng, bạn có thể quản lý file resolv_conf của server bằng cách sử dụng chỉ thị resolv_conf . Điều này hiện chỉ hoạt động cho các bản phân phối dựa trên RHEL.

Dưới sự resolv_conf chỉ thị, bạn có thể quản lý cài đặt của bạn với nameservers , searchdomains , domain , và options các mặt hàng.

Chỉ thị nameservers sẽ lấy một danh sách các địa chỉ IP của server định danh của bạn. Các searchdomains chỉ mất một danh sách các lĩnh vực và domain phụ để tìm kiếm trong khi user chỉ định một server nhưng không phải là một domain .

domain đặt domain sẽ được sử dụng cho bất kỳ yêu cầu không thể giải quyết nào và options chứa một tập hợp các tùy chọn có thể được xác định trong file Resolutionv.conf.

Nếu bạn đang sử dụng chỉ thị resolv_conf , bạn phải đảm bảo chỉ thị manage-resolv-conf cũng được đặt thành đúng. Không làm như vậy sẽ khiến cài đặt của bạn bị bỏ qua:

#cloud-config manage-resolv-conf: true resolv_conf:   nameservers:     - 'first_nameserver'     - 'second_nameserver'   searchdomains:     - first.domain.com     - second.domain.com   domain: domain.com   options:     option1: value1     option2: value2     option3: value3 

Chạy các lệnh tùy ý để kiểm soát nhiều hơn

Nếu không có hành động nào được quản lý mà cloud-config cung cấp hoạt động cho những gì bạn muốn làm, bạn cũng có thể chạy các lệnh tùy ý. Bạn có thể thực hiện việc này với lệnh runcmd .

Chỉ thị này có một danh sách các mục để thực thi. Những mục này có thể được chỉ định theo hai cách khác nhau, điều này sẽ ảnh hưởng đến cách chúng được xử lý.

Nếu mục danh sách là một chuỗi đơn giản, toàn bộ mục sẽ được chuyển cho quá trình shell sh để chạy.

Các tùy chọn khác là phải vượt qua một danh sách, từng hạng mục trong số đó sẽ được thực hiện theo một cách tương tự như cách execve quá trình lệnh. Mục đầu tiên sẽ được hiểu là lệnh hoặc tập lệnh để chạy và các mục sau sẽ được chuyển làm đối số cho lệnh đó.

Hầu hết user có thể sử dụng một trong hai định dạng này, nhưng tính linh hoạt cho phép bạn chọn tùy chọn tốt nhất nếu bạn có yêu cầu đặc biệt. Mọi kết quả sẽ được ghi thành tiêu chuẩn và vào file /var/log/cloud-init-output.log :

#cloud-config runcmd:   - [ sed, -i, -e, 's/here/there/g', some_file]   - echo "modified some_file"   - [cat, some_file] 

Tắt hoặc Khởi động lại Server

Trong một số trường hợp, bạn cần tắt hoặc khởi động lại server của bạn sau khi thực hiện các mục khác. Bạn có thể thực hiện việc này bằng cách cài đặt chỉ thị power_state .

Chỉ thị này có bốn mục con có thể được cài đặt . Đó là delay , timeout , messagemode .

Độ delay chỉ định khoảng thời gian trong tương lai việc khởi động lại hoặc tắt máy sẽ xảy ra. Theo mặc định, đây sẽ là “bây giờ”, nghĩa là thủ tục sẽ bắt đầu ngay lập tức. Để thêm thời gian trễ, user nên chỉ định lượng thời gian sẽ trôi qua bằng cách sử dụng định dạng +<num_of_mins> , tính bằng phút.

Tham số timeout nhận một giá trị nhỏ hơn đơn vị đại diện cho số giây để chờ cloud-init hoàn tất trước khi bắt đầu đếm ngược delay .

Trường message cho phép bạn chỉ định một tin nhắn sẽ được gửi đến tất cả user của hệ thống. mode chỉ định loại sự kiện nguồn sẽ bắt đầu. Đây có thể là "khởi động" để tắt server , "khởi động lại" để khởi động lại server hoặc "dừng" để hệ thống quyết định hành động nào là tốt nhất (thường là tắt máy):

#cloud-config power_state:   timeout: 120   delay: "+5"   message: Rebooting in five minutes. Please save your work.   mode: reboot 

Kết luận

Các ví dụ trên đại diện cho một số mục cấu hình phổ biến hơn có sẵn khi chạy file cloud-config . Có những khả năng bổ sung mà ta không đề cập trong hướng dẫn này. Chúng bao gồm cài đặt quản lý cấu hình, cấu hình các repository bổ sung và thậm chí đăng ký bằng URL bên ngoài khi server được khởi tạo.

Bạn có thể tìm hiểu thêm về một số tùy chọn này bằng cách kiểm tra folder /usr/share/doc/cloud-init/examples . Để có hướng dẫn thực tế giúp bạn làm quen với các file cloud-config , bạn có thể làm theo hướng dẫn của ta về cách sử dụng cấu hình cloud để hoàn thành cấu hình server cơ bản tại đây.


Tags:

Các tin liên quan