{"id":34923,"date":"2024-08-27T10:21:30","date_gmt":"2024-08-27T03:21:30","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/27\/use-cloud-config-files-to-configure-a-server\/"},"modified":"2026-05-14T10:30:49","modified_gmt":"2026-05-14T09:30:49","slug":"use-cloud-config-files-to-configure-a-server","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/27\/use-cloud-config-files-to-configure-a-server\/","title":{"rendered":"S\u1eed d\u1ee5ng Cloud-config files \u0111\u1ec3 c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7"},"content":{"rendered":"<p>C\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u00e1m m\u00e2y \u0111\u01b0\u1ee3c d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u c\u1ee7a ch\u00fang t\u00f4i h\u1ed7 tr\u1ee3 v\u00e0 \u0111\u01b0\u1ee3c cloud-init s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7. H\u01b0\u1edbng d\u1eabn n\u00e0y \u0111\u1ec1 c\u1eadp \u0111\u1ebfn vi\u1ec7c t\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u00e1m m\u00e2y, c\u00e1c m\u00f4-\u0111un ph\u1ed5 bi\u1ebfn v\u00e0 v\u00ed d\u1ee5 \u0111\u1ec3 gi\u00fap b\u1ea1n b\u1eaft \u0111\u1ea7u.<\/p>\n<p><strong>C\u00fa ph\u00e1p<br \/><\/strong>D\u1eef li\u1ec7u Cloud-config \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng c\u00fa ph\u00e1p YAML, m\u1ed9t \u0111\u1ecbnh d\u1ea1ng tu\u1ea7n t\u1ef1 h\u00f3a d\u1eef li\u1ec7u th\u01b0\u1eddng d\u00f9ng, th\u00e2n thi\u1ec7n v\u1edbi ng\u01b0\u1eddi d\u00f9ng v\u00e0 d\u1ec5 \u0111\u1ecdc h\u01a1n so v\u1edbi c\u00e1c \u0111\u1ecbnh d\u1ea1ng thay th\u1ebf (nh\u01b0 JSON). YAML bao g\u1ed3m c\u00e1c c\u1eb7p kh\u00f3a-gi\u00e1 tr\u1ecb. M\u1ed7i kh\u00f3a \u0111\u01b0\u1ee3c nh\u1eadp tr\u00ean m\u1ed9t d\u00f2ng ri\u00eang v\u00e0 d\u1ea5u hai ch\u1ea5m (:) \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ph\u00e2n t\u00e1ch kh\u00f3a kh\u1ecfi gi\u00e1 tr\u1ecb c\u1ee7a kh\u00f3a. Ph\u1ea1m vi c\u1ee7a kh\u00f3a \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh b\u1eb1ng c\u00e1ch th\u1ee5t l\u1ec1. \u0110\u1ec3 t\u00ecm hi\u1ec3u th\u00eam v\u1ec1 YAML, h\u00e3y xem th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt YAML m\u1edbi nh\u1ea5t.<\/p>\n<p><strong>C\u00e1c m\u00f4-\u0111un Cloud-config<br \/><\/strong>M\u1ed9t t\u1ec7p cloud-config ph\u1ea3i ch\u1ee9a #cloud-config l\u00e0m d\u00f2ng \u0111\u1ea7u ti\u00ean. Sau \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c kh\u00f3a do b\u1ea5t k\u1ef3 m\u00f4-\u0111un cloud-init n\u00e0o cung c\u1ea5p. Xem l\u1ea1i c\u00e1c ph\u1ea7n c\u00f2n l\u1ea1i c\u1ee7a h\u01b0\u1edbng d\u1eabn n\u00e0y \u0111\u1ec3 bi\u1ebft danh s\u00e1ch c\u00e1c m\u00f4-\u0111un ph\u1ed5 bi\u1ebfn v\u00e0 c\u00e1ch c\u1ea5u h\u00ecnh ch\u00fang. \u0110\u1ec3 bi\u1ebft danh s\u00e1ch \u0111\u1ea7y \u0111\u1ee7 c\u00e1c m\u00f4-\u0111un\/kh\u00f3a, h\u00e3y xem t\u00e0i li\u1ec7u tham kh\u1ea3o m\u00f4-\u0111un cloud-init.<\/p>\n<p>T\u1ea1o ng\u01b0\u1eddi d\u00f9ng m\u1edbi v\u00e0 h\u1ea1n ch\u1ebf quy\u1ec1n truy c\u1eadp root<br \/>M\u1ed9t trong nh\u1eefng nhi\u1ec7m v\u1ee5 b\u1ea3o m\u1eadt ph\u1ed5 bi\u1ebfn nh\u1ea5t cho m\u1ecdi tri\u1ec3n khai h\u1ec7 th\u1ed1ng m\u1edbi l\u00e0 c\u1ea5u h\u00ecnh t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng. \u0110i\u1ec1u n\u00e0y bao g\u1ed3m t\u1ea1o t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng gi\u1edbi h\u1ea1n cho qu\u1ea3n tr\u1ecb vi\u00ean h\u1ec7 th\u1ed1ng, th\u00eam h\u1ecd v\u00e0o nh\u00f3m sudo v\u00e0 cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng \u0111\u0103ng nh\u1eadp qua SSH b\u1eb1ng kh\u00f3a c\u00f4ng khai thay v\u00ec m\u1eadt kh\u1ea9u.<\/p>\n<ul>\n<li>users (danh s\u00e1ch): C\u1ea5u h\u00ecnh t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng (Tham chi\u1ebfu | V\u00ed d\u1ee5)<\/li>\n<\/ul>\n<ul>\n<li>name (chu\u1ed7i): T\u00ean ng\u01b0\u1eddi d\u00f9ng.<\/li>\n<\/ul>\n<ul>\n<li>passwd (chu\u1ed7i): M\u00e3 b\u0103m c\u1ee7a m\u1eadt kh\u1ea9u b\u1ea1n mu\u1ed1n c\u1ea5u h\u00ecnh cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y.<\/li>\n<\/ul>\n<ul>\n<li>groups (chu\u1ed7i): T\u00ean nh\u00f3m m\u00e0 ng\u01b0\u1eddi d\u00f9ng ph\u1ea3i thu\u1ed9c v\u1ec1.<\/li>\n<\/ul>\n<ul>\n<li>sudo: X\u00e1c \u0111\u1ecbnh chu\u1ed7i quy t\u1eafc sudo ho\u1eb7c \u0111\u1eb7t th\u00e0nh False \u0111\u1ec3 t\u1eeb ch\u1ed1i s\u1eed d\u1ee5ng sudo.<\/li>\n<\/ul>\n<ul>\n<li>lock_passwd (boolean): N\u1ebfu \u0111\u00fang (c\u00e0i \u0111\u1eb7t m\u1eb7c \u0111\u1ecbnh), s\u1ebd ng\u0103n kh\u00f4ng cho \u0111\u0103ng nh\u1eadp b\u1eb1ng m\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng \u0111\u00f3.<\/li>\n<\/ul>\n<ul>\n<li>ssh_authorized_keys (danh s\u00e1ch): Danh s\u00e1ch ch\u1ee9a c\u00e1c kh\u00f3a c\u00f4ng khai c\u1ea7n \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y.<\/li>\n<\/ul>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" width=\"924\" height=\"271\" src=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-99.png\" alt=\"\" class=\"wp-image-1477\" srcset=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-99.png 924w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-99-300x88-1.png 300w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-99-768x225-1.png 768w\" sizes=\"auto, (max-width: 924px) 100vw, 924px\" \/><\/figure>\n<p><strong>C\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng<br \/><\/strong>C\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng l\u00e0 m\u1ed9t t\u00e1c v\u1ee5 ph\u1ed5 bi\u1ebfn kh\u00e1c \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n sau khi h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c tri\u1ec3n khai.<\/p>\n<p>package_update (boolean): C\u1eadp nh\u1eadt c\u01a1 s\u1edf d\u1eef li\u1ec7u apt (cloud-init Docs)<br \/>package_upgrade (boolean): N\u00e2ng c\u1ea5p ph\u1ea7n m\u1ec1m tr\u00ean h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n (b\u1eb1ng c\u00e1ch ch\u1ea1y l\u1ec7nh yum ho\u1eb7c apt upgrade). Xem t\u00e0i li\u1ec7u cloud-init.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" width=\"970\" height=\"143\" src=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-100.png\" alt=\"\" class=\"wp-image-1478\" srcset=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-100.png 970w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-100-300x44-1.png 300w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-100-768x113-1.png 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/figure>\n<p><strong>C\u00e0i \u0111\u1eb7t g\u00f3i ph\u1ea7n m\u1ec1m<br \/><\/strong>H\u1ea7u h\u1ebft m\u1ecdi kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c ch\u1ea1y tr\u00ean Compute Instance \u0111\u1ec1u y\u00eau c\u1ea7u c\u00e0i \u0111\u1eb7t th\u00eam ph\u1ea7n m\u1ec1m. B\u1ea1n c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng c\u00e0i \u0111\u1eb7t c\u00e1c g\u00f3i ph\u1ea7n m\u1ec1m b\u1eb1ng c\u00e1ch th\u00eam ch\u00fang v\u00e0o t\u1ec7p cloud-config c\u1ee7a m\u00ecnh.<\/p>\n<p>packages (list): C\u00e0i \u0111\u1eb7t danh s\u00e1ch c\u00e1c g\u00f3i \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh. Xem t\u00e0i li\u1ec7u cloud-init.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" width=\"951\" height=\"202\" src=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-101.png\" alt=\"\" class=\"wp-image-1479\" srcset=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-101.png 951w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-101-300x64-1.png 300w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-101-768x163-1.png 768w\" sizes=\"auto, (max-width: 951px) 100vw, 951px\" \/><\/figure>\n<p><strong>Ch\u1ea1y l\u1ec7nh<br \/><\/strong>runcmd (danh s\u00e1ch): Ch\u1ea1y c\u00e1c l\u1ec7nh \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh trong l\u1ea7n kh\u1edfi \u0111\u1ed9ng \u0111\u1ea7u ti\u00ean. Xem t\u00e0i li\u1ec7u cloud-init.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" width=\"969\" height=\"137\" src=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-102.png\" alt=\"\" class=\"wp-image-1480\" srcset=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-102.png 969w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-102-300x42-1.png 300w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-102-768x109-1.png 768w\" sizes=\"auto, (max-width: 969px) 100vw, 969px\" \/><\/figure>\n<p><strong>Ghi v\u00e0o t\u1ec7p<\/strong><\/p>\n<ul>\n<li>write_files (danh s\u00e1ch): xem t\u00e0i li\u1ec7u cloud-init.<\/li>\n<\/ul>\n<ul>\n<li>content: To\u00e0n b\u1ed9 n\u1ed9i dung c\u1ea7n \u0111\u01b0a v\u00e0o t\u1ec7p.<\/li>\n<\/ul>\n<ul>\n<li>path: \u0110\u01b0\u1eddng d\u1eabn \u0111\u1ebfn t\u1ec7p. N\u1ebfu t\u1ec7p \u0111\u00e3 t\u1ed3n t\u1ea1i \u1edf v\u1ecb tr\u00ed n\u00e0y, t\u1ec7p s\u1ebd b\u1ecb ghi \u0111\u00e8.<\/li>\n<\/ul>\n<ul>\n<li>permissions: X\u00e1c \u0111\u1ecbnh quy\u1ec1n c\u1ee7a t\u1ec7p theo \u0111\u1ecbnh d\u1ea1ng b\u00e1t ph\u00e2n (v\u00ed d\u1ee5: 0644).<\/li>\n<\/ul>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" width=\"940\" height=\"299\" src=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-103.png\" alt=\"\" class=\"wp-image-1481\" srcset=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-103.png 940w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-103-300x95-1.png 300w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-103-768x244-1.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u00e1m m\u00e2y \u0111\u01b0\u1ee3c d\u1ecbch v\u1ee5 Si\u00eau d\u1eef li\u1ec7u c\u1ee7a ch\u00fang t\u00f4i h\u1ed7 tr\u1ee3 v\u00e0 \u0111\u01b0\u1ee3c cloud-init s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7. H\u01b0\u1edbng d\u1eabn n\u00e0y \u0111\u1ec1 c\u1eadp \u0111\u1ebfn vi\u1ec7c t\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u00e1m m\u00e2y, c\u00e1c m\u00f4-\u0111un ph\u1ed5 bi\u1ebfn v\u00e0 v\u00ed d\u1ee5 \u0111\u1ec3 gi\u00fap b\u1ea1n b\u1eaft \u0111\u1ea7u.<\/p>\n","protected":false},"author":1,"featured_media":35766,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83],"tags":[],"class_list":["post-34923","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-metadata-service"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34923","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=34923"}],"version-history":[{"count":1,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34923\/revisions"}],"predecessor-version":[{"id":35767,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34923\/revisions\/35767"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35766"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}