Dịch vụ Siêu dữ liệu cung cấp API để sử dụng trong cấu hình triển khai tự động. Các phiên bản tương thích của cloud-init có thể tận dụng dịch vụ Siêu dữ liệu để tự động định cấu hình Phiên bản điện toán mới khi triển khai. Tuy nhiên, API của dịch vụ Siêu dữ liệu cũng có thể được truy cập trực tiếp. Làm như vậy sẽ cung cấp quyền truy cập vào cả dữ liệu người dùng và phiên bản.
Trong hướng dẫn tham khảo này, hãy tìm hiểu thêm về các điểm cuối API có sẵn cho dịch vụ Siêu dữ liệu và cách sử dụng chúng. Hãy theo dõi để tìm hiểu cách truy cập API từ Phiên bản điện toán của bạn và những gì mong đợi từ mỗi điểm cuối.
Điểm cuối API
Để truy cập API Siêu dữ liệu, bạn cần phải ở trên một Phiên bản tính toán. Nếu bạn chưa thực hiện, hãy làm theo hướng dẫn của chúng tôi về Tạo Phiên bản tính toán trước khi tiếp tục.
Sau khi bạn đã triển khai một phiên bản, API Siêu dữ liệu có thể truy cập được thông qua các địa chỉ liên kết cục bộ, cụ thể là:
- IPv4: 169.254.169.254
- IPv6: fd00:a9fe:a9fe::1
Mỗi điểm cuối API Siêu dữ liệu cung cấp dữ liệu phiên bản hoặc dữ liệu người dùng. Dữ liệu phiên bản bao gồm thông tin liên quan đến việc triển khai và bản thân phiên bản, trong khi Dữ liệu người dùng bao gồm một trường cụ thể được gửi khi triển khai phiên bản.
Chỉ các khu vực được chọn mới hỗ trợ gửi dữ liệu người dùng. Ngoài ra, một số lượng bản phân phối hạn chế được hỗ trợ chính thức bởi dịch vụ Siêu dữ liệu và khởi tạo đám mây của Akamai. Để tìm hiểu thêm về Siêu dữ liệu và hỗ trợ khởi tạo đám mây, hãy xem lại phần Khả dụng trong hướng dẫn dịch vụ Siêu dữ liệu của chúng tôi.
Các phần sau đây liệt kê từng điểm cuối, giải thích cách sử dụng của chúng và cung cấp các ví dụ về đầu ra dự kiến. Sử dụng tiêu đề Accept, đầu ra thường có thể ở định dạng text/plain mặc định hoặc định dạng applciation/json.
Để minh họa, hướng dẫn cung cấp ví dụ về đầu ra ở định dạng plain-text và hiển thị cấu trúc phản hồi ở định dạng JSON khi áp dụng.
Mã thông báo xác thực (/v1/token)
Việc sử dụng API Metadata luôn bắt đầu bằng điểm cuối mã thông báo. Sử dụng điểm cuối này để xác thực phiên mới và nhận mã thông báo Metadata để truy cập các điểm cuối Metadata tiếp theo từ phiên bản của bạn.
Trong khi tất cả các điểm cuối Metadata khác sử dụng GET, các yêu cầu đến điểm cuối này sử dụng phương thức PUT:
curl -X PUT -H "Metadata-Token-Expiry-Seconds: 3600" http://169.254.169.254/v1/token
Các yêu cầu này cung cấp tiêu đề Siêu dữ liệu-Mã thông báo-Hết hạn-Giây, cho biết thời gian hết hạn của mã thông báo tính bằng giây:
Output
e80eb80986f17fcd3df8fcb6ea944774cae47b26ed6d68df63a15b294b7a6e3f
Khi sử dụng định dạng JSON, phản hồi của điểm cuối là một mảng chứa chuỗi mã thông báo:
Output
[ "token" ]
Từ đây trở đi, hướng dẫn này giả định rằng bạn đã có được mã thông báo Siêu dữ liệu. Để thuận tiện, các ví dụ tiếp theo sử dụng $TOKEN thay cho chuỗi mã thông báo thực tế. Thực hiện theo bằng cách lưu trữ mã thông báo trong một biến môi trường, như được hiển thị ở đây:
export TOKEN=$(curl -X PUT -H "Metadata-Token-Expiry-Seconds: 3600" http://169.254.169.254/v1/token)
Dữ liệu phiên bản (/v1/instance)
Để nhận thông tin về chính Phiên bản điện toán, hãy sử dụng điểm cuối phiên bản:
curl -H "Metadata-Token: $TOKEN" http://169.254.169.254/v1/instance
Đầu ra bao gồm thông tin về danh tính của phiên bản, thông số kỹ thuật và lịch trình sao lưu của nó:
Output
backups.enabled: false
host_uuid: 123abc456def789ghi
id: 532754976
label: example-linode-instance
region: us-iad
specs.disk: 51200
specs.gpus: 0
specs.memory: 2048
specs.transfer: 2000
specs.vcpus: 1
type: g6-standard-1
Phản hồi của điểm cuối được cấu trúc như hiển thị bên dưới bằng định dạng JSON:
Output
{
“id”: int,
“host_uuid”: str,
“label”: str,
“region”: str,
“type”: str,
“tags”: array of str,
“specs”: {
“vcpus”: int,
“memory”: int,
“disk”: int,
“transfer”: int,
“gpus”: int
},
“backups”: {
“enabled”: bool,
“status”: str[pending/running/complete] or null
}
}
Đối tượng tổng thể cung cấp thông tin nhận dạng về phiên bản, chẳng hạn như ID, nhãn và thẻ. Đối tượng thông số kỹ thuật lồng nhau nêu chi tiết các thông số kỹ thuật của phiên bản, trong khi đối tượng sao lưu lồng nhau cung cấp trạng thái của các bản sao lưu cho phiên bản.
Dữ liệu mạng (/v1/mạng)
Để truy xuất thông tin về cách cấu hình mạng của phiên bản, hãy sử dụng điểm cuối mạng:
curl -H "Metadata-Token: $TOKEN" http://169.254.169.254/v1/network
Hãy tham khảo điểm cuối này khi bạn cần xác định địa chỉ IP của phiên bản, giao diện mạng được định cấu hình và địa chỉ IPAM của giao diện đó:
Output
ipv4.public: 192.0.2.0/24
ipv6.link_local: fe80::db8:1b3d:e5g7::/64
ipv6.slaac: 2600:3c05::db8:1b3d:e5g7::/64
Phản hồi của điểm cuối tuân theo cấu trúc JSON được hiển thị bên dưới:
Output
{
“interfaces”: [
{
“purpose”: str[public/vlan],
“label”: str,
ipam_address”: str[optional]
},
],
“ipv4”: {
“public”: array of str,
“private”: array of str,
“elastic”: array of str
},
“ipv6”: {
“ranges”: array of str,
“link-local”: array of str
“elastic-ranges”: array of str
}
}
Mảng giao diện hiển thị những giao diện nào, nếu có, mà cá thể có. Tuy nhiên, chỉ riêng giao diện “eth0 – Internet công cộng” mặc định không dẫn đến bất kỳ kết quả đầu ra nào ở đây. Các đối tượng ipv4 và ipv6 liệt kê các địa chỉ khác nhau được cấu hình cho phiên bản.
Mã SSH:
Sử dụng điểm cuối ssh-keys để lấy danh sách tất cả các khóa SSH và người dùng liên quan được định cấu hình cho phiên bản:
curl -H "Metadata-Token: $TOKEN" http://169.254.169.254/v1/ssh-keys
Đầu ra liệt kê từng người dùng theo tên người dùng, cùng với một loạt các khóa liên quan:
Output
users.example-user: EXAMPLE_SSH_PUBLIC_KEY
users.root: ROOT_SSH_PUBLIC_KEY
Đầu ra của điểm cuối sử dụng cấu trúc hiển thị bên dưới cho các yêu cầu JSON:
Output
{
“users”: {
“root”: array of str,
“username”: array of str
}
}
Mảng gốc liệt kê các khóa cho người dùng root. Mỗi người dùng khác đều có dãy khóa riêng, với tên người dùng đóng vai trò là nhãn.
Dữ liệu người dùng (/v1/dữ liệu người dùng)
Điểm cuối dữ liệu người dùng trả về dữ liệu người dùng được gửi trong quá trình triển khai phiên bản. Thông thường, dữ liệu người dùng này bao gồm một tập lệnh cloud-config được cloud-init sử dụng để tự động triển khai. Tuy nhiên, khi truy cập trực tiếp vào dịch vụ Siêu dữ liệu, bạn có thể sử dụng dữ liệu người dùng cho các mục đích khác. Nếu không có dữ liệu người dùng nào được gửi, sẽ không có dữ liệu nào được trả về.
Dữ liệu người dùng đã gửi phải được mã hóa bằng base64, vì vậy bạn cần giải mã chuỗi được trả về để xem dữ liệu người dùng mong đợi:
curl -H "Metadata-Token: $TOKEN" http://169.254.169.254/v1/user-data | base64 --decode
Đầu ra từ điểm cuối này chỉ đơn giản là nội dung dữ liệu người dùng. Không có định dạng nào khác. Vì lý do này, điểm cuối chỉ chấp nhận định dạng text/plain, không phải định dạng application/json.
Dưới đây là ví dụ về dữ liệu người dùng cloud-config cho một phiên bản cơ bản. Đây chỉ là một ví dụ và nội dung cụ thể thay đổi tùy thuộc vào dữ liệu người dùng được gửi khi khởi tạo phiên bản.

Nguồn: https://techdocs.akamai.com/cloud-computing/docs/metadata-service-api