{"id":34924,"date":"2024-08-27T14:01:57","date_gmt":"2024-08-27T07:01:57","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/27\/use-the-metadata-service-api\/"},"modified":"2026-05-14T10:30:50","modified_gmt":"2026-05-14T09:30:50","slug":"use-the-metadata-service-api","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/27\/use-the-metadata-service-api\/","title":{"rendered":"Use the Metadata service API"},"content":{"rendered":"<p>D\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u cung c\u1ea5p API \u0111\u1ec3 s\u1eed d\u1ee5ng trong c\u1ea5u h\u00ecnh tri\u1ec3n khai t\u1ef1 \u0111\u1ed9ng. C\u00e1c phi\u00ean b\u1ea3n t\u01b0\u01a1ng th\u00edch c\u1ee7a cloud-init c\u00f3 th\u1ec3 t\u1eadn d\u1ee5ng d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng \u0111\u1ecbnh c\u1ea5u h\u00ecnh Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n m\u1edbi khi tri\u1ec3n khai. Tuy nhi\u00ean, API c\u1ee7a d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u c\u0169ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c truy c\u1eadp tr\u1ef1c ti\u1ebfp. L\u00e0m nh\u01b0 v\u1eady s\u1ebd cung c\u1ea5p quy\u1ec1n truy c\u1eadp v\u00e0o c\u1ea3 d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng v\u00e0 phi\u00ean b\u1ea3n.<\/p>\n<p>Trong h\u01b0\u1edbng d\u1eabn tham kh\u1ea3o n\u00e0y, h\u00e3y t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 c\u00e1c \u0111i\u1ec3m cu\u1ed1i API c\u00f3 s\u1eb5n cho d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng ch\u00fang. H\u00e3y theo d\u00f5i \u0111\u1ec3 t\u00ecm hi\u1ec3u c\u00e1ch truy c\u1eadp API t\u1eeb Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n c\u1ee7a b\u1ea1n v\u00e0 nh\u1eefng g\u00ec mong \u0111\u1ee3i t\u1eeb m\u1ed7i \u0111i\u1ec3m cu\u1ed1i.<\/p>\n<p><strong>\u0110i\u1ec3m cu\u1ed1i API<\/strong><\/p>\n<p>\u0110\u1ec3 truy c\u1eadp API Si\u00eau d\u1eef li\u1ec7u, b\u1ea1n c\u1ea7n ph\u1ea3i \u1edf tr\u00ean m\u1ed9t Phi\u00ean b\u1ea3n t\u00ednh to\u00e1n. N\u1ebfu b\u1ea1n ch\u01b0a th\u1ef1c hi\u1ec7n, h\u00e3y l\u00e0m theo h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i v\u1ec1 T\u1ea1o Phi\u00ean b\u1ea3n t\u00ednh to\u00e1n tr\u01b0\u1edbc khi ti\u1ebfp t\u1ee5c.<\/p>\n<p>Sau khi b\u1ea1n \u0111\u00e3 tri\u1ec3n khai m\u1ed9t phi\u00ean b\u1ea3n, API Si\u00eau d\u1eef li\u1ec7u c\u00f3 th\u1ec3 truy c\u1eadp \u0111\u01b0\u1ee3c th\u00f4ng qua c\u00e1c \u0111\u1ecba ch\u1ec9 li\u00ean k\u1ebft c\u1ee5c b\u1ed9, c\u1ee5 th\u1ec3 l\u00e0:<\/p>\n<ul>\n<li>IPv4: 169.254.169.254<\/li>\n<\/ul>\n<ul>\n<li>IPv6: fd00:a9fe:a9fe::1<\/li>\n<\/ul>\n<p>M\u1ed7i \u0111i\u1ec3m cu\u1ed1i API Si\u00eau d\u1eef li\u1ec7u cung c\u1ea5p d\u1eef li\u1ec7u phi\u00ean b\u1ea3n ho\u1eb7c d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng. D\u1eef li\u1ec7u phi\u00ean b\u1ea3n bao g\u1ed3m th\u00f4ng tin li\u00ean quan \u0111\u1ebfn vi\u1ec7c tri\u1ec3n khai v\u00e0 b\u1ea3n th\u00e2n phi\u00ean b\u1ea3n, trong khi D\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng bao g\u1ed3m m\u1ed9t tr\u01b0\u1eddng c\u1ee5 th\u1ec3 \u0111\u01b0\u1ee3c g\u1eedi khi tri\u1ec3n khai phi\u00ean b\u1ea3n.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ch\u1ec9 c\u00e1c khu v\u1ef1c \u0111\u01b0\u1ee3c ch\u1ecdn m\u1edbi h\u1ed7 tr\u1ee3 g\u1eedi d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng. Ngo\u00e0i ra, m\u1ed9t s\u1ed1 l\u01b0\u1ee3ng b\u1ea3n ph\u00e2n ph\u1ed1i h\u1ea1n ch\u1ebf \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 ch\u00ednh th\u1ee9c b\u1edfi d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u v\u00e0 kh\u1edfi t\u1ea1o \u0111\u00e1m m\u00e2y c\u1ee7a Akamai. \u0110\u1ec3 t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 Si\u00eau d\u1eef li\u1ec7u v\u00e0 h\u1ed7 tr\u1ee3 kh\u1edfi t\u1ea1o \u0111\u00e1m m\u00e2y, h\u00e3y xem l\u1ea1i ph\u1ea7n Kh\u1ea3 d\u1ee5ng trong h\u01b0\u1edbng d\u1eabn d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u c\u1ee7a ch\u00fang t\u00f4i.<\/p>\n<p>C\u00e1c ph\u1ea7n sau \u0111\u00e2y li\u1ec7t k\u00ea t\u1eebng \u0111i\u1ec3m cu\u1ed1i, gi\u1ea3i th\u00edch c\u00e1ch s\u1eed d\u1ee5ng c\u1ee7a ch\u00fang v\u00e0 cung c\u1ea5p c\u00e1c v\u00ed d\u1ee5 v\u1ec1 \u0111\u1ea7u ra d\u1ef1 ki\u1ebfn. S\u1eed d\u1ee5ng ti\u00eau \u0111\u1ec1 Accept, \u0111\u1ea7u ra th\u01b0\u1eddng c\u00f3 th\u1ec3 \u1edf \u0111\u1ecbnh d\u1ea1ng text\/plain m\u1eb7c \u0111\u1ecbnh ho\u1eb7c \u0111\u1ecbnh d\u1ea1ng applciation\/json.<\/p>\n<p>\u0110\u1ec3 minh h\u1ecda, h\u01b0\u1edbng d\u1eabn cung c\u1ea5p v\u00ed d\u1ee5 v\u1ec1 \u0111\u1ea7u ra \u1edf \u0111\u1ecbnh d\u1ea1ng plain-text v\u00e0 hi\u1ec3n th\u1ecb c\u1ea5u tr\u00fac ph\u1ea3n h\u1ed3i \u1edf \u0111\u1ecbnh d\u1ea1ng JSON khi \u00e1p d\u1ee5ng.<\/p>\n<p><strong>M\u00e3 th\u00f4ng b\u00e1o x\u00e1c th\u1ef1c (\/v1\/token)<\/strong><\/p>\n<p>Vi\u1ec7c s\u1eed d\u1ee5ng API Metadata lu\u00f4n b\u1eaft \u0111\u1ea7u b\u1eb1ng \u0111i\u1ec3m cu\u1ed1i m\u00e3 th\u00f4ng b\u00e1o. S\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i n\u00e0y \u0111\u1ec3 x\u00e1c th\u1ef1c phi\u00ean m\u1edbi v\u00e0 nh\u1eadn m\u00e3 th\u00f4ng b\u00e1o Metadata \u0111\u1ec3 truy c\u1eadp c\u00e1c \u0111i\u1ec3m cu\u1ed1i Metadata ti\u1ebfp theo t\u1eeb phi\u00ean b\u1ea3n c\u1ee7a b\u1ea1n.<\/p>\n<p>Trong khi t\u1ea5t c\u1ea3 c\u00e1c \u0111i\u1ec3m cu\u1ed1i Metadata kh\u00e1c s\u1eed d\u1ee5ng GET, c\u00e1c y\u00eau c\u1ea7u \u0111\u1ebfn \u0111i\u1ec3m cu\u1ed1i n\u00e0y s\u1eed d\u1ee5ng ph\u01b0\u01a1ng th\u1ee9c PUT:<\/p>\n<pre class=\"wp-block-code\"><code>curl -X PUT -H \"Metadata-Token-Expiry-Seconds: 3600\" http:\/\/169.254.169.254\/v1\/token<\/code><\/pre>\n<p>C\u00e1c y\u00eau c\u1ea7u n\u00e0y cung c\u1ea5p ti\u00eau \u0111\u1ec1 Si\u00eau d\u1eef li\u1ec7u-M\u00e3 th\u00f4ng b\u00e1o-H\u1ebft h\u1ea1n-Gi\u00e2y, cho bi\u1ebft th\u1eddi gian h\u1ebft h\u1ea1n c\u1ee7a m\u00e3 th\u00f4ng b\u00e1o t\u00ednh b\u1eb1ng gi\u00e2y:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>e80eb80986f17fcd3df8fcb6ea944774cae47b26ed6d68df63a15b294b7a6e3f<\/code><\/pre>\n<p>Khi s\u1eed d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng JSON, ph\u1ea3n h\u1ed3i c\u1ee7a \u0111i\u1ec3m cu\u1ed1i l\u00e0 m\u1ed9t m\u1ea3ng ch\u1ee9a chu\u1ed7i m\u00e3 th\u00f4ng b\u00e1o:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>&#91; \"token\" ]<\/code><\/pre>\n<p>T\u1eeb \u0111\u00e2y tr\u1edf \u0111i, h\u01b0\u1edbng d\u1eabn n\u00e0y gi\u1ea3 \u0111\u1ecbnh r\u1eb1ng b\u1ea1n \u0111\u00e3 c\u00f3 \u0111\u01b0\u1ee3c m\u00e3 th\u00f4ng b\u00e1o Si\u00eau d\u1eef li\u1ec7u. \u0110\u1ec3 thu\u1eadn ti\u1ec7n, c\u00e1c v\u00ed d\u1ee5 ti\u1ebfp theo s\u1eed d\u1ee5ng $TOKEN thay cho chu\u1ed7i m\u00e3 th\u00f4ng b\u00e1o th\u1ef1c t\u1ebf. Th\u1ef1c hi\u1ec7n theo b\u1eb1ng c\u00e1ch l\u01b0u tr\u1eef m\u00e3 th\u00f4ng b\u00e1o trong m\u1ed9t bi\u1ebfn m\u00f4i tr\u01b0\u1eddng, nh\u01b0 \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb \u1edf \u0111\u00e2y:<\/p>\n<pre class=\"wp-block-code\"><code>export TOKEN=$(curl -X PUT -H \"Metadata-Token-Expiry-Seconds: 3600\" http:\/\/169.254.169.254\/v1\/token)<\/code><\/pre>\n<p><strong>D\u1eef li\u1ec7u phi\u00ean b\u1ea3n (\/v1\/instance)<\/strong><\/p>\n<p>\u0110\u1ec3 nh\u1eadn th\u00f4ng tin v\u1ec1 ch\u00ednh Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n, h\u00e3y s\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i phi\u00ean b\u1ea3n:<\/p>\n<pre class=\"wp-block-code\"><code>curl -H \"Metadata-Token: $TOKEN\" http:\/\/169.254.169.254\/v1\/instance<\/code><\/pre>\n<p>\u0110\u1ea7u ra bao g\u1ed3m th\u00f4ng tin v\u1ec1 danh t\u00ednh c\u1ee7a phi\u00ean b\u1ea3n, th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt v\u00e0 l\u1ecbch tr\u00ecnh sao l\u01b0u c\u1ee7a n\u00f3:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>backups.enabled: false\nhost_uuid: 123abc456def789ghi\nid: 532754976\nlabel: example-linode-instance\nregion: us-iad\nspecs.disk: 51200\nspecs.gpus: 0\nspecs.memory: 2048\nspecs.transfer: 2000\nspecs.vcpus: 1\ntype: g6-standard-1<\/code><\/pre>\n<p>Ph\u1ea3n h\u1ed3i c\u1ee7a \u0111i\u1ec3m cu\u1ed1i \u0111\u01b0\u1ee3c c\u1ea5u tr\u00fac nh\u01b0 hi\u1ec3n th\u1ecb b\u00ean d\u01b0\u1edbi b\u1eb1ng \u0111\u1ecbnh d\u1ea1ng JSON:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>{\n  \u201cid\u201d: int,\n  \u201chost_uuid\u201d: str,\n  \u201clabel\u201d: str,\n  \u201cregion\u201d: str,\n  \u201ctype\u201d: str,\n  \u201ctags\u201d: array of str,\n  \u201cspecs\u201d: {\n    \u201cvcpus\u201d: int,\n    \u201cmemory\u201d: int,\n    \u201cdisk\u201d: int,\n    \u201ctransfer\u201d: int,\n    \u201cgpus\u201d: int\n  },\n  \u201cbackups\u201d: {\n    \u201cenabled\u201d: bool,\n    \u201cstatus\u201d: str&#91;pending\/running\/complete] or null\n  }\n}<\/code><\/pre>\n<p>\u0110\u1ed1i t\u01b0\u1ee3ng t\u1ed5ng th\u1ec3 cung c\u1ea5p th\u00f4ng tin nh\u1eadn d\u1ea1ng v\u1ec1 phi\u00ean b\u1ea3n, ch\u1eb3ng h\u1ea1n nh\u01b0 ID, nh\u00e3n v\u00e0 th\u1ebb. \u0110\u1ed1i t\u01b0\u1ee3ng th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt l\u1ed3ng nhau n\u00eau chi ti\u1ebft c\u00e1c th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt c\u1ee7a phi\u00ean b\u1ea3n, trong khi \u0111\u1ed1i t\u01b0\u1ee3ng sao l\u01b0u l\u1ed3ng nhau cung c\u1ea5p tr\u1ea1ng th\u00e1i c\u1ee7a c\u00e1c b\u1ea3n sao l\u01b0u cho phi\u00ean b\u1ea3n.<\/p>\n<p><strong>D\u1eef li\u1ec7u m\u1ea1ng (\/v1\/m\u1ea1ng)<\/strong><\/p>\n<p>\u0110\u1ec3 truy xu\u1ea5t th\u00f4ng tin v\u1ec1 c\u00e1ch c\u1ea5u h\u00ecnh m\u1ea1ng c\u1ee7a phi\u00ean b\u1ea3n, h\u00e3y s\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i m\u1ea1ng:<\/p>\n<pre class=\"wp-block-code\"><code>curl -H \"Metadata-Token: $TOKEN\" http:\/\/169.254.169.254\/v1\/network<\/code><\/pre>\n<p>H\u00e3y tham kh\u1ea3o \u0111i\u1ec3m cu\u1ed1i n\u00e0y khi b\u1ea1n c\u1ea7n x\u00e1c \u0111\u1ecbnh \u0111\u1ecba ch\u1ec9 IP c\u1ee7a phi\u00ean b\u1ea3n, giao di\u1ec7n m\u1ea1ng \u0111\u01b0\u1ee3c \u0111\u1ecbnh c\u1ea5u h\u00ecnh v\u00e0 \u0111\u1ecba ch\u1ec9 IPAM c\u1ee7a giao di\u1ec7n \u0111\u00f3:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>ipv4.public: 192.0.2.0\/24\nipv6.link_local: fe80::db8:1b3d:e5g7::\/64\nipv6.slaac: 2600:3c05::db8:1b3d:e5g7::\/64<\/code><\/pre>\n<p>Ph\u1ea3n h\u1ed3i c\u1ee7a \u0111i\u1ec3m cu\u1ed1i tu\u00e2n theo c\u1ea5u tr\u00fac JSON \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb b\u00ean d\u01b0\u1edbi:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>{\n  \u201cinterfaces\u201d: &#91;\n    {\n      \u201cpurpose\u201d: str&#91;public\/vlan],\n      \u201clabel\u201d: str,\n      ipam_address\u201d: str&#91;optional]\n    },\n  ],\n  \u201cipv4\u201d: {\n    \u201cpublic\u201d: array of str,\n    \u201cprivate\u201d: array of str,\n    \u201celastic\u201d: array of str\n  },\n  \u201cipv6\u201d: {\n    \u201cranges\u201d: array of str,\n    \u201clink-local\u201d: array of str\n    \u201celastic-ranges\u201d: array of str\n  }\n}<\/code><\/pre>\n<p>M\u1ea3ng giao di\u1ec7n hi\u1ec3n th\u1ecb nh\u1eefng giao di\u1ec7n n\u00e0o, n\u1ebfu c\u00f3, m\u00e0 c\u00e1 th\u1ec3 c\u00f3. Tuy nhi\u00ean, ch\u1ec9 ri\u00eang giao di\u1ec7n &#8220;eth0 &#8211; Internet c\u00f4ng c\u1ed9ng&#8221; m\u1eb7c \u0111\u1ecbnh kh\u00f4ng d\u1eabn \u0111\u1ebfn b\u1ea5t k\u1ef3 k\u1ebft qu\u1ea3 \u0111\u1ea7u ra n\u00e0o \u1edf \u0111\u00e2y. C\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng ipv4 v\u00e0 ipv6 li\u1ec7t k\u00ea c\u00e1c \u0111\u1ecba ch\u1ec9 kh\u00e1c nhau \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh cho phi\u00ean b\u1ea3n.<\/p>\n<p><strong>M\u00e3 SSH:<\/strong><\/p>\n<p>S\u1eed d\u1ee5ng \u0111i\u1ec3m cu\u1ed1i ssh-keys \u0111\u1ec3 l\u1ea5y danh s\u00e1ch t\u1ea5t c\u1ea3 c\u00e1c kh\u00f3a SSH v\u00e0 ng\u01b0\u1eddi d\u00f9ng li\u00ean quan \u0111\u01b0\u1ee3c \u0111\u1ecbnh c\u1ea5u h\u00ecnh cho phi\u00ean b\u1ea3n:<\/p>\n<pre class=\"wp-block-code\"><code>curl -H \"Metadata-Token: $TOKEN\" http:\/\/169.254.169.254\/v1\/ssh-keys<\/code><\/pre>\n<p>\u0110\u1ea7u ra li\u1ec7t k\u00ea t\u1eebng ng\u01b0\u1eddi d\u00f9ng theo t\u00ean ng\u01b0\u1eddi d\u00f9ng, c\u00f9ng v\u1edbi m\u1ed9t lo\u1ea1t c\u00e1c kh\u00f3a li\u00ean quan:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>users.example-user: EXAMPLE_SSH_PUBLIC_KEY\nusers.root: ROOT_SSH_PUBLIC_KEY<\/code><\/pre>\n<p>\u0110\u1ea7u ra c\u1ee7a \u0111i\u1ec3m cu\u1ed1i s\u1eed d\u1ee5ng c\u1ea5u tr\u00fac hi\u1ec3n th\u1ecb b\u00ean d\u01b0\u1edbi cho c\u00e1c y\u00eau c\u1ea7u JSON:<\/p>\n<p>Output<\/p>\n<pre class=\"wp-block-code\"><code>{\n  \u201cusers\u201d: {\n    \u201croot\u201d: array of str,\n    \u201cusername\u201d: array of str\n  }\n}<\/code><\/pre>\n<p>M\u1ea3ng g\u1ed1c li\u1ec7t k\u00ea c\u00e1c kh\u00f3a cho ng\u01b0\u1eddi d\u00f9ng root. M\u1ed7i ng\u01b0\u1eddi d\u00f9ng kh\u00e1c \u0111\u1ec1u c\u00f3 d\u00e3y kh\u00f3a ri\u00eang, v\u1edbi t\u00ean ng\u01b0\u1eddi d\u00f9ng \u0111\u00f3ng vai tr\u00f2 l\u00e0 nh\u00e3n.<\/p>\n<p><strong>D\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng (\/v1\/d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng)<\/strong><\/p>\n<p>\u0110i\u1ec3m cu\u1ed1i d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng tr\u1ea3 v\u1ec1 d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c g\u1eedi trong qu\u00e1 tr\u00ecnh tri\u1ec3n khai phi\u00ean b\u1ea3n. Th\u00f4ng th\u01b0\u1eddng, d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng n\u00e0y bao g\u1ed3m m\u1ed9t t\u1eadp l\u1ec7nh cloud-config \u0111\u01b0\u1ee3c cloud-init s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng tri\u1ec3n khai. Tuy nhi\u00ean, khi truy c\u1eadp tr\u1ef1c ti\u1ebfp v\u00e0o d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng cho c\u00e1c m\u1ee5c \u0111\u00edch kh\u00e1c. N\u1ebfu kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng n\u00e0o \u0111\u01b0\u1ee3c g\u1eedi, s\u1ebd kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u n\u00e0o \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1.<\/p>\n<p>D\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng \u0111\u00e3 g\u1eedi ph\u1ea3i \u0111\u01b0\u1ee3c m\u00e3 h\u00f3a b\u1eb1ng base64, v\u00ec v\u1eady b\u1ea1n c\u1ea7n gi\u1ea3i m\u00e3 chu\u1ed7i \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1 \u0111\u1ec3 xem d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng mong \u0111\u1ee3i:<\/p>\n<pre class=\"wp-block-code\"><code>curl -H \"Metadata-Token: $TOKEN\" http:\/\/169.254.169.254\/v1\/user-data | base64 --decode<\/code><\/pre>\n<p>\u0110\u1ea7u ra t\u1eeb \u0111i\u1ec3m cu\u1ed1i n\u00e0y ch\u1ec9 \u0111\u01a1n gi\u1ea3n l\u00e0 n\u1ed9i dung d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng. Kh\u00f4ng c\u00f3 \u0111\u1ecbnh d\u1ea1ng n\u00e0o kh\u00e1c. V\u00ec l\u00fd do n\u00e0y, \u0111i\u1ec3m cu\u1ed1i ch\u1ec9 ch\u1ea5p nh\u1eadn \u0111\u1ecbnh d\u1ea1ng text\/plain, kh\u00f4ng ph\u1ea3i \u0111\u1ecbnh d\u1ea1ng application\/json.<\/p>\n<p>D\u01b0\u1edbi \u0111\u00e2y l\u00e0 v\u00ed d\u1ee5 v\u1ec1 d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng cloud-config cho m\u1ed9t phi\u00ean b\u1ea3n c\u01a1 b\u1ea3n. \u0110\u00e2y ch\u1ec9 l\u00e0 m\u1ed9t v\u00ed d\u1ee5 v\u00e0 n\u1ed9i dung c\u1ee5 th\u1ec3 thay \u0111\u1ed5i t\u00f9y thu\u1ed9c v\u00e0o d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c g\u1eedi khi kh\u1edfi t\u1ea1o phi\u00ean b\u1ea3n.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" width=\"1019\" height=\"744\" src=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-104.png\" alt=\"\" class=\"wp-image-1487\" srcset=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-104.png 1019w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-104-300x219-1.png 300w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-104-768x561-1.png 768w\" sizes=\"auto, (max-width: 1019px) 100vw, 1019px\" \/><\/figure>\n<p>Ngu\u1ed3n: https:\/\/techdocs.akamai.com\/cloud-computing\/docs\/metadata-service-api<\/p>\n","protected":false},"excerpt":{"rendered":"<p>D\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u cung c\u1ea5p API \u0111\u1ec3 s\u1eed d\u1ee5ng trong c\u1ea5u h\u00ecnh tri\u1ec3n khai t\u1ef1 \u0111\u1ed9ng. C\u00e1c phi\u00ean b\u1ea3n t\u01b0\u01a1ng th\u00edch c\u1ee7a cloud-init c\u00f3 th\u1ec3 t\u1eadn d\u1ee5ng d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng \u0111\u1ecbnh c\u1ea5u h\u00ecnh Phi\u00ean b\u1ea3n \u0111i\u1ec7n to\u00e1n m\u1edbi khi tri\u1ec3n khai. Tuy nhi\u00ean, API c\u1ee7a d\u1ecbch v\u1ee5 Si\u00eau<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83],"tags":[],"class_list":["post-34924","post","type-post","status-publish","format-standard","hentry","category-metadata-service"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=34924"}],"version-history":[{"count":1,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34924\/revisions"}],"predecessor-version":[{"id":35771,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34924\/revisions\/35771"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}