{"id":34951,"date":"2024-09-05T16:26:08","date_gmt":"2024-09-05T09:26:08","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/05\/use-cloud-init-to-automatically-configure-and-secure-your-servers\/"},"modified":"2024-09-05T16:26:08","modified_gmt":"2024-09-05T09:26:08","slug":"use-cloud-init-to-automatically-configure-and-secure-your-servers","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/05\/use-cloud-init-to-automatically-configure-and-secure-your-servers\/","title":{"rendered":"S\u1eed d\u1ee5ng Cloud-Init \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh v\u00e0 b\u1ea3o m\u1eadt server"},"content":{"rendered":"<p>B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 Metadata c\u1ee7a Akamai, b\u1ea1n c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh Compute Instances m\u1edbi c\u1ee7a m\u00ecnh th\u00f4ng qua cloud-init. H\u01b0\u1edbng d\u1eabn n\u00e0y h\u01b0\u1edbng d\u1eabn b\u1ea1n c\u00e1ch x\u00e2y d\u1ef1ng t\u1ec7p cloud-config (\u0111\u1ec3 s\u1eed d\u1ee5ng v\u1edbi cloud-init) v\u00e0 tri\u1ec3n khai Compute Instance b\u1eb1ng c\u1ea5u h\u00ecnh \u0111\u00f3. H\u01b0\u1edbng d\u1eabn n\u00e0y bao g\u1ed3m m\u1ed9t lo\u1ea1t c\u00e1c t\u00f9y ch\u1ecdn \u0111\u01b0\u1ee3c \u0111\u1ec1 xu\u1ea5t \u0111\u1ec3 kh\u1edfi t\u1ea1o v\u00e0 b\u1ea3o m\u1eadt Compute Instance. C\u00e1c c\u1ea5u h\u00ecnh n\u00e0y song song v\u1edbi c\u00e1c b\u01b0\u1edbc trong h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i v\u1ec1&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/set-up-and-secure\/\">Thi\u1ebft l\u1eadp v\u00e0 b\u1ea3o m\u1eadt Compute Instance<\/a>&nbsp;. V\u1ec1 cu\u1ed1i h\u01b0\u1edbng d\u1eabn, b\u1ea1n c\u00f3 th\u1ec3 xem&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#complete-cloud-config-file\">T\u1ec7p Cloud-Config ho\u00e0n ch\u1ec9nh<\/a>&nbsp;c\u0169ng nh\u01b0 c\u00e1c b\u01b0\u1edbc v\u1ec1 c\u00e1ch&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#deploy-an-instance-with-user-data\">Tri\u1ec3n khai Instance v\u1edbi D\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng<\/a>&nbsp;.<\/p>\n<h2 id=\"what-is-cloud-init\">Cloud-init l\u00e0 g\u00ec?<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#what-is-cloud-init\"><\/a><\/h2>\n<p><a href=\"https:\/\/cloudinit.readthedocs.io\/en\/latest\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">Cloud-init<\/a>&nbsp;l\u00e0 ph\u01b0\u01a1ng ph\u00e1p chu\u1ea9n c\u00f4ng nghi\u1ec7p \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a kh\u1edfi t\u1ea1o phi\u00ean b\u1ea3n \u0111\u00e1m m\u00e2y, h\u1ed7 tr\u1ee3 tr\u00ean nhi\u1ec1u b\u1ea3n ph\u00e2n ph\u1ed1i v\u00e0 n\u1ec1n t\u1ea3ng. Cloud-init qu\u1ea3n l\u00fd kh\u1edfi t\u1ea1o b\u1eb1ng c\u00e1ch k\u1ebft h\u1ee3p si\u00eau d\u1eef li\u1ec7u phi\u00ean b\u1ea3n v\u00e0 t\u1eadp l\u1ec7nh c\u1ea5u h\u00ecnh (d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng) \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a quy tr\u00ecnh thi\u1ebft l\u1eadp m\u00e1y ch\u1ee7 m\u1edbi.<\/p>\n<p><a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/metadata\/\">D\u1ecbch v\u1ee5 Metadata<\/a>&nbsp;c\u1ee7a Akamai&nbsp;cung c\u1ea5p API \u0111\u1ec3 cloud-init s\u1eed d\u1ee5ng, cung c\u1ea5p d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng v\u00e0 phi\u00ean b\u1ea3n c\u00f3 li\u00ean quan \u0111\u1ec3 kh\u1edfi t\u1ea1o m\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n. Khi phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a b\u1ea1n kh\u1edfi \u0111\u1ed9ng, cloud-init b\u1eaft \u0111\u1ea7u ch\u1ea1y c\u1ee5c b\u1ed9, truy c\u1eadp si\u00eau d\u1eef li\u1ec7u v\u00e0 t\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n cho ph\u00f9 h\u1ee3p.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">T\u00ednh kh\u1ea3 d\u1ee5ng c\u1ee7a si\u00eau d\u1eef li\u1ec7u: D\u1ecbch v\u1ee5 Metadata c\u1ee7a Akamai hi\u1ec7n kh\u1ea3 d\u1ee5ng t\u1ea1i m\u1ed9t s\u1ed1 trung t\u00e2m d\u1eef li\u1ec7u. S\u1eed d\u1ee5ng Metadata \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u1ea5u h\u00ecnh h\u1ec7 th\u1ed1ng b\u1eb1ng c\u00e1ch th\u00eam l\u1ec7nh ho\u1eb7c t\u1eadp l\u1ec7nh khi tri\u1ec3n khai Compute Instances. D\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng n\u00e0y sau \u0111\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c cloud-init, m\u1ed9t c\u00f4ng c\u1ee5 kh\u1edfi t\u1ea1o h\u1ec7 th\u1ed1ng ti\u00eau chu\u1ea9n c\u00f4ng nghi\u1ec7p, s\u1eed d\u1ee5ng ho\u1eb7c truy c\u1eadp tr\u1ef1c ti\u1ebfp b\u1eb1ng API Metadata. \u0110\u1ec3 bi\u1ebft h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 Metadata v\u00e0 danh s\u00e1ch c\u00e1c v\u00f9ng v\u00e0 b\u1ea3n ph\u00e2n ph\u1ed1i \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3, h\u00e3y tham kh\u1ea3o <a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/metadata\/#availability\">t\u00e0i li\u1ec7u<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i<\/p>\n<h2 id=\"create-a-cloud-config-file\">T\u1ea1o m\u1ed9t t\u1eadp tin Cloud-Config<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#create-a-cloud-config-file\"><\/a><\/h2>\n<p>Cloud-init s\u1eed d\u1ee5ng si\u00eau d\u1eef li\u1ec7u phi\u00ean b\u1ea3n t\u1eeb m\u00e1y ch\u1ee7 si\u00eau d\u1eef li\u1ec7u c\u1ee7a Akamai. \u0110i\u1ec1u n\u00e0y cung c\u1ea5p cho cloud-init th\u00f4ng tin li\u00ean quan v\u1ec1 Compute Instance. T\u1eeb \u0111\u00f3, cloud-init s\u1ebd suy ra c\u00e1c b\u01b0\u1edbc kh\u1edfi t\u1ea1o c\u1ee5 th\u1ec3 t\u1eeb&nbsp;<em>d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng<\/em>&nbsp;\u0111\u01b0\u1ee3c cung c\u1ea5p , d\u01b0\u1edbi d\u1ea1ng c\u00e1c t\u1eadp l\u1ec7nh&nbsp;<em>cloud-config<\/em>&nbsp;.<\/p>\n<p>C\u00e1c t\u1eadp l\u1ec7nh Cloud-config s\u1eed d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng YAML khai b\u00e1o \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh c\u1ea5u h\u00ecnh v\u00e0 c\u00e1c b\u01b0\u1edbc kh\u00e1c m\u00e0 cloud-init c\u1ea7n \u0111\u1ec3 kh\u1edfi t\u1ea1o phi\u00ean b\u1ea3n m\u1edbi. T\u00ecm hi\u1ec3u th\u00eam v\u1ec1 c\u00e1c t\u1eadp l\u1ec7nh cloud-config trong h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i v\u1ec1&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/metadata-cloud-config\/\">S\u1eed d\u1ee5ng t\u1ec7p Cloud-Config \u0111\u1ec3 c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7<\/a>&nbsp;.<\/p>\n<p>Khi t\u1ea1o Akamai Compute Instance, b\u1ea1n c\u00f3 th\u1ec3 th\u00eam cloud-config th\u00f4ng qua Cloud Manager, Linode CLI ho\u1eb7c Linode API khi tri\u1ec3n khai instance. Tham kh\u1ea3o h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/metadata\/\">Metadata c\u1ee7a ch\u00fang t\u00f4i \u0111\u1ec3 bi\u1ebft chi ti\u1ebft v\u1ec1 th\u1eddi \u0111i\u1ec3m v\u00e0 c\u00e1ch th\u00eam&nbsp;<\/a><em>d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng<\/em>&nbsp;cloud-config&nbsp;.<\/p>\n<p>\u0110\u1ec3 b\u1eaft \u0111\u1ea7u, h\u00e3y t\u1ea1o m\u1ed9t t\u1ec7p cloud-config ban \u0111\u1ea7u \u0111\u1ec3 thi\u1ebft k\u1ebf kh\u1edfi t\u1ea1o m\u00e1y ch\u1ee7 mong mu\u1ed1n c\u1ee7a b\u1ea1n. C\u00e1c v\u00ed d\u1ee5 sau \u0111\u00e2y \u0111\u1eb7t t\u00ean t\u1ec7p l\u00e0&nbsp;<code>cloud-config.yaml<\/code>. T\u1ea5t c\u1ea3 c\u00e1c t\u1ec7p cloud-config \u0111\u1ec1u b\u1eaft \u0111\u1ea7u b\u1eb1ng d\u00f2ng sau:<\/p>\n<pre class=\"wp-block-code\"><code>#cloud-config<\/code><\/pre>\n<p>T\u1eeb \u0111\u00f3, b\u1ea1n c\u1ea7n \u0111i\u1ec1n v\u00e0o cloud-config v\u1edbi c\u00e1c t\u00f9y ch\u1ecdn c\u1ee5 th\u1ec3 ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u c\u1ee7a b\u1ea1n \u0111\u1ed1i v\u1edbi m\u00e1y ch\u1ee7. Th\u1ef1c hi\u1ec7n theo c\u00e1c b\u01b0\u1edbc trong h\u01b0\u1edbng d\u1eabn n\u00e0y \u0111\u1ec3 x\u00e2y d\u1ef1ng t\u1ec7p c\u1ee7a b\u1ea1n ho\u1eb7c b\u1ecf qua \u0111\u1ebfn cu\u1ed1i h\u01b0\u1edbng d\u1eabn \u0111\u1ec3 xem&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#complete-cloud-config-file\">t\u1ec7p Cloud-Config \u0111\u00e3 ho\u00e0n th\u00e0nh<\/a>&nbsp;.<\/p>\n<h2 id=\"update-your-system\">C\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#update-your-system\"><\/a><\/h2>\n<p>Cloud-config bao g\u1ed3m m\u1ed9t m\u00f4-\u0111un \u0111\u1ec3 x\u1eed l\u00fd c\u00e1c b\u1ea3n c\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng b\u1eb1ng hai kh\u00f3a:&nbsp;<code>package_update<\/code>v\u00e0&nbsp;<code>package_upgrade<\/code>. Bao g\u1ed3m c\u1ea3 hai kh\u00f3a n\u00e0y v\u1edbi c\u00e1c gi\u00e1 tr\u1ecb c\u1ee7a&nbsp;<code>true<\/code>\u0111\u1ea3m b\u1ea3o r\u1eb1ng c\u00e1c b\u1ea3n c\u1eadp nh\u1eadt v\u00e0 n\u00e2ng c\u1ea5p g\u00f3i \u0111\u01b0\u1ee3c ch\u1ea1y nh\u01b0 m\u1ed9t ph\u1ea7n c\u1ee7a qu\u00e1 tr\u00ecnh kh\u1edfi t\u1ea1o.<\/p>\n<pre class=\"wp-block-code\"><code>package_update: true\npackage_upgrade: true<\/code><\/pre>\n<p>Ph\u1ea7n h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#install-any-additional-required-software\">c\u00e0i \u0111\u1eb7t ph\u1ea7n m\u1ec1m b\u1ed5 sung c\u1ea7n thi\u1ebft<\/a>&nbsp;cung c\u1ea5p th\u00eam t\u00e0i nguy\u00ean \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c g\u00f3i trong cloud-config.<\/p>\n<h2 id=\"set-the-hostname-and-timezone\">\u0110\u1eb7t t\u00ean m\u00e1y ch\u1ee7 v\u00e0 m\u00fai gi\u1edd<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#set-the-hostname-and-timezone\"><\/a><\/h2>\n<p>Cloud-config c\u00f3 nhi\u1ec1u t\u00f9y ch\u1ecdn \u0111\u1ec3 thi\u1ebft l\u1eadp th\u00f4ng tin chi ti\u1ebft v\u1ec1 m\u00e1y ch\u1ee7. Ph\u1ea7n n\u00e0y \u00e1p d\u1ee5ng hai trong s\u1ed1 c\u00e1c t\u00f9y ch\u1ecdn \u0111\u00f3, cung c\u1ea5p cho m\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n th\u00f4ng tin chi ti\u1ebft \u0111\u01b0\u1ee3c \u0111\u1ec1 xu\u1ea5t b\u1eb1ng c\u00e1ch thi\u1ebft l\u1eadp m\u00fai gi\u1edd v\u00e0 t\u00ean m\u00e1y ch\u1ee7.<\/p>\n<p>Kh\u00f3a&nbsp;<code>timezone<\/code>cung c\u1ea5p ph\u01b0\u01a1ng ph\u00e1p \u0111\u01a1n gi\u1ea3n \u0111\u1ec3 thi\u1ebft l\u1eadp m\u00fai gi\u1edd c\u1ee7a m\u00e1y ch\u1ee7. N\u00f3 l\u1ea5y b\u1ea5t k\u1ef3 m\u00fai gi\u1edd h\u1ee3p l\u1ec7 n\u00e0o cho h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n l\u00e0m \u0111\u1ed1i s\u1ed1. Th\u00f4ng th\u01b0\u1eddng, b\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y ch\u00fang b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>timedatectl list-timezones<\/code>ho\u1eb7c b\u1eb1ng c\u00e1ch \u0111i\u1ec1u h\u01b0\u1edbng c\u00e1c \u0111\u01b0\u1eddng d\u1eabn trong&nbsp;<code>\/usr\/share\/zoneinfo<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>timezone: 'US\/Central'<\/code><\/pre>\n<p>Kh\u00f3a n\u00e0y&nbsp;<code>hostname<\/code>thu\u1eadn ti\u1ec7n g\u00e1n t\u00ean m\u00e1y ch\u1ee7 cho phi\u00ean b\u1ea3n c\u1ee7a b\u1ea1n. Trong v\u00ed d\u1ee5 n\u00e0y, cloud-init kh\u1edfi t\u1ea1o m\u00e1y ch\u1ee7 b\u1eb1ng t\u00ean m\u00e1y ch\u1ee7&nbsp;<code>examplehost<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>hostname: examplehost<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: Kh\u00f3a Cloud-config&nbsp;<code>hostname<\/code>kh\u00f4ng s\u1eeda \u0111\u1ed5i&nbsp;<code>\/etc\/hosts<\/code>t\u1ec7p theo m\u1eb7c \u0111\u1ecbnh. \u0110i\u1ec1u \u0111\u00f3 cho ph\u00e9p b\u1ea1n ki\u1ec3m so\u00e1t t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a m\u00e1y ch\u1ee7 theo c\u00e1ch th\u00f4ng th\u01b0\u1eddng l\u00e0 s\u1eeda \u0111\u1ed5i t\u1ec7p&nbsp;<code>\/etc\/hosts<\/code>sau khi kh\u1edfi t\u1ea1o.Ngo\u00e0i ra, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ec3 cloud-init qu\u1ea3n l\u00fd to\u00e0n b\u1ed9&nbsp;<code>\/etc\/hosts<\/code>t\u1ec7p b\u1eb1ng c\u00e1ch \u0111\u1eb7t kh\u00f3a&nbsp;<code>manage_etc_hosts<\/code>th\u00e0nh&nbsp;<code>true<\/code>. Tr\u00ean m\u1ed7i l\u1ea7n kh\u1edfi \u0111\u1ed9ng, cloud-init \u0111\u1ea3m b\u1ea3o r\u1eb1ng n\u1ed9i dung c\u1ee7a&nbsp;<code>\/etc\/hosts<\/code>kh\u1edbp v\u1edbi n\u1ed9i dung c\u1ee7a&nbsp;<code>\/etc\/cloud\/templates\/hosts.tmpl<\/code>.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">T\u00ecm hi\u1ec3u th\u00eam trong t\u00e0i li\u1ec7u tham kh\u1ea3o m\u00f4-\u0111un c\u1ee7a cloud-init v\u1ec1&nbsp;<a href=\"https:\/\/cloudinit.readthedocs.io\/en\/latest\/reference\/modules.html#update-etc-hosts\" target=\"_blank\" rel=\"noreferrer noopener\">Update Etc Hosts<\/a>&nbsp;.<\/p>\n<h2 id=\"add-a-limited-user-account\">Th\u00eam t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng c\u00f3 gi\u1edbi h\u1ea1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#add-a-limited-user-account\"><\/a><\/h2>\n<p>Phi\u00ean b\u1ea3n c\u1ee7a b\u1ea1n ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t m\u1ed9t t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng b\u1ecb gi\u1edbi h\u1ea1n \u0111\u1ec3 ng\u0103n ch\u1eb7n quy\u1ec1n truy c\u1eadp root t\u1eeb xa v\u00e0 c\u00e1c r\u1ee7i ro b\u1ea3o m\u1eadt li\u00ean quan. Kh\u00f3a Cloud-config&nbsp;<code>users<\/code>c\u00f3 th\u1ec3 x\u00e1c \u0111\u1ecbnh m\u1ed9t ho\u1eb7c nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng m\u1edbi cho h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n, bao g\u1ed3m c\u00e1c t\u00ednh n\u0103ng nh\u01b0&nbsp;<code>sudo<\/code>quy\u1ec1n truy c\u1eadp.<\/p>\n<p>V\u00ed d\u1ee5, b\u00ean d\u01b0\u1edbi l\u00e0 c\u1ea5u h\u00ecnh th\u00f4ng th\u01b0\u1eddng \u0111\u1ec3 kh\u1edfi t\u1ea1o ng\u01b0\u1eddi d\u00f9ng c\u00f3&nbsp;<code>sudo<\/code>quy\u1ec1n truy c\u1eadp h\u1ea1n ch\u1ebf. Thi\u1ebft l\u1eadp c\u0169ng bao g\u1ed3m ng\u01b0\u1eddi d\u00f9ng m\u1eb7c \u0111\u1ecbnh, \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb.<\/p>\n<pre class=\"wp-block-code\"><code>users:\n  - default\n  - name: example-user\n    groups:\n      - sudo\n    sudo:\n      - ALL=(ALL) NOPASSWD:ALL\n    shell: \/bin\/bash<\/code><\/pre>\n<p>Tuy nhi\u00ean, v\u00ed d\u1ee5 n\u00e0y kh\u00f4ng \u0111\u1ea7y \u0111\u1ee7 v\u00ec ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng c\u00f3 m\u1eadt kh\u1ea9u ho\u1eb7c kh\u00f3a SSH. B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o m\u1eadt kh\u1ea9u b\u1eb1ng&nbsp;<code>passwd<\/code>t\u00f9y ch\u1ecdn n\u00e0y, nh\u01b0ng \u0111i\u1ec1u n\u00e0y kh\u00f4ng \u0111\u01b0\u1ee3c khuy\u1ebfn kh\u00edch. Thay v\u00e0o \u0111\u00f3, b\u1ea1n n\u00ean thi\u1ebft l\u1eadp kh\u00f3a SSH cho ng\u01b0\u1eddi d\u00f9ng, nh\u01b0 \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb trong ph\u1ea7n ti\u1ebfp theo.<\/p>\n<p>\u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 c\u00e1ch t\u1ea1o v\u00e0 qu\u1ea3n l\u00fd ng\u01b0\u1eddi d\u00f9ng b\u1eb1ng cloud-init, h\u00e3y tham kh\u1ea3o h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/manage-users-with-cloud-init\/\">S\u1eed d\u1ee5ng Cloud-Init \u0111\u1ec3 qu\u1ea3n l\u00fd ng\u01b0\u1eddi d\u00f9ng tr\u00ean m\u00e1y ch\u1ee7 m\u1edbi c\u1ee7a ch\u00fang t\u00f4i<\/a>&nbsp;. H\u01b0\u1edbng d\u1eabn bao g\u1ed3m th\u00eam th\u00f4ng tin v\u1ec1 c\u00e1ch thi\u1ebft l\u1eadp m\u1eadt kh\u1ea9u ng\u01b0\u1eddi d\u00f9ng, n\u1ebfu b\u1ea1n c\u1ea7n.<\/p>\n<h2 id=\"add-an-ssh-key-to-your-limited-user-account\">Th\u00eam Kh\u00f3a SSH v\u00e0o T\u00e0i kho\u1ea3n Ng\u01b0\u1eddi d\u00f9ng Gi\u1edbi h\u1ea1n c\u1ee7a B\u1ea1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#add-an-ssh-key-to-your-limited-user-account\"><\/a><\/h2>\n<p>Thay v\u00ec s\u1eed d\u1ee5ng m\u1eadt kh\u1ea9u \u0111\u1ec3 truy c\u1eadp, c\u00e1ch ti\u1ebfp c\u1eadn an to\u00e0n h\u01a1n l\u00e0 thi\u1ebft l\u1eadp ng\u01b0\u1eddi d\u00f9ng ho\u1eb7c ng\u01b0\u1eddi d\u00f9ng b\u1ecb gi\u1edbi h\u1ea1n c\u1ee7a b\u1ea1n b\u1eb1ng x\u00e1c th\u1ef1c kh\u00f3a SSH. N\u1ebfu b\u1ea1n ch\u01b0a c\u00f3 c\u1eb7p kh\u00f3a SSH, h\u00e3y l\u1ea5y m\u1ed9t c\u1eb7p b\u1eb1ng c\u00e1ch l\u00e0m theo ph\u1ea7n c\u00f3 li\u00ean quan trong h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i v\u1ec1 c\u00e1ch&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/use-public-key-authentication-with-ssh\/#generate-an-ssh-key-pair\">s\u1eed d\u1ee5ng X\u00e1c th\u1ef1c kh\u00f3a c\u00f4ng khai SSH<\/a>&nbsp;.<\/p>\n<p>Khi b\u1ea1n c\u00f3 c\u1eb7p kh\u00f3a SSH, b\u1ea1n c\u00f3 th\u1ec3 th\u00eam kh\u00f3a c\u00f4ng khai SSH v\u00e0o ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh trong cloud-config b\u1eb1ng t\u00f9y&nbsp;<code>ssh_authorized_keys<\/code>ch\u1ecdn. T\u00f9y ch\u1ecdn n\u00e0y ch\u1ea5p nh\u1eadn danh s\u00e1ch kh\u00f3a c\u00f4ng khai SSH \u0111\u1ec3 c\u1ea5p quy\u1ec1n truy c\u1eadp cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y.<\/p>\n<pre class=\"wp-block-code\"><code>users:\n  - default\n  - name: example-user\n    groups:\n      - sudo\n    sudo:\n      - ALL=(ALL) NOPASSWD:ALL\n    shell: \/bin\/bash\n    ssh_authorized_keys:\n      - &lt;SSH_PUBLIC_KEY&gt;<\/code><\/pre>\n<h2 id=\"harden-ssh\">L\u00e0m c\u1ee9ng SSH<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#harden-ssh\"><\/a><\/h2>\n<p>\u0110\u1ec3 t\u0103ng t\u00ednh b\u1ea3o m\u1eadt c\u1ee7a c\u00e1c k\u1ebft n\u1ed1i SSH v\u00e0o Compute Instance c\u1ee7a b\u1ea1n, b\u1ea1n th\u01b0\u1eddng n\u00ean t\u1eaft x\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u v\u00e0 \u0111\u0103ng nh\u1eadp root qua SSH. Theo c\u00e1ch n\u00e0y, quy\u1ec1n truy c\u1eadp b\u1ecb h\u1ea1n ch\u1ebf \u0111\u1ed1i v\u1edbi ng\u01b0\u1eddi d\u00f9ng v\u00e0 k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c x\u00e1c th\u1ef1c b\u1eb1ng c\u1eb7p kh\u00f3a SSH.<\/p>\n<p><code>users<\/code>Theo m\u1eb7c \u0111\u1ecbnh, thi\u1ebft l\u1eadp&nbsp;cloud-config&nbsp;<code>lock_passwd: true<\/code>s\u1ebd t\u1ef1 \u0111\u1ed9ng v\u00f4 hi\u1ec7u h\u00f3a x\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u. B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 thi\u1ebft l\u1eadp ng\u01b0\u1eddi d\u00f9ng v\u00e0 qu\u1ea3n l\u00fd c\u00e1c t\u00ednh n\u0103ng nh\u01b0 v\u1eady trong h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/manage-users-with-cloud-init\/\">S\u1eed d\u1ee5ng Cloud-Init \u0111\u1ec3 qu\u1ea3n l\u00fd ng\u01b0\u1eddi d\u00f9ng tr\u00ean m\u00e1y ch\u1ee7 m\u1edbi c\u1ee7a<\/a>&nbsp;ch\u00fang t\u00f4i .<\/p>\n<p>\u0110\u1ec3 v\u00f4 hi\u1ec7u h\u00f3a \u0111\u0103ng nh\u1eadp root, b\u1ea1n c\u1ea7n s\u1eeda \u0111\u1ed5i t\u1ec7p c\u1ea5u h\u00ecnh SSH. Cloud-config kh\u00f4ng c\u00f3 t\u00f9y ch\u1ecdn tr\u1ef1c ti\u1ebfp cho vi\u1ec7c n\u00e0y, nh\u01b0ng b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng&nbsp;<code>runcmd<\/code>kh\u00f3a \u0111a n\u0103ng c\u1ee7a n\u00f3 \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u00e1c l\u1ec7nh c\u1ea7n thi\u1ebft. T\u00ecm hi\u1ec3u th\u00eam v\u1ec1&nbsp;<code>runcmd<\/code>t\u00f9y ch\u1ecdn trong h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/run-shell-commands-with-cloud-init\/\">S\u1eed d\u1ee5ng Cloud-Init \u0111\u1ec3 ch\u1ea1y l\u1ec7nh v\u00e0 t\u1eadp l\u1ec7nh Bash khi kh\u1edfi \u0111\u1ed9ng l\u1ea7n \u0111\u1ea7u<\/a>&nbsp;.<\/p>\n<p>V\u00ed d\u1ee5 b\u00ean d\u01b0\u1edbi x\u00f3a b\u1ea5t k\u1ef3&nbsp;<code>PermitRootLogin<\/code>c\u1ea5u h\u00ecnh hi\u1ec7n c\u00f3 n\u00e0o v\u00e0 th\u00eam c\u1ea5u h\u00ecnh m\u1edbi v\u00f4 hi\u1ec7u h\u00f3a&nbsp;<code>PermitRootLogin<\/code>. L\u1ec7nh cu\u1ed1i c\u00f9ng kh\u1edfi \u0111\u1ed9ng l\u1ea1i&nbsp;<code>sshd<\/code>d\u1ecbch v\u1ee5 \u0111\u1ec3 c\u00e1c thay \u0111\u1ed5i c\u00f3 hi\u1ec7u l\u1ef1c.<\/p>\n<pre class=\"wp-block-code\"><code>runcmd:\n  - sed -i '\/PermitRootLogin\/d' \/etc\/ssh\/sshd_config\n  - echo \"PermitRootLogin no\" &gt;&gt; \/etc\/ssh\/sshd_config\n  - systemctl restart sshd<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: V\u00ed d\u1ee5 tr\u00ean gi\u1ea3 \u0111\u1ecbnh h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n s\u1eed d\u1ee5ng&nbsp;<code>systemctl<\/code>\u0111\u1ec3 qu\u1ea3n l\u00fd d\u1ecbch v\u1ee5 SSH. M\u1eb7c d\u00f9 tr\u01b0\u1eddng h\u1ee3p n\u00e0y x\u1ea3y ra v\u1edbi c\u00e1c phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t c\u1ee7a c\u00e1c b\u1ea3n ph\u00e2n ph\u1ed1i ph\u1ed5 bi\u1ebfn nh\u1ea5t, nh\u01b0ng kh\u00f4ng ph\u1ea3i t\u1ea5t c\u1ea3 c\u00e1c b\u1ea3n ph\u00e2n ph\u1ed1i \u0111\u1ec1u nh\u01b0 v\u1eady. B\u1ea1n c\u00f3 th\u1ec3 c\u1ea7n s\u1eeda \u0111\u1ed5i c\u00e1c l\u1ec7nh tr\u00ean t\u00f9y thu\u1ed9c v\u00e0o c\u00e1ch h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n qu\u1ea3n l\u00fd d\u1ecbch v\u1ee5 SSH. V\u00ed d\u1ee5, c\u00e1c h\u1ec7 th\u1ed1ng nh\u01b0 CentOS 6, Debian 7 v\u00e0 Ubuntu 14.04 s\u1eed d\u1ee5ng&nbsp;<code>service<\/code>thay v\u00ec&nbsp;<code>systemctl<\/code>. V\u00ec v\u1eady, b\u1ea1n s\u1ebd c\u1ea7n thay th\u1ebf&nbsp;<code>systemctl<\/code>l\u1ec7nh tr\u00ean b\u1eb1ng l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code>service sshd restart<\/code><\/pre>\n<h2 id=\"install-any-additional-required-software\">C\u00e0i \u0111\u1eb7t b\u1ea5t k\u1ef3 ph\u1ea7n m\u1ec1m b\u1ed5 sung n\u00e0o c\u1ea7n thi\u1ebft<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#install-any-additional-required-software\"><\/a><\/h2>\n<p>V\u1edbi kh\u00f3a cloud-config&nbsp;<code>packages<\/code>, b\u1ea1n c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a vi\u1ec7c c\u00e0i \u0111\u1eb7t v\u00e0 qu\u1ea3n l\u00fd ph\u1ea7n m\u1ec1m nh\u01b0 m\u1ed9t ph\u1ea7n c\u1ee7a qu\u00e1 tr\u00ecnh kh\u1edfi t\u1ea1o m\u00e1y ch\u1ee7. \u0110\u1ec3 bi\u1ebft th\u00f4ng tin \u0111\u1ea7y \u0111\u1ee7 v\u1ec1 c\u00e1c t\u00ednh n\u0103ng qu\u1ea3n l\u00fd g\u00f3i c\u1ee7a cloud-init v\u00e0 c\u00e1c v\u00ed d\u1ee5 v\u1ec1 c\u00e1ch s\u1eed d\u1ee5ng, h\u00e3y xem h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-and-update-software-with-cloud-init\/\">S\u1eed d\u1ee5ng Cloud-Init \u0111\u1ec3 c\u00e0i \u0111\u1eb7t v\u00e0 c\u1eadp nh\u1eadt ph\u1ea7n m\u1ec1m tr\u00ean m\u00e1y ch\u1ee7 m\u1edbi<\/a>&nbsp;.<\/p>\n<p>Nh\u01b0 m\u1ed9t minh h\u1ecda c\u01a1 b\u1ea3n, \u0111o\u1ea1n tr\u00edch d\u01b0\u1edbi \u0111\u00e2y cho th\u1ea5y c\u00e1ch c\u00e0i \u0111\u1eb7t m\u1ed9t b\u1ed9 ph\u1ea7n m\u1ec1m trong qu\u00e1 tr\u00ecnh kh\u1edfi t\u1ea1o phi\u00ean b\u1ea3n. V\u00ed d\u1ee5 c\u00e0i \u0111\u1eb7t ph\u1ea7n m\u1ec1m cho ng\u0103n x\u1ebfp web LEMP (NGINX, MySQL v\u00e0 PHP) m\u1ed9t thi\u1ebft l\u1eadp ph\u1ed5 bi\u1ebfn cho c\u00e1c \u1ee9ng d\u1ee5ng web. B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 ng\u0103n x\u1ebfp LEMP trong h\u01b0\u1edbng d\u1eabn c\u1ee7a ch\u00fang t\u00f4i v\u1ec1 c\u00e1ch&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-a-lemp-stack-on-ubuntu-22-04\/\">c\u00e0i \u0111\u1eb7t ng\u0103n x\u1ebfp LEMP<\/a>&nbsp;.<\/p>\n<pre class=\"wp-block-code\"><code>packages:\n  - mysql-server\n  - nginx\n  - php<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: C\u00e1c g\u00f3i ph\u1ea7n m\u1ec1m c\u00f3 t\u00ean kh\u00e1c nhau t\u00f9y thu\u1ed9c v\u00e0o b\u1ea3n ph\u00e2n ph\u1ed1i b\u1ea1n \u0111ang s\u1eed d\u1ee5ng. Tham kh\u1ea3o kho l\u01b0u tr\u1eef g\u00f3i c\u1ee7a b\u1ea3n ph\u00e2n ph\u1ed1i \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh t\u00ean g\u00f3i cho ph\u1ea7n m\u1ec1m b\u1ea1n mu\u1ed1n c\u00e0i \u0111\u1eb7t.<\/p>\n<h2 id=\"complete-cloud-config-file\">T\u1eadp tin Cloud-Config ho\u00e0n ch\u1ec9nh<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#complete-cloud-config-file\"><\/a><\/h2>\n<p>Sau \u0111\u00e2y l\u00e0 m\u1ed9t v\u00ed d\u1ee5 ho\u00e0n ch\u1ec9nh v\u1ec1 t\u1ec7p cloud-config, t\u00f3m t\u1eaft t\u1ea5t c\u1ea3 c\u00e1c t\u00f9y ch\u1ecdn kh\u1edfi t\u1ea1o \u0111\u01b0\u1ee3c \u0111\u1ec1 c\u1eadp trong h\u01b0\u1edbng d\u1eabn n\u00e0y. B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng t\u1ec7p n\u00e0y l\u00e0m c\u01a1 s\u1edf \u0111\u1ec3 kh\u1edfi t\u1ea1o Compute Instance c\u1ee7a ri\u00eang m\u00ecnh. V\u00ed d\u1ee5, h\u00e3y x\u00f3a ph\u1ea7n n\u00e0y&nbsp;<code>packages<\/code>v\u00e0 t\u00f9y ch\u1ec9nh th\u00f4ng tin chi ti\u1ebft v\u1ec1 ng\u01b0\u1eddi d\u00f9ng v\u00e0 m\u00e1y ch\u1ee7 b\u1ecb gi\u1edbi h\u1ea1n, v\u00e0 b\u1ea1n s\u1ebd c\u00f3 m\u1ed9t t\u1eadp l\u1ec7nh theo h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/set-up-and-secure\/\">Thi\u1ebft l\u1eadp v\u00e0 b\u1ea3o m\u1eadt Compute Instance<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i . H\u00e3y tho\u1ea3i m\u00e1i th\u00eam c\u00e1c t\u00ednh n\u0103ng kh\u00e1c \u0111\u1ec3 tinh ch\u1ec9nh phi\u00ean b\u1ea3n theo nhu c\u1ea7u c\u1ee7a b\u1ea1n.<\/p>\n<pre class=\"wp-block-code\"><code>#cloud-config\n\n# Configure a limited user\nusers:\n  - default\n  - name: example-user\n    groups:\n      - sudo\n    sudo:\n      - ALL=(ALL) NOPASSWD:ALL\n    shell: \/bin\/bash\n    ssh_authorized_keys:\n      - \"SSH_PUBLIC_KEY\"\n\n# Perform System Updates\npackage_update: true\npackage_upgrade: true\n\n# Configure server details\ntimezone: 'US\/Central'\nhostname: examplehost\n\n# Harden SSH access\nruncmd:\n  - sed -i '\/PermitRootLogin\/d' \/etc\/ssh\/sshd_config\n  - echo \"PermitRootLogin no\" &gt;&gt; \/etc\/ssh\/sshd_config\n  - systemctl restart sshd\n\n# Install additional software packages\npackages:\n  - nginx\n  - mysql-server\n  - php<\/code><\/pre>\n<h2 id=\"deploy-an-instance-with-user-data\">Tri\u1ec3n khai m\u1ed9t phi\u00ean b\u1ea3n v\u1edbi d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/#deploy-an-instance-with-user-data\"><\/a><\/h2>\n<p>C\u00f3 ba c\u00e1ch \u0111\u1ec3 tri\u1ec3n khai Compute Instance m\u1edbi b\u1eb1ng t\u1eadp l\u1ec7nh kh\u1edfi t\u1ea1o cloud-config c\u1ee7a b\u1ea1n. C\u00e1c t\u00f9y ch\u1ecdn n\u00e0y \u0111\u01b0\u1ee3c t\u00f3m t\u1eaft b\u00ean d\u01b0\u1edbi, v\u1edbi c\u00e1c li\u00ean k\u1ebft \u0111\u1ebfn h\u01b0\u1edbng d\u1eabn tri\u1ec3n khai c\u00f3 li\u00ean quan. \u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 tri\u1ec3n khai cloud-init, h\u00e3y xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/metadata\/\">T\u1ed5ng quan v\u1ec1 d\u1ecbch v\u1ee5 si\u00eau d\u1eef li\u1ec7u<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/p>\n<p><strong>Cloud Manager<\/strong>&nbsp;: B\u1ea1n c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh v\u00e0 tri\u1ec3n khai c\u00e1c phi\u00ean b\u1ea3n m\u1edbi m\u1ed9t c\u00e1ch thu\u1eadn ti\u1ec7n b\u1eb1ng tr\u00ecnh duy\u1ec7t web. L\u00e0m theo h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/create\/\">T\u1ea1o phi\u00ean b\u1ea3n t\u00ednh to\u00e1n<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i \u0111\u1ec3 tri\u1ec3n khai phi\u00ean b\u1ea3n m\u1edbi. H\u01b0\u1edbng d\u1eabn bao g\u1ed3m m\u1ed9t ph\u1ea7n v\u1ec1 c\u00e1ch&nbsp;<strong>Th\u00eam d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng<\/strong>&nbsp;, hi\u1ec3n th\u1ecb n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 nh\u1eadp n\u1ed9i dung cloud-config c\u1ee7a m\u00ecnh.<\/p>\n<p><strong>Linode CLI<\/strong>&nbsp;: C\u00f4ng c\u1ee5 d\u00f2ng l\u1ec7nh cung c\u1ea5p l\u1ec7nh \u0111\u1ec3 t\u1ea1o m\u1ed9t Compute Instance m\u1edbi v\u00e0 l\u1ec7nh \u0111\u00f3 c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng&nbsp;<code>--metdata.user_data<\/code>t\u00f9y ch\u1ecdn v\u1edbi t\u1eadp l\u1ec7nh cloud-config c\u1ee7a b\u1ea1n. \u0110\u1ec3 t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 c\u00e1ch s\u1eed d\u1ee5ng Linode CLI, h\u00e3y xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/tools\/cli\/get-started\/\">B\u1eaft \u0111\u1ea7u v\u1edbi Linode CLI<\/a>&nbsp;v\u00e0&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/tools\/cli\/guides\/linode-instances\/\">L\u1ec7nh Linode CLI cho Compute Instance<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .Sau \u0111\u00e2y l\u00e0 m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c l\u1ec7nh v\u00ed d\u1ee5 \u0111\u1ec3 tri\u1ec3n khai m\u1ed9t phi\u00ean b\u1ea3n t\u1eeb t\u1ec7p cloud-config. V\u00ed d\u1ee5 n\u00e0y gi\u1ea3 \u0111\u1ecbnh r\u1eb1ng b\u1ea1n \u0111\u00e3 thi\u1ebft l\u1eadp c\u00f4ng c\u1ee5 CLI Linode v\u00e0 cloud-config c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef nh\u01b0&nbsp;<code>cloud-config.yaml<\/code>trong th\u01b0 m\u1ee5c hi\u1ec7n t\u1ea1i. Xem l\u1ea1i h\u01b0\u1edbng d\u1eabn \u0111\u01b0\u1ee3c li\u00ean k\u1ebft \u1edf tr\u00ean \u0111\u1ec3 bi\u1ebft th\u00eam v\u1ec1 c\u00e1c t\u00f9y ch\u1ecdn kh\u00e1c \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong l\u1ec7nh v\u00ed d\u1ee5 n\u00e0y.L\u1ec7nh CLI y\u00eau c\u1ea7u cloud-config \u0111\u01b0\u1ee3c m\u00e3 h\u00f3a th\u00e0nh chu\u1ed7i base64, b\u1ea1n c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n b\u1eb1ng l\u1ec7nh&nbsp;<code>cat cloud-config.yaml | base64 -w 0<\/code>. L\u1ec7nh \u0111\u1ea7u ti\u00ean b\u00ean d\u01b0\u1edbi th\u1ef1c hi\u1ec7n vi\u1ec7c n\u00e0y v\u00e0 g\u00e1n gi\u00e1 tr\u1ecb cho bi\u1ebfn shell \u0111\u1ec3 thu\u1eadn ti\u1ec7n.<\/p>\n<pre class=\"wp-block-code\"><code>cloudconfigvar=\"$(cat cloud-config.yaml | base64 -w 0)\"\n\nlinode-cli linodes create \\\n  --label cloud-init-example \\\n  --region us-iad \\\n  --type g6-nanode-1 \\\n  --image linode\/ubuntu22.04 \\\n  --root_pass EXAMPLE_ROOT_PASSWORD \\\n  --metadata.user_data \"$cloudconfigvar\"<\/code><\/pre>\n<p><strong>API Linode<\/strong>&nbsp;: Trong&nbsp;<code>instances\/<\/code>\u0111i\u1ec3m cu\u1ed1i c\u1ee7a API, b\u1ea1n c\u00f3 quy\u1ec1n truy c\u1eadp v\u00e0o&nbsp;<code>metadata.user_data<\/code>t\u00f9y ch\u1ecdn \u0111\u1ec3 nh\u1eadp cloud-config. S\u1eed d\u1ee5ng t\u00f9y ch\u1ecdn n\u00e0y, b\u1ea1n c\u00f3 th\u1ec3 kh\u1edfi t\u1ea1o m\u1ed9t Compute Instance m\u1edbi trong m\u1ed9t&nbsp;<code>POST<\/code>y\u00eau c\u1ea7u thu\u1eadn ti\u1ec7n. T\u00ecm hi\u1ec3u th\u00eam v\u1ec1 API Linode trong t\u00e0i li\u1ec7u c\u1ee7a ch\u00fang t\u00f4i v\u1ec1&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/api\/\">API Linode<\/a>&nbsp;v\u00e0 t\u00e0i li\u1ec7u&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/api\/linode-instances\/\">API Linode Instances<\/a>&nbsp;.<\/p>\n<p>V\u1edbi t\u00ednh linh ho\u1ea1t l\u00e0 m\u1ed9t trong nh\u1eefng l\u1ee3i th\u1ebf ch\u00ednh c\u1ee7a n\u00f3, c\u00f3 nhi\u1ec1u c\u00e1ch \u0111\u1ec3 s\u1eed d\u1ee5ng API Linode \u0111\u1ec3 tri\u1ec3n khai m\u00e1y ch\u1ee7. C\u00e1c b\u01b0\u1edbc d\u01b0\u1edbi \u0111\u00e2y cho th\u1ea5y m\u1ed9t c\u00e1ch ti\u1ebfp c\u1eadn \u0111\u01a1n gi\u1ea3n ch\u1ec9 s\u1eed d\u1ee5ng d\u00f2ng l\u1ec7nh. V\u00ed d\u1ee5 n\u00e0y c\u0169ng d\u1ec5 d\u00e0ng th\u00edch \u1ee9ng v\u1edbi c\u00e1c ng\u1eef c\u1ea3nh kh\u00e1c.<\/p>\n<p>1.T\u1ea1o t\u1ec7p payload. \u0110\u00e2y l\u00e0 c\u00e1ch ti\u1ebfp c\u1eadn thu\u1eadn ti\u1ec7n cho&nbsp;<code>POST<\/code>d\u1eef li\u1ec7u c\u1ee7a y\u00eau c\u1ea7u, v\u00ec n\u00f3 gi\u00fap d\u1eef li\u1ec7u d\u1ec5 t\u1ea1o v\u00e0 t\u00e1i s\u1eed d\u1ee5ng h\u01a1n. B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o t\u1ec7p b\u1eb1ng tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n \u01b0a th\u00edch c\u1ee7a m\u00ecnh, nh\u01b0ng v\u00ed d\u1ee5 n\u00e0y s\u1eed d\u1ee5ng&nbsp;<code>&gt;<\/code>l\u1ec7nh \u0111\u1ec3 th\u1ef1c hi\u1ec7n vi\u1ec7c \u0111\u00f3.<\/p>\n<pre class=\"wp-block-code\"><code>cat &gt; cloud-init-example-deployment.json &lt;&lt;'EOF'\n{\n  \"label\": \"cloud-init-example\",\n  \"region\": \"us-iad\",\n  \"type\": \"g6-nanode-1\",\n  \"image\": \"linode\/ubuntu22.04\",\n  \"root_pass\": \"EXAMPLE_ROOT_PASSWORD\",\n  \"metadata\": {\n    \"user_data\": \"&lt;INSERT_CLOUD_CONFIG&gt;\"\n  }\n}\nEOF<\/code><\/pre>\n<p>2.Ch\u00e8n cloud-config d\u01b0\u1edbi d\u1ea1ng&nbsp;<code>metadata.user_data<\/code>. API, gi\u1ed1ng nh\u01b0 CLI, y\u00eau c\u1ea7u cloud-config ph\u1ea3i \u0111\u01b0\u1ee3c m\u00e3 h\u00f3a d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i base64. D\u01b0\u1edbi \u0111\u00e2y, \u0111i\u1ec1u \u0111\u00f3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n b\u1eb1ng l\u1ec7nh&nbsp;<code>cat cloud-config.yaml | base64 -w 0<\/code>, v\u00e0 gi\u00e1 tr\u1ecb \u0111\u01b0\u1ee3c g\u00e1n cho m\u1ed9t bi\u1ebfn shell \u0111\u1ec3 thu\u1eadn ti\u1ec7n.<\/p>\n<pre class=\"wp-block-code\"><code>cloudconfigvar=\"$(cat cloud-config.yaml | base64 -w 0)\"\nsed -i \"s,&lt;INSERT_CLOUD_CONFIG&gt;,$cloudconfigvar,\" cloud-init-example-deployment.json<\/code><\/pre>\n<p>Ngo\u00e0i ra, b\u1ea1n c\u00f3 th\u1ec3 sao ch\u00e9p chu\u1ed7i base64, m\u1edf t\u1ec7p v\u00e0 d\u00e1n chu\u1ed7i v\u00e0o tr\u01b0\u1eddng&nbsp;<code>user_data<\/code>.<\/p>\n<p>3.G\u1eedi&nbsp;<code>POST<\/code>y\u00eau c\u1ea7u \u0111\u1ebfn&nbsp;<code>instances<\/code>\u0111i\u1ec3m cu\u1ed1i API. Bao g\u1ed3m m\u00e3 th\u00f4ng b\u00e1o truy c\u1eadp c\u00e1 nh\u00e2n API Linode c\u1ee7a b\u1ea1n (\u0111\u01b0\u1ee3c \u0111\u1ec1 c\u1eadp trong h\u01b0\u1edbng d\u1eabn \u0111\u01b0\u1ee3c li\u00ean k\u1ebft \u1edf tr\u00ean) l\u00e0m&nbsp;<code>Authorization: Bearer<\/code>ti\u00eau \u0111\u1ec1.<\/p>\n<pre class=\"wp-block-code\"><code>curl -H \"Content-Type: application\/json\" \\\n  -H \"Authorization: Bearer API_ACCESS_TOKEN\" \\\n  -X POST \\\n  -d @cloud-init-example-deployment.json \\\n  https:&#47;&#47;api.linode.com\/v4\/linode\/instances<\/code><\/pre>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/configure-and-secure-servers-with-cloud-init\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 Metadata c\u1ee7a Akamai, b\u1ea1n c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh Compute Instances m\u1edbi c\u1ee7a m\u00ecnh th\u00f4ng qua cloud-init. H\u01b0\u1edbng d\u1eabn n\u00e0y h\u01b0\u1edbng d\u1eabn b\u1ea1n c\u00e1ch x\u00e2y d\u1ef1ng t\u1ec7p cloud-config (\u0111\u1ec3 s\u1eed d\u1ee5ng v\u1edbi cloud-init) v\u00e0 tri\u1ec3n khai Compute Instance b\u1eb1ng c\u1ea5u h\u00ecnh \u0111\u00f3. H\u01b0\u1edbng d\u1eabn n\u00e0y bao g\u1ed3m m\u1ed9t<\/p>\n","protected":false},"author":1,"featured_media":35951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[132],"tags":[],"class_list":["post-34951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-init"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34951","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=34951"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34951\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35951"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}