{"id":34936,"date":"2024-09-04T11:04:43","date_gmt":"2024-09-04T04:04:43","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/04\/install-chef-on-ubuntu-20-04\/"},"modified":"2024-09-04T11:04:43","modified_gmt":"2024-09-04T04:04:43","slug":"install-chef-on-ubuntu-20-04","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/04\/install-chef-on-ubuntu-20-04\/","title":{"rendered":"C\u00e0i \u0111\u1eb7t Chef tr\u00ean Ubuntu 20.04"},"content":{"rendered":"<p><a href=\"https:\/\/www.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Chef<\/a>&nbsp;l\u00e0 \u1ee9ng d\u1ee5ng&nbsp;<em>Infrastructure as Code<\/em>&nbsp;(IaC) mi\u1ec5n ph\u00ed v\u00e0 m\u00e3 ngu\u1ed3n m\u1edf. \u0110\u00e2y l\u00e0 h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh cho ph\u00e9p qu\u1ea3n tr\u1ecb vi\u00ean cung c\u1ea5p v\u00e0 qu\u1ea3n l\u00fd c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng b\u1eb1ng c\u00e1ch t\u1ef1 \u0111\u1ed9ng h\u00f3a. M\u1ed9t quy tr\u00ecnh l\u00e0m vi\u1ec7c Chef ho\u00e0n ch\u1ec9nh bao g\u1ed3m m\u1ed9t ho\u1eb7c nhi\u1ec1u Chef Workstation, m\u1ed9t Chef Server v\u00e0 m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c n\u00fat. H\u01b0\u1edbng d\u1eabn n\u00e0y cung c\u1ea5p m\u1ed9t s\u1ed1 th\u00f4ng tin c\u01a1 b\u1ea3n v\u1ec1 c\u00e1ch Chef ho\u1ea1t \u0111\u1ed9ng v\u00e0 gi\u1ea3i th\u00edch c\u00e1ch c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh Chef tr\u00ean Ubuntu 20.04.<\/p>\n<h2 id=\"what-is-chef\">Chef l\u00e0 g\u00ec?<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#what-is-chef\"><\/a><\/h2>\n<p>Chef l\u00e0 m\u1ed9t \u1ee9ng d\u1ee5ng IaC \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a v\u00e0 h\u1ee3p l\u00fd h\u00f3a quy tr\u00ecnh cung c\u1ea5p, c\u1ea5u h\u00ecnh, tri\u1ec3n khai v\u00e0 qu\u1ea3n l\u00fd c\u00e1c n\u00fat m\u1ea1ng. N\u00f3 cho ph\u00e9p tri\u1ec3n khai li\u00ean t\u1ee5c v\u00e0 m\u00f4i tr\u01b0\u1eddng t\u1ef1 \u0111\u1ed9ng. Chef c\u00f3 th\u1ec3 qu\u1ea3n l\u00fd nhi\u1ec1u lo\u1ea1i th\u00e0nh ph\u1ea7n bao g\u1ed3m m\u00e1y ch\u1ee7, v\u00f9ng ch\u1ee9a v\u00e0 c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng m\u1ea1ng.<\/p>\n<p>Chef ho\u1ea1t \u0111\u1ed9ng b\u1eb1ng ki\u1ebfn \u200b\u200btr\u00fac hub-and-spoke, v\u1edbi Chef Server ch\u00ednh \u1edf trung t\u00e2m. M\u1ed9t ho\u1eb7c nhi\u1ec1u Chef Workstation t\u01b0\u01a1ng t\u00e1c v\u1edbi Server, t\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh m\u1ed9t ho\u1eb7c nhi\u1ec1u n\u00fat Chef. T\u00e0i s\u1ea3n c\u1ea5u h\u00ecnh di chuy\u1ec3n t\u1eeb m\u00e1y tr\u1ea1m \u0111\u1ebfn m\u00e1y ch\u1ee7 v\u00e0 cu\u1ed1i c\u00f9ng \u0111\u1ebfn c\u00e1c n\u00fat. C\u00e1c m\u00e1y tr\u1ea1m kh\u00f4ng th\u1ec3 t\u01b0\u01a1ng t\u00e1c tr\u1ef1c ti\u1ebfp v\u1edbi c\u00e1c n\u00fat. C\u01a1 s\u1edf h\u1ea1 t\u1ea7ng Chef bao g\u1ed3m c\u00e1c th\u00e0nh ph\u1ea7n sau.<\/p>\n<ul>\n<li><strong>Chef Workstation<\/strong>&nbsp;: M\u1ed9t workstation l\u00e0 m\u1ed9t m\u00e1y ch\u1ee7 \u0111\u1ec3 t\u1ea1o v\u00e0 ki\u1ec3m tra m\u00e3 c\u1ea5u h\u00ecnh. Sau \u0111\u00f3, m\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ea9y \u0111\u1ebfn Chef Server. M\u1ed9t s\u1ed1 workstation c\u00f3 th\u1ec3 t\u01b0\u01a1ng t\u00e1c v\u1edbi c\u00f9ng m\u1ed9t m\u00e1y ch\u1ee7, nh\u01b0ng m\u1ed7i workstation ch\u1ec9 li\u00ean k\u1ebft \u0111\u1ebfn m\u1ed9t m\u00e1y ch\u1ee7.&nbsp;<a href=\"https:\/\/docs.chef.io\/workstation\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e0i li\u1ec7u Chef Workstation<\/a>&nbsp;c\u00f3 nhi\u1ec1u th\u00f4ng tin h\u01a1n v\u1ec1 c\u00e1ch s\u1eed d\u1ee5ng workstation.<\/li>\n<li><strong>Chef Server<\/strong>&nbsp;: Chef Server l\u00e0 \u201ctrung t\u00e2m ch\u1ec9 huy\u201d cho to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng. N\u00f3 l\u01b0u tr\u1eef v\u00e0 duy tr\u00ec t\u1ea5t c\u1ea3 c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh, m\u00e3 v\u00e0 t\u1eadp l\u1ec7nh. Chef Server bao g\u1ed3m nhi\u1ec1u th\u00e0nh ph\u1ea7n, bao g\u1ed3m m\u00e1y ch\u1ee7 web v\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u PostgreSQL. N\u00f3 ch\u1ecbu tr\u00e1ch nhi\u1ec7m \u0111\u1ea9y c\u00e1c t\u00e0i s\u1ea3n c\u00f3 li\u00ean quan \u0111\u1ebfn c\u00e1c n\u00fat kh\u00e1c nhau v\u00e0 theo d\u00f5i c\u00e1c n\u00fat do n\u00f3 qu\u1ea3n l\u00fd. M\u1ed7i m\u00e1y ch\u1ee7 \u0111\u1ec1u c\u00f3 kh\u1ea3 n\u0103ng cao, hi\u1ec7u qu\u1ea3 v\u00e0 m\u1ea1nh m\u1ebd, v\u00e0 c\u00f3 kh\u1ea3 n\u0103ng qu\u1ea3n l\u00fd m\u1ed9t s\u1ed1 l\u01b0\u1ee3ng l\u1edbn c\u00e1c n\u00fat.<\/li>\n<li><strong>Chef Node<\/strong>&nbsp;: Chef Server tri\u1ec3n khai v\u00e0 qu\u1ea3n l\u00fd m\u1ed9t node b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c t\u00e0i s\u1ea3n \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n tr\u00ean Chef Workstation. M\u1ed7i node \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd b\u1edfi m\u1ed9t Chef Server duy nh\u1ea5t. M\u1eb7c d\u00f9 ph\u1ee5 thu\u1ed9c v\u00e0o server, Chef Node ch\u1ee9a m\u1ed9t Chef client. Client truy v\u1ea5n server \u0111\u1ec3 c\u1eadp nh\u1eadt v\u00e0 gi\u1eef cho node \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt.<\/li>\n<\/ul>\n<p>H\u00ecnh minh h\u1ecda sau \u0111\u00e2y ch\u1ec9 ra m\u1ed1i quan h\u1ec7 gi\u1eefa ba ph\u1ea7n c\u1ee7a h\u1ec7 th\u1ed1ng Chef.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/Chef-Components_hu1ad44188a857b8e578882f02c70433b2_272220_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"Linh ki\u1ec7n \u0111\u1ea7u b\u1ebfp\" title=\"Linh ki\u1ec7n \u0111\u1ea7u b\u1ebfp\"\/><\/figure>\n<p>C\u00e1c m\u00e1y tr\u1ea1m s\u1eed d\u1ee5ng l\u1ec7nh Chef, ch\u1eb3ng h\u1ea1n nh\u01b0 ch\u1ec9&nbsp;<code>knife<\/code>th\u1ecb, \u0111\u1ec3 t\u01b0\u01a1ng t\u00e1c v\u1edbi m\u00e1y ch\u1ee7. Chef k\u1ebft h\u1ee3p b\u1ea3o m\u1eadt v\u00e0 x\u00e1c th\u1ef1c b\u1ed5 sung v\u00e0o t\u1ea5t c\u1ea3 c\u00e1c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a m\u00ecnh, s\u1eed d\u1ee5ng m\u00e3 h\u00f3a kh\u00f3a c\u00f4ng khai. Tuy nhi\u00ean, h\u1ec7 th\u1ed1ng Chef ph\u1ee9c t\u1ea1p v\u00e0 c\u00f3 \u0111\u01b0\u1eddng cong h\u1ecdc t\u1eadp cao.<\/p>\n<p>\u0110\u1ea7u b\u1ebfp s\u1eed d\u1ee5ng thu\u1eadt ng\u1eef \u0111\u1eb7c bi\u1ec7t d\u1ef1a tr\u00ean t\u1eeb v\u1ef1ng n\u1ea5u \u0103n. M\u1ed9t s\u1ed1 thu\u1eadt ng\u1eef quan tr\u1ecdng h\u01a1n bao g\u1ed3m:<\/p>\n<ul>\n<li><strong>Thu\u1ed9c t\u00ednh<\/strong>&nbsp;: Ch\u1ec9 \u0111\u1ecbnh gi\u00e1 tr\u1ecb cho m\u1ed9t m\u1ee5c tr\u00ean m\u1ed9t n\u00fat.<\/li>\n<li><strong>Bookshelf<\/strong>&nbsp;: L\u01b0u tr\u1eef nhi\u1ec1u s\u00e1ch d\u1ea1y n\u1ea5u \u0103n v\u00e0 t\u00e0i s\u1ea3n kh\u00e1c nhau tr\u00ean Chef Server b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n.<\/li>\n<li><strong>Chef-client<\/strong>&nbsp;: Ch\u1ea1y tr\u00ean n\u00fat v\u00e0 ch\u1ecbu tr\u00e1ch nhi\u1ec7m x\u00e1c minh xem n\u00fat c\u00f3 c\u1eadp nh\u1eadt c\u00e1c t\u00e0i s\u1ea3n \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef tr\u00ean m\u00e1y ch\u1ee7 hay kh\u00f4ng.<\/li>\n<li><strong>Chef-repo<\/strong>&nbsp;: M\u1ed9t th\u01b0 m\u1ee5c tr\u00ean Chef Workstation ch\u1ee9a c\u00e1c s\u00e1ch h\u01b0\u1edbng d\u1eabn n\u1ea5u \u0103n c\u1ee5c b\u1ed9 v\u00e0 c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh.<\/li>\n<li><strong>Cookbook<\/strong>&nbsp;: Ph\u01b0\u01a1ng ph\u00e1p ch\u00ednh \u0111\u1ec3 qu\u1ea3n l\u00fd c\u00e1c n\u00fat. N\u00f3 ch\u1ee9a th\u00f4ng tin m\u00f4 t\u1ea3 tr\u1ea1ng th\u00e1i cu\u1ed1i c\u00f9ng c\u1ee7a m\u1ed9t n\u00fat. M\u00e1y ch\u1ee7 Chef v\u00e0 n\u00fat s\u1eed d\u1ee5ng cookbook \u0111\u1ec3 h\u01b0\u1edbng d\u1eabn c\u1ea5u h\u00ecnh. Cookbook ch\u1ee9a&nbsp;<em>c\u00e1c c\u00f4ng th\u1ee9c<\/em>&nbsp;, c\u00f9ng v\u1edbi c\u00e1c thu\u1ed9c t\u00ednh, th\u01b0 vi\u1ec7n, m\u1eabu v\u00e0 t\u1eadp l\u1ec7nh. C\u00e1c cookbook n\u00e0y c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n tr\u00ean m\u00e1y tr\u1ea1m ho\u1eb7c t\u1ea3i xu\u1ed1ng t\u1eeb&nbsp;<a href=\"https:\/\/supermarket.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Chef Supermarket<\/a>&nbsp;.<\/li>\n<li><strong>M\u00f4i tr\u01b0\u1eddng<\/strong>&nbsp;: Thu th\u1eadp c\u00e1c n\u00fat th\u00e0nh c\u00e1c nh\u00f3m \u0111\u1ec3 t\u1ed5 ch\u1ee9c ch\u00fang t\u1ed1t h\u01a1n. C\u00e1c c\u1ea5u h\u00ecnh v\u00e0 t\u1eadp l\u1ec7nh t\u01b0\u01a1ng t\u1ef1 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng cho to\u00e0n b\u1ed9 nh\u00f3m.<\/li>\n<li><strong>Knife<\/strong>&nbsp;: M\u1ed9t Chef Workstation s\u1eed d\u1ee5ng&nbsp;<code>knife<\/code>c\u00f4ng c\u1ee5 \u0111\u1ec3 t\u01b0\u01a1ng \u1ee9ng v\u1edbi Chef Server. M\u1ed9t&nbsp;<code>knife<\/code>l\u1ec7nh th\u01b0\u1eddng c\u00f3 \u0111\u1ecbnh d\u1ea1ng&nbsp;<code>knife subcommand [ARGUMENT] (options)<\/code>.<\/li>\n<li><strong>Recipe<\/strong>&nbsp;: M\u1ed9t recipe \u0111\u01b0\u1ee3c ch\u1ee9a trong m\u1ed9t cookbook. N\u00f3 gi\u1ea3i th\u00edch c\u00e1c t\u00e0i nguy\u00ean \u0111\u1ec3 th\u00eam, thay \u0111\u1ed5i ho\u1eb7c ch\u1ea1y tr\u00ean node. Recipe \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng Ruby.<\/li>\n<li><strong>T\u00e0i nguy\u00ean<\/strong>&nbsp;: T\u00e0i nguy\u00ean l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a c\u00f4ng th\u1ee9c. N\u00f3 ch\u1ee9a lo\u1ea1i, t\u00ean v\u00e0 danh s\u00e1ch c\u00e1c c\u1eb7p kh\u00f3a-gi\u00e1 tr\u1ecb cho m\u1ed9t th\u00e0nh ph\u1ea7n.<\/li>\n<li><strong>B\u1ebfp th\u1eed nghi\u1ec7m<\/strong>&nbsp;: \u0110\u00e2y l\u00e0 m\u00f4-\u0111un m\u00e1y tr\u1ea1m gi\u00fap ng\u01b0\u1eddi d\u00f9ng th\u1eed nghi\u1ec7m c\u00f4ng th\u1ee9c n\u1ea5u \u0103n tr\u01b0\u1edbc khi tri\u1ec3n khai.<\/li>\n<\/ul>\n<p>Linode c\u00f3&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/beginners-guide-chef\/\">H\u01b0\u1edbng d\u1eabn h\u1eefu \u00edch cho ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u v\u1ec1 Chef<\/a>&nbsp;. \u0110\u1ec3 bi\u1ebft th\u00f4ng tin chi ti\u1ebft v\u1ec1 Chef, h\u00e3y xem&nbsp;<a href=\"https:\/\/docs.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">t\u00e0i li\u1ec7u Chef<\/a>&nbsp;. Chef c\u0169ng cung c\u1ea5p t\u00e0i nguy\u00ean \u0111\u00e0o t\u1ea1o&nbsp;<a href=\"https:\/\/learn.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Learn Chef<\/a>&nbsp;.<\/p>\n<h2 id=\"before-you-begin\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#before-you-begin\"><\/a><\/h2>\n<ol>\n<li>N\u1ebfu b\u1ea1n ch\u01b0a th\u1ef1c hi\u1ec7n, h\u00e3y t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n Linode v\u00e0 Compute Instance. Xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/platform\/get-started\/\">B\u1eaft \u0111\u1ea7u v\u1edbi Linode<\/a>&nbsp;v\u00e0&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/create\/\">T\u1ea1o Compute Instance<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/li>\n<li>L\u00e0m 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 Phi\u00ean b\u1ea3n Compute<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i \u0111\u1ec3 c\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 mu\u1ed1n \u0111\u1eb7t m\u00fai gi\u1edd, c\u1ea5u h\u00ecnh t\u00ean m\u00e1y ch\u1ee7, t\u1ea1o t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng gi\u1edbi h\u1ea1n v\u00e0 t\u0103ng c\u01b0\u1eddng quy\u1ec1n truy c\u1eadp SSH.<\/li>\n<li>C\u1ea7n c\u00f3 \u00edt nh\u1ea5t ba h\u1ec7 th\u1ed1ng Linode ch\u1ea1y Ubuntu 20.04 \u0111\u1ec3 tri\u1ec3n khai h\u1ec7 th\u1ed1ng Chef. M\u1ed9t m\u00e1y ch\u1ee7 d\u00e0nh cho Chef Workstation, m\u00e1y ch\u1ee7 th\u1ee9 hai d\u00e0nh cho Chef Server, trong khi m\u00e1y ch\u1ee7 th\u1ee9 ba \u0111\u1ea1i di\u1ec7n cho m\u1ed9t n\u00fat \u0111ang \u0111\u01b0\u1ee3c qu\u1ea3n tr\u1ecb. Do nhu c\u1ea7u b\u1ed9 nh\u1edb c\u1ee7a Chef, Chef Server y\u00eau c\u1ea7u Linode 8GB. Hai m\u00e1y ch\u1ee7 c\u00f2n l\u1ea1i c\u00f3 th\u1ec3 l\u00e0 Linode 2GB. C\u1ea3 Chef Server v\u00e0 Chef Workstation \u0111\u1ec1u ph\u1ea3i \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh b\u1eb1ng c\u00e1c h\u01b0\u1edbng d\u1eabn tr\u01b0\u1edbc \u0111\u00f3. Chef \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 thi\u1ebft l\u1eadp n\u00fat m\u1ee5c ti\u00eau.<\/li>\n<li>\u0110\u1ea3m b\u1ea3o t\u1ea5t c\u1ea3 m\u00e1y ch\u1ee7 Linode \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt b\u1eb1ng l\u1ec7nh sau.<code>sudo apt update <strong>&amp;&amp;<\/strong> sudo apt upgrade<\/code><\/li>\n<li>G\u00e1n t\u00ean mi\u1ec1n cho Chef Server. \u0110\u1ec3 bi\u1ebft th\u00f4ng tin v\u1ec1 t\u00ean mi\u1ec1n v\u00e0 tr\u1ecf t\u00ean mi\u1ec1n \u0111\u1ebfn Linode, h\u00e3y xem&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/networking\/dns-manager\/\">h\u01b0\u1edbng d\u1eabn Linode DNS Manager<\/a>&nbsp;.<\/li>\n<li>C\u1ea5u h\u00ecnh t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a Chef Server sao cho kh\u1edbp v\u1edbi t\u00ean mi\u1ec1n. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p ph\u00e2n b\u1ed5 ch\u1ee9ng ch\u1ec9 SSL di\u1ec5n ra b\u00ecnh th\u01b0\u1eddng. \u0110\u1ec3 \u0111\u1eb7t t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a m\u00e1y ch\u1ee7 Ubuntu, h\u00e3y s\u1eed d\u1ee5ng l\u1ec7nh&nbsp;<code>sudo hostnamectl set-hostname &lt;hostname&gt;<\/code>, thay th\u1ebf&nbsp;<code>&lt;hostname&gt;<\/code>b\u1eb1ng t\u00ean mi\u1ec1n th\u1ef1c t\u1ebf c\u1ee7a b\u1ea1n.<\/li>\n<\/ol>\n<p>Ghi ch\u00fa: H\u01b0\u1edbng d\u1eabn n\u00e0y \u0111\u01b0\u1ee3c vi\u1ebft cho ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng ph\u1ea3i root. C\u00e1c l\u1ec7nh y\u00eau c\u1ea7u quy\u1ec1n n\u00e2ng cao \u0111\u01b0\u1ee3c th\u00eam ti\u1ec1n t\u1ed1&nbsp;<code>sudo<\/code>. N\u1ebfu b\u1ea1n kh\u00f4ng quen v\u1edbi&nbsp;<code>sudo<\/code> l\u1ec7nh, h\u00e3y xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/linux-users-and-groups\/\">Ng\u01b0\u1eddi d\u00f9ng v\u00e0 Nh\u00f3m<\/a>&nbsp;.<\/p>\n<h2 id=\"how-to-install-and-configure-the-chef-server\">C\u00e1ch c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh Chef Server<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-install-and-configure-the-chef-server\"><\/a><\/h2>\n<p>V\u00ec Chef Server ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t trung t\u00e2m cho to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng, t\u1ed1t nh\u1ea5t l\u00e0 c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh n\u00f3 tr\u01b0\u1edbc. Chef Server s\u1eed d\u1ee5ng nhi\u1ec1u t\u00e0i nguy\u00ean, v\u00ec v\u1eady \u0111i\u1ec1u quan tr\u1ecdng l\u00e0 ph\u1ea3i s\u1eed d\u1ee5ng Linode chuy\u00ean d\u1ee5ng c\u00f3 \u00edt nh\u1ea5t 8GB b\u1ed9 nh\u1edb.<\/p>\n<h3 id=\"how-to-install-the-chef-server\">C\u00e1ch c\u00e0i \u0111\u1eb7t m\u00e1y ch\u1ee7 Chef<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-install-the-chef-server\"><\/a><\/h3>\n<p>C\u00f3 th\u1ec3 t\u1ea3i xu\u1ed1ng Chef Server Core b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>wget<\/code>. C\u00e1c b\u01b0\u1edbc sau \u0111\u00e2y s\u1ebd h\u01b0\u1edbng d\u1eabn c\u00e1ch t\u1ea3i xu\u1ed1ng b\u1ea3n ph\u00e1t h\u00e0nh m\u1edbi nh\u1ea5t c\u1ee7a Chef cho b\u1ea3n ph\u00e1t h\u00e0nh Ubuntu 20.04. \u0110\u1ed1i v\u1edbi c\u00e1c b\u1ea3n ph\u00e1t h\u00e0nh kh\u00e1c c\u1ee7a Ubuntu, h\u00e3y xem&nbsp;<a href=\"https:\/\/www.chef.io\/downloads\/tools\/infra-server?os=ubuntu\" target=\"_blank\" rel=\"noreferrer noopener\">trang t\u1ea3i xu\u1ed1ng Chef<\/a>&nbsp;. \u0110\u1ec3 bi\u1ebft h\u01b0\u1edbng d\u1eabn chi ti\u1ebft h\u01a1n, h\u00e3y xem&nbsp;<a href=\"https:\/\/docs.chef.io\/server\/install_server\/\" target=\"_blank\" rel=\"noreferrer noopener\">trang c\u00e0i \u0111\u1eb7t Chef Server<\/a>&nbsp;. \u0110\u1ec3 c\u00e0i \u0111\u1eb7t Chef Server, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau.<\/p>\n<p>1.T\u1ea3i xu\u1ed1ng l\u00f5i Chef Server b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>wget<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>wget https:\/\/packages.chef.io\/files\/stable\/chef-server\/15.1.7\/ubuntu\/20.04\/chef-server-core_15.1.7-1_amd64.deb<\/code><\/pre>\n<p>2.C\u00e0i \u0111\u1eb7t l\u00f5i m\u00e1y ch\u1ee7.<\/p>\n<pre class=\"wp-block-code\"><code>sudo dpkg -i chef-server-core_*.deb<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Selecting previously unselected package chef-server-core.\n(Reading database ... 108635 files and directories currently installed.)\nPreparing to unpack chef-server-core_15.1.7-1_amd64.deb ...\nUnpacking chef-server-core (15.1.7-1) ...\nSetting up chef-server-core (15.1.7-1) ...\nThank you for installing Chef Infra Server!<\/code><\/pre>\n<p>3.\u0110\u1ec3 b\u1ea3o m\u1eadt t\u1ed1t h\u01a1n v\u00e0 ti\u1ebft ki\u1ec7m dung l\u01b0\u1ee3ng m\u00e1y ch\u1ee7, h\u00e3y x\u00f3a&nbsp;<code>.deb<\/code>t\u1ec7p \u0111\u00e3 t\u1ea3i xu\u1ed1ng.<\/p>\n<pre class=\"wp-block-code\"><code>rm chef-server-core_*.deb<\/code><\/pre>\n<p>4.Kh\u1edfi \u0111\u1ed9ng m\u00e1y ch\u1ee7 Chef. Tr\u1ea3 l\u1eddi&nbsp;<code>yes<\/code>khi \u0111\u01b0\u1ee3c nh\u1eafc ch\u1ea5p nh\u1eadn gi\u1ea5y ph\u00e9p s\u1ea3n ph\u1ea9m.<\/p>\n<pre class=\"wp-block-code\"><code>sudo chef-server-ctl reconfigure<\/code><\/pre>\n<h3 id=\"how-to-configure-a-chef-user-and-organization\">C\u00e1ch c\u1ea5u h\u00ecnh ng\u01b0\u1eddi d\u00f9ng v\u00e0 t\u1ed5 ch\u1ee9c Chef<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-configure-a-chef-user-and-organization\"><\/a><\/h3>\n<p>\u0110\u1ec3 s\u1eed d\u1ee5ng Chef, h\u00e3y c\u1ea5u h\u00ecnh m\u1ed9t t\u1ed5 ch\u1ee9c v\u00e0 \u00edt nh\u1ea5t m\u1ed9t ng\u01b0\u1eddi d\u00f9ng tr\u00ean Chef Server. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p truy c\u1eadp m\u00e1y ch\u1ee7 cho c\u00e1c m\u00e1y tr\u1ea1m v\u00e0 n\u00fat. \u0110\u1ec3 t\u1ea1o c\u00e1c t\u00e0i kho\u1ea3n n\u00e0y, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau.<\/p>\n<p>1.T\u1ea1o m\u1ed9t&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c \u0111\u1ec3 l\u01b0u tr\u1eef kh\u00f3a. \u0110\u00e2y ph\u1ea3i l\u00e0 m\u1ed9t th\u01b0 m\u1ee5c con n\u1eb1m b\u00ean trong th\u01b0 m\u1ee5c g\u1ed1c.<\/p>\n<pre class=\"wp-block-code\"><code><code>mkdir .chef<\/code><\/code><\/pre>\n<p>2.S\u1eed d\u1ee5ng&nbsp;<code>chef-server-ctl<\/code>l\u1ec7nh \u0111\u1ec3 t\u1ea1o t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng cho qu\u1ea3n tr\u1ecb vi\u00ean Chef. C\u00f3 th\u1ec3 t\u1ea1o th\u00eam t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng sau. Thay th\u1ebf c\u00e1c tr\u01b0\u1eddng&nbsp;<code>USER_NAME<\/code>,&nbsp;<code>FIRST_NAME<\/code>,&nbsp;<code>LAST_NAME<\/code>,&nbsp;<code>EMAIL<\/code>, v\u00e0&nbsp;<code>PASSWORD<\/code>b\u1eb1ng th\u00f4ng tin c\u00f3 li\u00ean quan. \u0110\u1ed1i v\u1edbi&nbsp;<code>--filename<\/code>\u0111\u1ed1i s\u1ed1, h\u00e3y thay th\u1ebf&nbsp;<code>USER_NAME.pem<\/code>b\u1eb1ng t\u00ean ng\u01b0\u1eddi d\u00f9ng \u0111\u00e3 s\u1eed d\u1ee5ng tr\u01b0\u1edbc \u0111\u00f3 trong l\u1ec7nh.<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename ~\/.chef\/USER_NAME.pem<\/code><\/code><\/pre>\n<p>3.Xem l\u1ea1i danh s\u00e1ch ng\u01b0\u1eddi d\u00f9ng v\u00e0 x\u00e1c nh\u1eadn t\u00e0i kho\u1ea3n hi\u1ec7n \u0111\u00e3 t\u1ed3n t\u1ea1i.<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo chef-server-ctl user-list<\/code><\/code><\/pre>\n<pre class=\"wp-block-code\"><code><code>USER_NAME<\/code><\/code><\/pre>\n<p>4.T\u1ea1o m\u1ed9t t\u1ed5 ch\u1ee9c m\u1edbi, c\u0169ng s\u1eed d\u1ee5ng&nbsp;<code>chef-server-ctl<\/code>l\u1ec7nh. Thay th\u1ebf&nbsp;<code>ORG_NAME<\/code>v\u00e0&nbsp;<code>ORG_FULL_NAME<\/code>b\u1eb1ng t\u00ean th\u1ef1c t\u1ebf c\u1ee7a t\u1ed5 ch\u1ee9c.&nbsp;<code>ORG_NAME<\/code>Tr\u01b0\u1eddng ph\u1ea3i to\u00e0n b\u1ed9 l\u00e0 ch\u1eef th\u01b0\u1eddng. Gi\u00e1 tr\u1ecb for&nbsp;<code>USER_NAME<\/code>ph\u1ea3i l\u00e0 c\u00f9ng t\u00ean \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong&nbsp;<code>user-create<\/code>l\u1ec7nh. \u0110\u1ed1i v\u1edbi&nbsp;<code>--filename<\/code>\u0111\u1ed1i s\u1ed1, trong&nbsp;<code>ORG_NAME.pem<\/code>, h\u00e3y thay th\u1ebf&nbsp;<code>ORG_NAME<\/code>b\u1eb1ng t\u00ean t\u1ed5 ch\u1ee9c \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u1edf n\u01a1i kh\u00e1c trong l\u1ec7nh.<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo chef-server-ctl org-create ORG_NAME \"ORG_FULL_NAME\" --association_user USER_NAME --filename ~\/.chef\/ORG_NAME.pem<\/code><\/code><\/pre>\n<p>5.Li\u1ec7t k\u00ea c\u00e1c t\u1ed5 ch\u1ee9c \u0111\u1ec3 x\u00e1c nh\u1eadn t\u1ed5 ch\u1ee9c m\u1edbi \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o th\u00e0nh c\u00f4ng.<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo chef-server-ctl org-list<\/code><\/code><\/pre>\n<pre class=\"wp-block-code\"><code><code>ORG_NAME<\/code><\/code><\/pre>\n<h2 id=\"how-to-install-and-configure-a-chef-workstation\">C\u00e1ch c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh Chef Workstation<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-install-and-configure-a-chef-workstation\"><\/a><\/h2>\n<p>Chef Workstation d\u00e0nh cho ng\u01b0\u1eddi d\u00f9ng t\u1ea1o v\u00e0 th\u1eed nghi\u1ec7m c\u00f4ng th\u1ee9c n\u1ea5u \u0103n. B\u1ea5t k\u1ef3 Linode n\u00e0o c\u00f3 \u00edt nh\u1ea5t 2GB b\u1ed9 nh\u1edb \u0111\u1ec1u c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho t\u00e1c v\u1ee5 n\u00e0y. Kh\u00f4ng gi\u1ed1ng nh\u01b0 Chef Server, m\u1ed9t m\u00e1y tr\u1ea1m c\u0169ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho c\u00e1c t\u00e1c v\u1ee5 kh\u00e1c. Tuy nhi\u00ean, trong m\u1ed9t t\u1ed5 ch\u1ee9c l\u1edbn h\u01a1n l\u01b0u tr\u1eef nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng, th\u01b0\u1eddng hi\u1ec7u qu\u1ea3 h\u01a1n khi t\u1eadp trung c\u00e1c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a m\u00e1y tr\u1ea1m tr\u00ean m\u1ed9t m\u00e1y ch\u1ee7 l\u01b0u tr\u1eef nhi\u1ec1u t\u00e0i kho\u1ea3n.<\/p>\n<h3 id=\"how-to-install-a-chef-workstation\">C\u00e1ch c\u00e0i \u0111\u1eb7t Chef Workstation<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-install-a-chef-workstation\"><\/a><\/h3>\n<p>C\u00e1c b\u01b0\u1edbc c\u00e0i \u0111\u1eb7t Chef Workstation t\u01b0\u01a1ng t\u1ef1 nh\u01b0 c\u00e1c b\u01b0\u1edbc c\u00e0i \u0111\u1eb7t Server. T\u1ea3i xu\u1ed1ng t\u1ec7p ch\u00ednh x\u00e1c b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>wget<\/code>, sau \u0111\u00f3 c\u00e0i \u0111\u1eb7t. \u0110\u1ec3 c\u00e0i \u0111\u1eb7t Chef Workstation, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau.<\/p>\n<p>1.T\u1ea3i xu\u1ed1ng c\u00e1c t\u1ec7p ngu\u1ed3n cho Chef Workstation. \u0110\u1ed1i v\u1edbi c\u00e1c b\u1ea3n ph\u00e1t h\u00e0nh kh\u00e1c nhau c\u1ee7a Workstation ho\u1eb7c t\u1ea3i xu\u1ed1ng c\u00e1c b\u1ea3n ph\u00e1t h\u00e0nh tr\u01b0\u1edbc \u0111\u00f3, h\u00e3y xem&nbsp;<a href=\"https:\/\/www.chef.io\/downloads\/tools\/workstation?os=ubuntu\" target=\"_blank\" rel=\"noreferrer noopener\">trang T\u1ea3i xu\u1ed1ng Chef Workstation<\/a>&nbsp;. \u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 quy tr\u00ecnh c\u00e0i \u0111\u1eb7t, h\u00e3y xem&nbsp;<a href=\"https:\/\/docs.chef.io\/workstation\/install_workstation\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e0i li\u1ec7u c\u00e0i \u0111\u1eb7t Chef Workstation<\/a>&nbsp;.<\/p>\n<pre class=\"wp-block-code\"><code>wget https:\/\/packages.chef.io\/files\/stable\/chef-workstation\/22.10.1013\/ubuntu\/20.04\/chef-workstation_22.10.1013-1_amd64.deb<\/code><\/pre>\n<p>2.C\u00e0i \u0111\u1eb7t Chef Workstation.<\/p>\n<pre class=\"wp-block-code\"><code>sudo dpkg -i chef-workstation_*.deb<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Thank you for installing Chef Workstation!<\/code><\/pre>\n<p>3.X\u00f3a t\u1ec7p ngu\u1ed3n.<\/p>\n<pre class=\"wp-block-code\"><code>rm chef-workstation_*.deb<\/code><\/pre>\n<p>4.X\u00e1c nh\u1eadn phi\u00ean b\u1ea3n ch\u00ednh x\u00e1c c\u1ee7a Chef Workstation \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t.<\/p>\n<pre class=\"wp-block-code\"><code>chef -v<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Chef Workstation version: 22.10.1013\nChef Infra Client version: 17.10.0\nChef InSpec version: 4.56.20\nChef CLI version: 5.6.1\nChef Habitat version: 1.6.521\nTest Kitchen version: 3.3.2\nCookstyle version: 7.32.1<\/code><\/pre>\n<h3 id=\"how-to-configure-a-chef-workstation\">C\u00e1ch c\u1ea5u h\u00ecnh tr\u1ea1m l\u00e0m vi\u1ec7c Chef<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-configure-a-chef-workstation\"><\/a><\/h3>\n<p>M\u1ed9t s\u1ed1 m\u1ee5c kh\u00e1c ph\u1ea3i \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh tr\u01b0\u1edbc khi M\u00e1y tr\u1ea1m ho\u1ea1t \u0111\u1ed9ng. C\u00e1c t\u00e1c v\u1ee5 bao g\u1ed3m t\u1ea1o kho l\u01b0u tr\u1eef, ch\u1ec9nh s\u1eeda t\u1ec7p&nbsp;<code>hosts<\/code>v\u00e0 t\u1ea1o th\u01b0 m\u1ee5c con. \u0110\u1ec3 c\u1ea5u h\u00ecnh \u0111\u1ea7y \u0111\u1ee7 m\u00e1y tr\u1ea1m, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau.<\/p>\n<p>1.T\u1ea1o&nbsp;<code>chef-repo<\/code>kho l\u01b0u tr\u1eef. Th\u01b0 m\u1ee5c n\u00e0y l\u01b0u tr\u1eef c\u00e1c s\u00e1ch d\u1ea1y n\u1ea5u \u0103n v\u00e0 c\u00f4ng th\u1ee9c n\u1ea5u \u0103n c\u1ee7a Chef. Nh\u1eadp&nbsp;<code>yes<\/code>khi \u0111\u01b0\u1ee3c h\u1ecfi c\u00f3 ch\u1ea5p nh\u1eadn gi\u1ea5y ph\u00e9p s\u1ea3n ph\u1ea9m hay kh\u00f4ng.<\/p>\n<pre class=\"wp-block-code\"><code><code>chef generate repo chef-repo<\/code><\/code><\/pre>\n<pre class=\"wp-block-code\"><code><code>Your new Chef Infra repo is ready! Type `cd chef-repo` to enter it.<\/code><\/code><\/pre>\n<p>2.Ch\u1ec9nh s\u1eeda&nbsp;<code>\/etc\/hosts<\/code>t\u1ec7p. T\u1ec7p n\u00e0y ch\u1ee9a c\u00e1c \u00e1nh x\u1ea1 gi\u1eefa t\u00ean m\u00e1y ch\u1ee7 v\u00e0 \u0111\u1ecba ch\u1ec9 IP c\u1ee7a ch\u00fang. Th\u00eam m\u1ed9t m\u1ee5c nh\u1eadp cho Chef Server, ch\u1ee9a t\u00ean m\u00e1y ch\u1ee7, c\u0169ng l\u00e0 t\u00ean mi\u1ec1n v\u00e0 \u0111\u1ecba ch\u1ec9 IP c\u1ee7a m\u00e1y ch\u1ee7. Trong v\u00ed d\u1ee5 n\u00e0y, \u0111i\u1ec1u n\u00e0y \u0111\u01b0\u1ee3c ch\u1ec9 ra trong d\u00f2ng&nbsp;<code>192.0.1.0 example.com<\/code>. C\u0169ng ph\u1ea3i c\u00f3 m\u1ed9t m\u1ee5c nh\u1eadp cho m\u00e1y ch\u1ee7 c\u1ee5c b\u1ed9. \u0110\u00e2y l\u00e0 d\u00f2ng&nbsp;<code>192.0.2.0 chefworkstation<\/code>trong v\u00ed d\u1ee5. M\u1ee5c nh\u1eadp n\u00e0y ph\u1ea3i ch\u1ee9a \u0111\u1ecba ch\u1ec9 IP c\u1ee5c b\u1ed9 v\u00e0 t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a m\u00e1y ch\u1ee7 l\u01b0u tr\u1eef Chef Workstation. T\u1ec7p ph\u1ea3i gi\u1ed1ng v\u1edbi v\u00ed d\u1ee5 sau.<\/p>\n<pre class=\"wp-block-code\"><code>127.0.0.1 localhost\n192.0.1.0 example.com\n192.0.2.0 chefworkstation<\/code><\/pre>\n<p>3.T\u1ea1o m\u1ed9t&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c con. \u0110\u00e2y l\u00e0 n\u01a1i&nbsp;<code>knife<\/code>l\u01b0u tr\u1eef t\u1ec7p, c\u00f9ng v\u1edbi c\u00e1c t\u1ec7p \u0111\u1ec3 m\u00e3 h\u00f3a v\u00e0 b\u1ea3o m\u1eadt.<\/p>\n<pre class=\"wp-block-code\"><code>mkdir ~\/chef-repo\/.chef\ncd chef-repo<\/code><\/pre>\n<h3 id=\"how-to-add-rsa-private-keys\">C\u00e1ch Th\u00eam Kh\u00f3a Ri\u00eang RSA<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-add-rsa-private-keys\"><\/a><\/h3>\n<p>Kh\u00f3a ri\u00eang RSA cho ph\u00e9p b\u1ea3o m\u1eadt t\u1ed1t h\u01a1n gi\u1eefa Chef Server v\u00e0 c\u00e1c m\u00e1y tr\u1ea1m li\u00ean quan th\u00f4ng qua vi\u1ec7c s\u1eed d\u1ee5ng m\u00e3 h\u00f3a. Tr\u01b0\u1edbc \u0111\u00f3, kh\u00f3a ri\u00eang RSA \u0111\u01b0\u1ee3c t\u1ea1o tr\u00ean Chef Server. Sao ch\u00e9p c\u00e1c kh\u00f3a n\u00e0y v\u00e0o m\u00e1y tr\u1ea1m cho ph\u00e9p m\u00e1y tr\u1ea1m giao ti\u1ebfp v\u1edbi m\u00e1y ch\u1ee7. \u0110\u1ec3 b\u1eadt m\u00e3 h\u00f3a b\u1eb1ng kh\u00f3a ri\u00eang RSA, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau.<\/p>\n<p>Ghi ch\u00fa: X\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u SSH ph\u1ea3i \u0111\u01b0\u1ee3c b\u1eadt tr\u00ean Chef Server \u0111\u1ec3 ho\u00e0n t\u1ea5t trao \u0111\u1ed5i kh\u00f3a. N\u1ebfu x\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u SSH \u0111\u00e3 b\u1ecb t\u1eaft \u0111\u1ec3 b\u1ea3o m\u1eadt t\u1ed1t h\u01a1n, h\u00e3y b\u1eadt l\u1ea1i tr\u01b0\u1edbc khi ti\u1ebfp t\u1ee5c. Sau khi c\u00e1c kh\u00f3a \u0111\u00e3 \u0111\u01b0\u1ee3c l\u1ea5y v\u00e0 th\u00eam v\u00e0o m\u00e1y tr\u1ea1m, x\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u SSH c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u1eaft l\u1ea1i. Xem h\u01b0\u1edbng d\u1eabn c\u1ee7a Linode v\u1ec1&nbsp;<\/p>\n<p><a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/set-up-and-secure\/#ssh-daemon-options\">C\u00e1ch b\u1ea3o m\u1eadt m\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n<\/a>&nbsp;\u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin.<\/p>\n<p>1.Tr\u00ean m\u00e1y tr\u1ea1m, t\u1ea1o c\u1eb7p kh\u00f3a RSA. Kh\u00f3a n\u00e0y c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 truy c\u1eadp ban \u0111\u1ea7u v\u00e0o m\u00e1y ch\u1ee7 Chef \u0111\u1ec3 sao ch\u00e9p c\u00e1c t\u1ec7p m\u00e3 h\u00f3a ri\u00eang t\u01b0.<\/p>\n<pre class=\"wp-block-code\"><code>ssh-keygen -b 4096<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Generating public\/private rsa key pair.\nEnter file in which to save the key (\/home\/username\/.ssh\/id_rsa):<\/code><\/pre>\n<p>2.Nh\u1ea5n ph\u00edm&nbsp;<strong>Enter<\/strong>&nbsp;\u0111\u1ec3 ch\u1ea5p nh\u1eadn t\u00ean t\u1ec7p m\u1eb7c \u0111\u1ecbnh&nbsp;<code>id_rsa<\/code>v\u00e0&nbsp;<code>id_rsa.pub<\/code>. Ubuntu l\u01b0u tr\u1eef c\u00e1c t\u1ec7p n\u00e0y trong&nbsp;<code>\/home\/username\/.ssh<\/code>th\u01b0 m\u1ee5c.<\/p>\n<pre class=\"wp-block-code\"><code>Created directory '\/home\/username\/.ssh'.\nEnter passphrase (empty for no passphrase):<\/code><\/pre>\n<p>3.Nh\u1eadp m\u1eadt kh\u1ea9u khi \u0111\u01b0\u1ee3c nh\u1eafc, sau \u0111\u00f3 nh\u1eadp l\u1ea1i. M\u00e3 \u0111\u1ecbnh danh v\u00e0 kh\u00f3a c\u00f4ng khai \u0111\u01b0\u1ee3c l\u01b0u v\u00e0o th\u01b0 m\u1ee5c.<\/p>\n<pre class=\"wp-block-code\"><code>Your identification has been saved in \/home\/username\/.ssh\/id_rsa\nYour public key has been saved in \/home\/username\/.ssh\/id_rsa.pub<\/code><\/pre>\n<p>4.Sao ch\u00e9p kh\u00f3a c\u00f4ng khai m\u1edbi t\u1eeb m\u00e1y tr\u1ea1m \u0111\u1ebfn Chef Server. Trong l\u1ec7nh sau, s\u1eed d\u1ee5ng t\u00ean t\u00e0i kho\u1ea3n cho Chef Server c\u00f9ng v\u1edbi \u0111\u1ecba ch\u1ec9 IP c\u1ee7a n\u00f3.<\/p>\n<pre class=\"wp-block-code\"><code>ssh-copy-id username@192.0.1.0<\/code><\/pre>\n<p>5.S\u1eed d\u1ee5ng&nbsp;<code>scp<\/code>l\u1ec7nh \u0111\u1ec3 sao ch\u00e9p&nbsp;<code>.pem<\/code>c\u00e1c t\u1ec7p t\u1eeb Chef Server v\u00e0o m\u00e1y tr\u1ea1m. Trong v\u00ed d\u1ee5 sau, thay th\u1ebf&nbsp;<code>username<\/code>b\u1eb1ng t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng cho Chef Server v\u00e0&nbsp;<code>192.0.1.0<\/code>b\u1eb1ng \u0111\u1ecba ch\u1ec9 IP th\u1ef1c t\u1ebf c\u1ee7a Chef Server.<\/p>\n<pre class=\"wp-block-code\"><code>scp username@192.0.1.0:~\/.chef\/*.pem ~\/chef-repo\/.chef\/<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Enter passphrase for key '\/home\/username\/.ssh\/id_rsa':\nusername.pem                                                                       100% 1674     1.7MB\/s   00:00\ntestcompany.pem                                                                 100% 1678     4.7MB\/s   00:00    <\/code><\/pre>\n<p>6.Li\u1ec7t k\u00ea n\u1ed9i dung c\u1ee7a&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c con \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o&nbsp;<code>.pem<\/code>c\u00e1c t\u1eadp tin \u0111\u00e3 \u0111\u01b0\u1ee3c sao ch\u00e9p th\u00e0nh c\u00f4ng.<\/p>\n<pre class=\"wp-block-code\"><code>ls ~\/chef-repo\/.chef<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>username.pem  testcompany.pem\n<\/code><\/pre>\n<h3 id=\"how-to-configure-git-on-a-chef-workstation\">C\u00e1ch c\u1ea5u h\u00ecnh Git tr\u00ean m\u00e1y tr\u1ea1m Chef<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-configure-git-on-a-chef-workstation\"><\/a><\/h3>\n<p>H\u1ec7&nbsp;<em>th\u1ed1ng ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n<\/em>&nbsp;gi\u00fap Chef Workstation theo d\u00f5i m\u1ecdi thay \u0111\u1ed5i \u0111\u1ed1i v\u1edbi cookbook v\u00e0 kh\u00f4i ph\u1ee5c c\u00e1c phi\u00ean b\u1ea3n tr\u01b0\u1edbc \u0111\u00f3 n\u1ebfu c\u1ea7n. V\u00ed d\u1ee5 n\u00e0y s\u1eed d\u1ee5ng Git, t\u01b0\u01a1ng th\u00edch v\u1edbi h\u1ec7 th\u1ed1ng Chef. C\u00e1c b\u01b0\u1edbc sau \u0111\u00e2y gi\u1ea3i th\u00edch c\u00e1ch c\u1ea5u h\u00ecnh Git, kh\u1edfi t\u1ea1o kho l\u01b0u tr\u1eef Git, th\u00eam t\u1ec7p m\u1edbi v\u00e0 cam k\u1ebft ch\u00fang.<\/p>\n<p>1.C\u1ea5u h\u00ecnh Git b\u1eb1ng&nbsp;<code>git config<\/code>l\u1ec7nh. Thay th\u1ebf&nbsp;<code>username<\/code>v\u00e0&nbsp;<code>user@email.com<\/code>b\u1eb1ng gi\u00e1 tr\u1ecb c\u1ee7a ri\u00eang b\u1ea1n.<\/p>\n<pre class=\"wp-block-code\"><code>git config --global user.name username\ngit config --global user.email user@email.com<\/code><\/pre>\n<p>2.Th\u00eam&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c v\u00e0o&nbsp;<code>.gitignore<\/code>t\u1ec7p. \u0110i\u1ec1u n\u00e0y \u0111\u1ea3m b\u1ea3o c\u00e1c t\u1ec7p h\u1ec7 th\u1ed1ng v\u00e0 t\u1ec7p t\u1ef1 \u0111\u1ed9ng t\u1ea1o kh\u00f4ng \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb trong \u0111\u1ea7u ra c\u1ee7a&nbsp;<code>git status<\/code>v\u00e0 c\u00e1c l\u1ec7nh Git kh\u00e1c.<\/p>\n<pre class=\"wp-block-code\"><code>echo \".chef\" &gt; ~\/chef-repo\/.gitignore<\/code><\/pre>\n<p>3.\u0110\u1ea3m b\u1ea3o&nbsp;<code>chef-repo<\/code>th\u01b0 m\u1ee5c l\u00e0 th\u01b0 m\u1ee5c l\u00e0m vi\u1ec7c hi\u1ec7n t\u1ea1i. Th\u00eam v\u00e0 cam k\u1ebft c\u00e1c t\u1ec7p hi\u1ec7n c\u00f3 b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>git add<\/code>v\u00e0&nbsp;<code>git commit<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/chef-repo\ngit add .\ngit commit -m \"initial commit\"<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>&#91;master (root-commit) a3208a3] initial commit\n13 files changed, 343 insertions(+)\ncreate mode 100644 .chef-repo.txt\n...\ncreate mode 100644 policyfiles\/README.md<\/code><\/pre>\n<p>4.Ch\u1ea1y&nbsp;<code>git status<\/code>l\u1ec7nh \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o t\u1ea5t c\u1ea3 c\u00e1c t\u1ec7p \u0111\u00e3 \u0111\u01b0\u1ee3c cam k\u1ebft.<\/p>\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>On branch master\nnothing to commit, working tree clean<\/code><\/pre>\n<h2 id=\"how-to-generate-a-chef-cookbook\">C\u00e1ch t\u1ea1o ra m\u1ed9t Chef Cookbook<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-generate-a-chef-cookbook\"><\/a><\/h2>\n<p>\u0110\u1ec3 t\u1ea1o m\u1ed9t s\u00e1ch d\u1ea1y n\u1ea5u \u0103n m\u1edbi c\u1ee7a Chef, h\u00e3y s\u1eed d\u1ee5ng&nbsp;<code>chef generate<\/code>l\u1ec7nh.<\/p>\n<pre class=\"wp-block-code\"><code>chef generate cookbook my_cookbook<\/code><\/pre>\n<h2 id=\"how-to-configure-the-knife-utility\">C\u00e1ch c\u1ea5u h\u00ecnh ti\u1ec7n \u00edch Knife<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-configure-the-knife-utility\"><\/a><\/h2>\n<p>Ti\u1ec7n \u00edch Chef Knife gi\u00fap m\u00e1y tr\u1ea1m Chef giao ti\u1ebfp v\u1edbi m\u00e1y ch\u1ee7. Ti\u1ec7n \u00edch n\u00e0y cung c\u1ea5p ph\u01b0\u01a1ng ph\u00e1p qu\u1ea3n l\u00fd s\u1ed5 tay n\u1ea5u \u0103n, n\u00fat v\u00e0 m\u00f4i tr\u01b0\u1eddng Chef. Chef s\u1eed d\u1ee5ng t\u1ec7p&nbsp;<code>config.rb<\/code>trong&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c con \u0111\u1ec3 l\u01b0u tr\u1eef c\u1ea5u h\u00ecnh Knife. \u0110\u1ec3 c\u1ea5u h\u00ecnh Knife, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau.<\/p>\n<p>1.T\u1ea1o m\u1ed9t&nbsp;<code>config.rb<\/code>t\u1ec7p trong&nbsp;<code>~\/chef-repo\/.chef<\/code>th\u01b0 m\u1ee5c. V\u00ed d\u1ee5 n\u00e0y s\u1eed d\u1ee5ng&nbsp;<code>vi<\/code>, nh\u01b0ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng b\u1ea5t k\u1ef3 tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n n\u00e0o.<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/chef-repo\/.chef\nvi config.rb<\/code><\/pre>\n<p>2.S\u1eed d\u1ee5ng t\u1ec7p sau \u0111\u00e2y&nbsp;<code>config.rb<\/code>l\u00e0m v\u00ed d\u1ee5 v\u1ec1 c\u00e1ch c\u1ea5u h\u00ecnh Knife. Sao ch\u00e9p c\u1ea5u h\u00ecnh m\u1eabu n\u00e0y v\u00e0o t\u1ec7p.<\/p>\n<pre class=\"wp-block-code\"><code>current_dir = File.dirname(__FILE__)\nlog_level                :info\nlog_location             STDOUT\nnode_name                'node_name'\nclient_key               \"USER.pem\"\nvalidation_client_name   'ORG_NAME-validator'\nvalidation_key           \"ORG_NAME-validator.pem\"\nchef_server_url          'https:\/\/example.com\/organizations\/ORG_NAME'\ncache_type               'BasicFile'\ncache_options( :path =&gt; \"#{ENV&#91;'HOME']}\/.chef\/checksums\" )\ncookbook_path            &#91;\"#{current_dir}\/..\/cookbooks\"]<\/code><\/pre>\n<p>3.Th\u1ef1c hi\u1ec7n nh\u1eefng thay \u0111\u1ed5i sau:<\/p>\n<ul>\n<li><code>node_name<\/code>ph\u1ea3i l\u00e0 t\u00ean c\u1ee7a t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c t\u1ea1o khi c\u1ea5u h\u00ecnh M\u00e1y ch\u1ee7 Chef.<\/li>\n<li>\u0110\u1ed1i v\u1edbi&nbsp;<code>client_key<\/code>, h\u00e3y thay th\u1ebf&nbsp;<code>USER<\/code>b\u1eb1ng t\u00ean ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi&nbsp;<code>.pem<\/code>t\u1ec7p, theo sau l\u00e0&nbsp;<code>.pem<\/code>.<\/li>\n<li><code>validation_client_name<\/code>y\u00eau c\u1ea7u gi\u1ed1ng nh\u01b0&nbsp;<code>ORG_NAME<\/code>khi t\u1ea1o t\u1ed5 ch\u1ee9c theo sau l\u00e0&nbsp;<code>-validator<\/code>.<\/li>\n<li>tr\u01b0\u1eddng n\u00e0y&nbsp;<code>validation_key<\/code>ph\u1ea3i ch\u1ee9a t\u00ean \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng&nbsp;<code>ORG_NAME<\/code>khi t\u1ed5 ch\u1ee9c \u0111\u01b0\u1ee3c th\u00e0nh l\u1eadp, theo sau l\u00e0&nbsp;<code>-validator.pem<\/code>.<\/li>\n<li>\u0110\u1ed1i v\u1edbi&nbsp;<code>chef_server_url<\/code>, h\u00e3y \u0111\u1ed5i&nbsp;<code>example.com<\/code>t\u00ean mi\u1ec1n. Theo sau t\u00ean mi\u1ec1n l\u00e0&nbsp;<code>\/organizations\/<\/code>v\u00e0&nbsp;<code>ORG_NAME<\/code>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng khi t\u1ea1o t\u1ed5 ch\u1ee9c.<\/li>\n<li>Gi\u1eef nguy\u00ean c\u00e1c tr\u01b0\u1eddng c\u00f2n l\u1ea1i.<\/li>\n<\/ul>\n<p>4.Quay l\u1ea1i th\u01b0&nbsp;<code>chef-repo<\/code>m\u1ee5c v\u00e0 l\u1ea5y ch\u1ee9ng ch\u1ec9 SSL c\u1ea7n thi\u1ebft t\u1eeb m\u00e1y ch\u1ee7 b\u1eb1ng&nbsp;<code>knife fetch<\/code>l\u1ec7nh<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: Ch\u1ee9ng ch\u1ec9 SSL \u0111\u01b0\u1ee3c t\u1ea1o khi m\u00e1y ch\u1ee7 Chef \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t. C\u00e1c ch\u1ee9ng ch\u1ec9 \u0111\u01b0\u1ee3c t\u1ef1 k\u00fd. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 c\u01a1 quan c\u1ea5p ch\u1ee9ng ch\u1ec9 ch\u01b0a x\u00e1c minh ch\u00fang. Tr\u01b0\u1edbc khi l\u1ea5y ch\u1ee9ng ch\u1ec9, h\u00e3y \u0111\u0103ng nh\u1eadp v\u00e0o m\u00e1y ch\u1ee7 Chef v\u00e0 \u0111\u1ea3m b\u1ea3o t\u00ean m\u00e1y ch\u1ee7 v\u00e0 t\u00ean mi\u1ec1n \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n (FQDN) gi\u1ed1ng nhau. C\u00e1c gi\u00e1 tr\u1ecb n\u00e0y c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c x\u00e1c nh\u1eadn b\u1eb1ng l\u1ec7nh&nbsp;<code>hostname<\/code> v\u00e0&nbsp;<code>hostname -f<\/code>.<\/p>\n<p>5.\u0110\u1ec3 x\u00e1c nh\u1eadn&nbsp;<code>config.rb<\/code>t\u1ec7p l\u00e0 \u0111\u00fang, h\u00e3y ch\u1ea1y&nbsp;<code>knife client list<\/code>l\u1ec7nh. T\u00ean tr\u00ecnh x\u00e1c th\u1ef1c c\u00f3 li\u00ean quan s\u1ebd \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb.<\/p>\n<pre class=\"wp-block-code\"><code><code>knife client list<\/code><\/code><\/pre>\n<pre class=\"wp-block-code\"><code><code>testcompany-validator<\/code><\/code><\/pre>\n<h2 id=\"how-to-bootstrap-a-node\">C\u00e1ch kh\u1edfi \u0111\u1ed9ng m\u1ed9t node<\/h2>\n<p>T\u1ea1i th\u1eddi \u0111i\u1ec3m n\u00e0y, c\u1ea3 Chef Server v\u00e0 Chef Workstation \u0111\u1ec1u \u0111\u00e3 \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh. B\u00e2y gi\u1edd ch\u00fang c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng n\u00fat. Qu\u00e1 tr\u00ecnh kh\u1edfi \u0111\u1ed9ng c\u00e0i \u0111\u1eb7t m\u00e1y kh\u00e1ch chef tr\u00ean n\u00fat v\u00e0 th\u1ef1c hi\u1ec7n x\u00e1c th\u1ef1c. Sau \u0111\u00f3, n\u00fat c\u00f3 th\u1ec3 truy xu\u1ea5t b\u1ea5t k\u1ef3 b\u1ea3n c\u1eadp nh\u1eadt c\u1ea7n thi\u1ebft n\u00e0o t\u1eeb Chef Server. \u0110\u1ec3 kh\u1edfi \u0111\u1ed9ng n\u00fat, h\u00e3y l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau.<\/p>\n<p>1.\u0110\u0103ng nh\u1eadp v\u00e0o n\u00fat m\u1ee5c ti\u00eau, l\u00e0 n\u00fat c\u1ea7n kh\u1edfi \u0111\u1ed9ng v\u00e0 ch\u1ec9nh s\u1eeda t\u1ec7p&nbsp;<code>\/etc\/hosts<\/code>. Th\u00eam c\u00e1c m\u1ee5c nh\u1eadp cho n\u00fat, t\u00ean mi\u1ec1n m\u00e1y ch\u1ee7 Chef v\u00e0 m\u00e1y tr\u1ea1m. T\u1ec7p ph\u1ea3i gi\u1ed1ng v\u1edbi v\u00ed d\u1ee5 sau, s\u1eed d\u1ee5ng t\u00ean th\u1ef1c t\u1ebf c\u1ee7a M\u00e1y ch\u1ee7 Chef, m\u00e1y tr\u1ea1m v\u00e0 n\u00fat m\u1ee5c ti\u00eau, c\u00f9ng v\u1edbi \u0111\u1ecba ch\u1ec9 IP c\u1ee7a ch\u00fang.<\/p>\n<pre class=\"wp-block-code\"><code>127.0.0.1 localhost\n192.0.100.0 targetnode\n192.0.2.0 chefworkstation\n192.0.1.0 example.com<\/code><\/pre>\n<p>2.Quay l\u1ea1i Linode l\u01b0u tr\u1eef Chef Workstation v\u00e0 thay \u0111\u1ed5i th\u01b0 m\u1ee5c l\u00e0m vi\u1ec7c th\u00e0nh&nbsp;<code>~\/chef-repo\/.chef<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/chef-repo\/.chef<\/code><\/pre>\n<p>3.Kh\u1edfi \u0111\u1ed9ng n\u00fat b\u1eb1ng&nbsp;<code>knife bootstrap<\/code>l\u1ec7nh. Ch\u1ec9 \u0111\u1ecbnh \u0111\u1ecba ch\u1ec9 IP c\u1ee7a n\u00fat m\u1ee5c ti\u00eau cho&nbsp;<code>node_ip_address<\/code>. \u0110\u00e2y l\u00e0 \u0111\u1ecba ch\u1ec9 c\u1ee7a n\u00fat \u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng. Trong v\u00ed d\u1ee5 sau, s\u1eed d\u1ee5ng t\u00ean ng\u01b0\u1eddi d\u00f9ng v\u00e0 m\u1eadt kh\u1ea9u th\u1ef1c t\u1ebf cho t\u00e0i kho\u1ea3n thay cho&nbsp;<code>username<\/code>v\u00e0&nbsp;<code>password<\/code>. Nh\u1eadp t\u00ean c\u1ee7a n\u00fat thay cho&nbsp;<code>nodename<\/code>. Tr\u1ea3 l\u1eddi&nbsp;<code>Y<\/code>khi \u0111\u01b0\u1ee3c h\u1ecfi &#8220;B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n ti\u1ebfp t\u1ee5c k\u1ebft n\u1ed1i kh\u00f4ng&#8221;.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: T\u00f9y ch\u1ecdn kh\u1edfi \u0111\u1ed9ng b\u1eb1ng x\u00e1c th\u1ef1c c\u1eb7p kh\u00f3a c\u00f3 v\u1ebb nh\u01b0 kh\u00f4ng c\u00f2n \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 n\u1eefa.<\/p>\n<pre class=\"wp-block-code\"><code>knife bootstrap node_ip_address -U username -P password --sudo --use-sudo-password --node-name nodename<\/code><\/pre>\n<p>4.X\u00e1c nh\u1eadn n\u00fat \u0111\u00e3 \u0111\u01b0\u1ee3c kh\u1edfi \u0111\u1ed9ng th\u00e0nh c\u00f4ng. Li\u1ec7t k\u00ea c\u00e1c n\u00fat m\u00e1y kh\u00e1ch b\u1eb1ng l\u1ec7nh&nbsp;<code>knife client list<\/code>. T\u1ea5t c\u1ea3 c\u00e1c n\u00fat \u0111\u00e3 kh\u1edfi \u0111\u1ed9ng ph\u1ea3i \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea.<\/p>\n<pre class=\"wp-block-code\"><code>knife client list<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>target-node\ntestcompany-validator<\/code><\/pre>\n<p>5.Th\u00eam n\u00fat kh\u1edfi \u0111\u1ed9ng v\u00e0o&nbsp;<code>\/etc\/hosts<\/code>t\u1ec7p m\u00e1y tr\u1ea1m nh\u01b0 sau. Thay th\u1ebf&nbsp;<code>192.0.100.0 targetnode<\/code>b\u1eb1ng \u0111\u1ecba ch\u1ec9 IP v\u00e0 t\u00ean c\u1ee7a n\u00fat kh\u1edfi \u0111\u1ed9ng.<\/p>\n<pre class=\"wp-block-code\"><code>127.0.0.1 localhost\n192.0.1.0 example.com\n192.0.2.0 chefworkstation\n192.0.100.0 targetnode<\/code><\/pre>\n<h2 id=\"how-to-download-and-apply-a-cookbook-optional\">C\u00e1ch t\u1ea3i xu\u1ed1ng v\u00e0 \u00e1p d\u1ee5ng a Cookbook (T\u00f9y ch\u1ecdn)<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#how-to-download-and-apply-a-cookbook-optional\"><\/a><\/h2>\n<p>Cookbook l\u00e0 c\u00e1ch hi\u1ec7u qu\u1ea3 nh\u1ea5t \u0111\u1ec3 gi\u1eef cho c\u00e1c n\u00fat m\u1ee5c ti\u00eau \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt. Ngo\u00e0i ra, cookbook c\u00f3 th\u1ec3 x\u00f3a t\u1ec7p&nbsp;<code>validation.pem<\/code>\u0111\u01b0\u1ee3c t\u1ea1o tr\u00ean n\u00fat khi n\u00f3 \u0111\u01b0\u1ee3c kh\u1edfi \u0111\u1ed9ng. \u0110i\u1ec1u quan tr\u1ecdng l\u00e0 ph\u1ea3i x\u00f3a t\u1ec7p n\u00e0y v\u00ec l\u00fd do b\u1ea3o m\u1eadt.<\/p>\n<p>Kh\u00f4ng b\u1eaft bu\u1ed9c ph\u1ea3i t\u1ea3i xu\u1ed1ng ho\u1eb7c t\u1ea1o s\u00e1ch d\u1ea1y n\u1ea5u \u0103n \u0111\u1ec3 s\u1eed d\u1ee5ng Chef. Nh\u01b0ng ph\u1ea7n n\u00e0y cung c\u1ea5p m\u1ed9t v\u00ed d\u1ee5 ng\u1eafn g\u1ecdn v\u1ec1 c\u00e1ch t\u1ea3i xu\u1ed1ng s\u00e1ch d\u1ea1y n\u1ea5u \u0103n v\u00e0 \u00e1p d\u1ee5ng v\u00e0o m\u1ed9t n\u00fat.<\/p>\n<p>1.Tr\u00ean m\u00e1y tr\u1ea1m Chef, h\u00e3y chuy\u1ec3n \u0111\u1ebfn&nbsp;<code>~\/chef-repo\/.chef<\/code>th\u01b0 m\u1ee5c.<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/chef-repo\/.chef<\/code><\/pre>\n<p>2.T\u1ea3i xu\u1ed1ng&nbsp;<code>cron-delvalidate<\/code>s\u00e1ch d\u1ea1y n\u1ea5u \u0103n t\u1eeb Chef Supermarket. \u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1&nbsp;<code>supermarket<\/code>l\u1ec7nh, h\u00e3y xem&nbsp;<a href=\"https:\/\/docs.chef.io\/workstation\/knife_supermarket\/\" target=\"_blank\" rel=\"noreferrer noopener\">t\u00e0i li\u1ec7u c\u1ee7a Chef supermarket<\/a>&nbsp;.<\/p>\n<pre class=\"wp-block-code\"><code>knife supermarket download cron-delvalidate<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Downloading cron-delvalidate from Supermarket at version 0.1.3 to \/home\/username\/chef-repo\/.chef\/cron-delvalidate-0.1.3.tar.gz\nCookbook saved: \/home\/username\/chef-repo\/.chef\/cron-delvalidate-0.1.3.tar.gz<\/code><\/pre>\n<p>3.N\u1ebfu s\u00e1ch d\u1ea1y n\u1ea5u \u0103n \u0111\u01b0\u1ee3c t\u1ea3i xu\u1ed1ng d\u01b0\u1edbi d\u1ea1ng&nbsp;<code>.tar.gz<\/code>t\u1ec7p, h\u00e3y s\u1eed d\u1ee5ng&nbsp;<code>tar<\/code>l\u1ec7nh \u0111\u1ec3 gi\u1ea3i n\u00e9n t\u1ec7p \u0111\u00f3. Di chuy\u1ec3n th\u01b0 m\u1ee5c \u0111\u00e3 gi\u1ea3i n\u00e9n \u0111\u1ebfn th\u01b0&nbsp;<code>cookbooks<\/code>m\u1ee5c.<\/p>\n<pre class=\"wp-block-code\"><code>tar -xf cron-delvalidate-0.1.3.tar.gz\ncp -r  cron-delvalidate ~\/chef-repo\/cookbooks\/<\/code><\/pre>\n<p>4.Xem l\u1ea1i t\u1ec7p c\u1ee7a s\u00e1ch h\u01b0\u1edbng d\u1eabn n\u1ea5u \u0103n&nbsp;<code>default.rb<\/code>\u0111\u1ec3 xem c\u00f4ng th\u1ee9c. C\u00f4ng th\u1ee9c n\u00e0y \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng Ruby v\u00e0 minh h\u1ecda c\u00e1ch m\u1ed9t c\u00f4ng th\u1ee9c \u0111i\u1ec3n h\u00ecnh \u0111\u01b0\u1ee3c c\u1ea5u tr\u00fac. C\u00f4ng th\u1ee9c n\u00e0y ch\u1ee9a m\u1ed9t c\u00f4ng vi\u1ec7c cron c\u00f3 t\u00ean l\u00e0&nbsp;<code>clientrun<\/code>. C\u00f4ng vi\u1ec7c n\u00e0y kh\u1edfi t\u1ea1o m\u1ed9t c\u00f4ng vi\u1ec7c cron m\u1edbi \u0111\u1ec3 ch\u1ea1y&nbsp;<code>chef-client<\/code>l\u1ec7nh theo gi\u1edd. C\u00f4ng vi\u1ec7c n\u00e0y c\u0169ng x\u00f3a&nbsp;<code>validation.pem<\/code>t\u1ec7p kh\u00f4ng c\u1ea7n thi\u1ebft.<\/p>\n<pre class=\"wp-block-code\"><code>#\n# Cookbook Name:: cron-delvalidate\n# Recipe:: Chef-Client Cron &amp; Delete Validation.pem\n#\n#\ncron \"clientrun\" do\n  minute '0'\n  hour '*\/1'\n  command \"\/usr\/bin\/chef-client\"\n  action :create\nend\n\nfile \"\/etc\/chef\/validation.pem\" do\n  action :delete\nend<\/code><\/pre>\n<p>5.Th\u00eam c\u00f4ng th\u1ee9c v\u00e0o danh s\u00e1ch ch\u1ea1y cho n\u00fat. Trong l\u1ec7nh sau, thay th\u1ebf&nbsp;<code>nodename<\/code>b\u1eb1ng t\u00ean c\u1ee7a n\u00fat.<\/p>\n<pre class=\"wp-block-code\"><code>knife node run_list add nodename 'recipe&#91;cron-delvalidate::default]'<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>nodename:\n  run_list: recipe&#91;cron-delvalidate::default]<\/code><\/pre>\n<p>6.T\u1ea3i s\u00e1ch d\u1ea1y n\u1ea5u \u0103n v\u00e0 c\u00f4ng th\u1ee9c n\u1ea5u \u0103n l\u00ean M\u00e1y ch\u1ee7 \u0111\u1ea7u b\u1ebfp.<\/p>\n<pre class=\"wp-block-code\"><code>knife cookbook upload cron-delvalidate<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>Uploading cron-delvalidate &#91;0.1.3]\nUploaded 1 cookbook.<\/code><\/pre>\n<p>7.Ch\u1ea1y&nbsp;<code>chef-client<\/code>l\u1ec7nh tr\u00ean n\u00fat b\u1eb1ng&nbsp;<code>knife ssh<\/code>ti\u1ec7n \u00edch. L\u1ec7nh n\u00e0y khi\u1ebfn n\u00fat k\u00e9o c\u00e1c c\u00f4ng th\u1ee9c trong danh s\u00e1ch ch\u1ea1y c\u1ee7a n\u00f3 t\u1eeb m\u00e1y ch\u1ee7. N\u00f3 c\u0169ng x\u00e1c \u0111\u1ecbnh xem c\u00f3 b\u1ea5t k\u1ef3 b\u1ea3n c\u1eadp nh\u1eadt n\u00e0o kh\u00f4ng. Chef Server truy\u1ec1n c\u00e1c c\u00f4ng th\u1ee9c \u0111\u1ebfn n\u00fat m\u1ee5c ti\u00eau. Khi c\u00f4ng th\u1ee9c ch\u1ea1y, n\u00f3 x\u00f3a t\u1ec7p v\u00e0 c\u00e0i \u0111\u1eb7t m\u1ed9t c\u00f4ng vi\u1ec7c cron \u0111\u1ec3 gi\u1eef cho n\u00fat \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt trong t\u01b0\u01a1ng lai. Trong l\u1ec7nh sau, h\u00e3y thay th\u1ebf&nbsp;<code>nodename<\/code>b\u1eb1ng t\u00ean th\u1ef1c t\u1ebf c\u1ee7a n\u00fat m\u1ee5c ti\u00eau. Thay th\u1ebf&nbsp;<code>username<\/code>b\u1eb1ng t\u00ean c\u1ee7a t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng c\u00f3&nbsp;<code>sudo<\/code>quy\u1ec1n truy c\u1eadp. Nh\u1eadp m\u1eadt kh\u1ea9u cho t\u00e0i kho\u1ea3n khi \u0111\u01b0\u1ee3c nh\u1eafc th\u1ef1c hi\u1ec7n.<\/p>\n<pre class=\"wp-block-code\"><code>knife ssh 'name:nodename' 'sudo chef-client' -x username<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>nodename Chef Infra Client, version 17.10.3\nnodename Patents: https:\/\/www.chef.io\/patents\nnodename Infra Phase starting\nnodename Resolving cookbooks for run list: &#91;\"cron-delvalidate::default\"]\nnodename Synchronizing cookbooks:\nnodename   - cron-delvalidate (0.1.3)\nnodename Installing cookbook gem dependencies:\nnodename Compiling cookbooks...\nnodename Loading Chef InSpec profile files:\nnodename Loading Chef InSpec input files:\nnodename Loading Chef InSpec waiver files:\nnodename Converging 2 resources\nnodename Recipe: cron-delvalidate::default\nnodename   * cron&#91;clientrun] action create\nnodename     - add crontab entry for cron&#91;clientrun]\nnodename   * file&#91;\/etc\/chef\/validation.pem] action delete (up to date)\nnodename\nnodename Running handlers:\nnodename Running handlers complete\nnodename Infra Phase complete, 1\/2 resources updated in 03 seconds<\/code><\/pre>\n<h2 id=\"conclusion\">Ph\u1ea7n k\u1ebft lu\u1eadn<a href=\"https:\/\/www.linode.com\/docs\/guides\/how-to-install-chef-on-ubuntu-20-04\/#conclusion\"><\/a><\/h2>\n<p>Chef l\u00e0 m\u1ed9t \u1ee9ng d\u1ee5ng c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng d\u01b0\u1edbi d\u1ea1ng m\u00e3 (IaC) \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng tri\u1ec3n khai v\u00e0 qu\u1ea3n l\u00fd c\u00e1c n\u00fat c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng. Ki\u1ebfn tr\u00fac Chef bao g\u1ed3m Chef Server, n\u01a1i l\u01b0u tr\u1eef t\u1ea5t c\u1ea3 c\u00e1c quy tr\u00ecnh v\u00e0 Chef Workstation, n\u01a1i m\u00e3 c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n. C\u00e1c n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd giao ti\u1ebfp v\u1edbi m\u00e1y ch\u1ee7 \u0111\u1ec3 nh\u1eadn c\u00e1c b\u1ea3n c\u1eadp nh\u1eadt. \u0110\u1ec3 s\u1eed d\u1ee5ng Chef, h\u00e3y c\u00e0i \u0111\u1eb7t ph\u1ea7n m\u1ec1m Chef Server v\u00e0 Chef Workstation. Chia s\u1ebb kh\u00f3a RSA gi\u1eefa m\u00e1y ch\u1ee7 v\u00e0 m\u00e1y tr\u1ea1m, \u0111\u1ed3ng th\u1eddi c\u00e0i \u0111\u1eb7t ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n v\u00e0 ti\u1ec7n \u00edch Chef Knife tr\u00ean m\u00e1y tr\u1ea1m. Kh\u1edfi \u0111\u1ed9ng c\u00e1c n\u00fat m\u1ee5c ti\u00eau b\u1eb1ng ti\u1ec7n&nbsp;<code>knife bootstrap<\/code>\u00edch. Sau khi m\u1ed9t n\u00fat \u0111\u01b0\u1ee3c kh\u1edfi \u0111\u1ed9ng, c\u00f3 th\u1ec3 t\u1ea3i xu\u1ed1ng s\u00e1ch d\u1ea1y n\u1ea5u \u0103n v\u00e0 c\u00f4ng th\u1ee9c n\u1ea5u \u0103n b\u1eb1ng danh s\u00e1ch ch\u1ea1y c\u1ee7a n\u00fat. \u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin, h\u00e3y xem t\u00e0i&nbsp;<a href=\"https:\/\/docs.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">li\u1ec7u Chef<\/a>&nbsp;.<\/p>\n<h2 id=\"more-information\">Th\u00f4ng tin th\u00eam<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 mu\u1ed1n tham kh\u1ea3o c\u00e1c ngu\u1ed3n sau \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 ch\u1ee7 \u0111\u1ec1 n\u00e0y. M\u1eb7c d\u00f9 ch\u00fang t\u00f4i cung c\u1ea5p v\u1edbi hy v\u1ecdng r\u1eb1ng ch\u00fang s\u1ebd h\u1eefu \u00edch, nh\u01b0ng xin l\u01b0u \u00fd r\u1eb1ng ch\u00fang t\u00f4i kh\u00f4ng th\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh ch\u00ednh x\u00e1c ho\u1eb7c t\u00ednh k\u1ecbp th\u1eddi c\u1ee7a c\u00e1c t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef b\u00ean ngo\u00e0i.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Trang web c\u1ee7a \u0111\u1ea7u b\u1ebfp<\/a><\/li>\n<li><a href=\"https:\/\/docs.chef.io\/platform_overview\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u1ed5ng quan v\u1ec1 \u0111\u1ea7u b\u1ebfp<\/a><\/li>\n<li><a href=\"https:\/\/docs.chef.io\/workstation\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e0i li\u1ec7u v\u1ec1 Chef Workstation<\/a><\/li>\n<li><a href=\"https:\/\/learn.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">H\u1ecdc kh\u00f3a \u0111\u00e0o t\u1ea1o \u0111\u1ea7u b\u1ebfp<\/a><\/li>\n<li><a href=\"https:\/\/www.chef.io\/downloads\/tools\/workstation?os=ubuntu\" target=\"_blank\" rel=\"noreferrer noopener\">T\u1ea3i xu\u1ed1ng Chef Workstation cho Ubuntu<\/a><\/li>\n<li><a href=\"https:\/\/docs.chef.io\/workstation\/install_workstation\/\" target=\"_blank\" rel=\"noreferrer noopener\">H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Chef Workstation<\/a><\/li>\n<li><a href=\"https:\/\/www.chef.io\/downloads\/tools\/infra-server?os=ubuntu\" target=\"_blank\" rel=\"noreferrer noopener\">T\u1ea3i xu\u1ed1ng Chef Server cho Ubuntu<\/a><\/li>\n<li><a href=\"https:\/\/docs.chef.io\/server\/install_server\/\" target=\"_blank\" rel=\"noreferrer noopener\">H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Chef Server<\/a><\/li>\n<li><a href=\"https:\/\/supermarket.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Si\u00eau th\u1ecb \u0111\u1ea7u b\u1ebfp<\/a><\/li>\n<li><a href=\"https:\/\/docs.chef.io\/workstation\/knife_supermarket\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e0i li\u1ec7u v\u1ec1 Chef Supermarket<\/a><\/li>\n<li><a href=\"https:\/\/docs.chef.io\/install_bootstrap\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e0i li\u1ec7u kh\u1edfi \u0111\u1ed9ng Chef<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Chef&nbsp;l\u00e0 \u1ee9ng d\u1ee5ng&nbsp;Infrastructure as Code&nbsp;(IaC) mi\u1ec5n ph\u00ed v\u00e0 m\u00e3 ngu\u1ed3n m\u1edf. \u0110\u00e2y l\u00e0 h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh cho ph\u00e9p qu\u1ea3n tr\u1ecb vi\u00ean cung c\u1ea5p v\u00e0 qu\u1ea3n l\u00fd c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng b\u1eb1ng c\u00e1ch t\u1ef1 \u0111\u1ed9ng h\u00f3a. M\u1ed9t quy tr\u00ecnh l\u00e0m vi\u1ec7c Chef ho\u00e0n ch\u1ec9nh bao g\u1ed3m m\u1ed9t ho\u1eb7c nhi\u1ec1u Chef Workstation, m\u1ed9t Chef<\/p>\n","protected":false},"author":1,"featured_media":35798,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131],"tags":[],"class_list":["post-34936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chef"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34936","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=34936"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34936\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35798"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}