{"id":34949,"date":"2024-09-05T16:10:59","date_gmt":"2024-09-05T09:10:59","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/05\/installing-a-chef-server-workstation-on-ubuntu-18-04\/"},"modified":"2024-09-05T16:10:59","modified_gmt":"2024-09-05T09:10:59","slug":"installing-a-chef-server-workstation-on-ubuntu-18-04","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/05\/installing-a-chef-server-workstation-on-ubuntu-18-04\/","title":{"rendered":"C\u00e0i \u0111\u1eb7t Chef Server Workstation tr\u00ean Ubuntu 18.04"},"content":{"rendered":"<p><a href=\"http:\/\/www.chef.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Chef<\/a>&nbsp;l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh d\u1ef1a tr\u00ean Ruby \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 \u0111\u1ecbnh ngh\u0129a c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng d\u01b0\u1edbi d\u1ea1ng m\u00e3. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng t\u1ef1 \u0111\u1ed9ng h\u00f3a vi\u1ec7c qu\u1ea3n l\u00fd nhi\u1ec1u&nbsp;<em>n\u00fat<\/em>&nbsp;v\u00e0 duy tr\u00ec t\u00ednh nh\u1ea5t qu\u00e1n tr\u00ean c\u00e1c n\u00fat \u0111\u00f3.&nbsp;<em>C\u00e1c c\u00f4ng th\u1ee9c<\/em>&nbsp;khai b\u00e1o tr\u1ea1ng th\u00e1i mong mu\u1ed1n cho c\u00e1c n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u00e0 \u0111\u01b0\u1ee3c t\u1ea1o tr\u00ean&nbsp;<em>m\u00e1y tr\u1ea1m<\/em>&nbsp;c\u1ee7a ng\u01b0\u1eddi d\u00f9ng b\u1eb1ng g\u00f3i&nbsp;<em>Chef Workstation<\/em>&nbsp;. C\u00e1c c\u00f4ng th\u1ee9c c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c ph\u00e2n ph\u1ed1i tr\u00ean c\u00e1c n\u00fat th\u00f4ng qua&nbsp;<em>m\u00e1y ch\u1ee7 Chef<\/em>&nbsp;. M\u1ed9t&nbsp;<em>m\u00e1y kh\u00e1ch Chef<\/em>&nbsp;, \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t tr\u00ean m\u1ed7i n\u00fat, ch\u1ecbu tr\u00e1ch nhi\u1ec7m \u00e1p d\u1ee5ng c\u00f4ng th\u1ee9c cho n\u00fat t\u01b0\u01a1ng \u1ee9ng c\u1ee7a n\u00f3.<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/chef-graph_hu14dd7de041028599665536aad0220d76_36528_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"chef_graph-small.png\" title=\"Minh h\u1ecda cho th\u1ea5y c\u00e1c m\u00e1y tr\u1ea1m giao ti\u1ebfp v\u1edbi c\u00e1c Node th\u00f4ng qua Chef Server\"\/><\/figure>\n<p>H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd ch\u1ec9 cho b\u1ea1n c\u00e1ch t\u1ea1o v\u00e0 c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 v\u00e0 m\u00e1y tr\u1ea1m Chef. B\u1ea1n c\u0169ng s\u1ebd kh\u1edfi \u0111\u1ed9ng m\u1ed9t n\u00fat \u0111\u1ec3 qu\u1ea3n l\u00fd b\u1eb1ng Chef. C\u00f4ng vi\u1ec7c n\u00e0y s\u1ebd y\u00eau c\u1ea7u ba Linode ri\u00eang l\u1ebb.<\/p>\n<p>Xem&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/beginners-guide-chef\/\">H\u01b0\u1edbng d\u1eabn d\u00e0nh cho ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u v\u1ec1 ngh\u1ec1 \u0111\u1ea7u b\u1ebfp<\/a>&nbsp;\u0111\u1ec3 bi\u1ebft ph\u1ea7n gi\u1edbi thi\u1ec7u v\u1ec1 c\u00e1c kh\u00e1i ni\u1ec7m c\u1ee7a ngh\u1ec1 \u0111\u1ea7u b\u1ebfp.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">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 n\u00e0y, b\u1ea1n c\u00f3 th\u1ec3 xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/linux-users-and-groups\/#understanding-the-sudo-linux-group-and-user\">Ng\u01b0\u1eddi d\u00f9ng v\u00e0 Nh\u00f3m<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/p>\n<h2 id=\"prerequisites\">\u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#prerequisites\"><\/a><\/h2>\n<ul>\n<li>M\u1ed9t Linode 8GB ch\u1ea1y Ubuntu 18.04. Linode n\u00e0y s\u1ebd l\u01b0u tr\u1eef m\u00e1y ch\u1ee7 Chef.<\/li>\n<li>G\u00e1n m\u1ed9t Mi\u1ec1n cho m\u00e1y ch\u1ee7 Chef. \u0110\u1ea3m b\u1ea3o mi\u1ec1n c\u1ee7a b\u1ea1n c\u00f3 v\u00f9ng mi\u1ec1n, b\u1ea3n ghi NS v\u00e0 b\u1ea3n ghi A\/AAA t\u01b0\u01a1ng \u1ee9ng. Xem&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/networking\/dns-manager\/guides\/create-domain\/\">T\u1ea1o Mi\u1ec1n<\/a>&nbsp;\u0111\u1ec3 bi\u1ebft chi ti\u1ebft.<\/li>\n<li>\u0110\u1ea3m b\u1ea3o t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a m\u00e1y ch\u1ee7 Chef gi\u1ed1ng v\u1edbi t\u00ean mi\u1ec1n c\u1ee7a n\u00f3. M\u00e1y ch\u1ee7 Chef c\u1ee7a b\u1ea1n s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea1o ch\u1ee9ng ch\u1ec9 SSL d\u1ef1a tr\u00ean t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a Linode.<\/li>\n<li>Hai Linode 2 GB, m\u1ed7i Linode ch\u1ea1y Ubuntu 18.04. M\u1ed9t Linode s\u1ebd l\u01b0u tr\u1eef m\u1ed9t m\u00e1y tr\u1ea1m v\u00e0 Linode c\u00f2n l\u1ea1i s\u1ebd l\u01b0u tr\u1eef m\u1ed9t n\u00fat do Chef qu\u1ea3n l\u00fd.<\/li>\n<li>M\u00e1y tr\u1ea1m v\u00e0 m\u00e1y ch\u1ee7 Chef ph\u1ea3i \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh 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 t\u00ednh to\u00e1n<\/a>&nbsp;. Sau khi n\u00fat c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#bootstrap-a-node\">kh\u1edfi \u0111\u1ed9ng<\/a>&nbsp;, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng s\u1ed5 tay h\u01b0\u1edbng d\u1eabn Chef \u0111\u1ec3 b\u1ea3o m\u1eadt n\u00fat c\u1ee7a m\u00ecnh. C\u00e2n nh\u1eafc s\u1eed d\u1ee5ng s\u1ed5 tay h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/users\" target=\"_blank\" rel=\"noreferrer noopener\">Users<\/a>&nbsp;v\u00e0 s\u1ed5 tay h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/firewall\" target=\"_blank\" rel=\"noreferrer noopener\">Firewall<\/a>&nbsp;cho c\u00f4ng vi\u1ec7c n\u00e0y.<\/li>\n<li>\u0110\u1ea3m b\u1ea3o t\u1ea5t c\u1ea3 m\u00e1y ch\u1ee7 \u0111\u1ec1u \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt: sudo apt update &amp;&amp; sudo apt upgrade<\/li>\n<\/ul>\n<h2 id=\"the-chef-server\">The Chef Server<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#the-chef-server\"><\/a><a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#the-chef-server\"><\/a><\/h2>\n<p>M\u00e1y ch\u1ee7 Chef l\u00e0 trung t\u00e2m t\u01b0\u01a1ng t\u00e1c gi\u1eefa t\u1ea5t c\u1ea3 c\u00e1c m\u00e1y tr\u1ea1m v\u00e0 n\u00fat d\u01b0\u1edbi s\u1ef1 qu\u1ea3n l\u00fd c\u1ee7a Chef. C\u00e1c thay \u0111\u1ed5i \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n \u0111\u1ed1i v\u1edbi m\u00e3 c\u1ea5u h\u00ecnh tr\u00ean m\u00e1y tr\u1ea1m \u0111\u01b0\u1ee3c \u0111\u1ea9y \u0111\u1ebfn m\u00e1y ch\u1ee7 Chef, sau \u0111\u00f3 \u0111\u01b0\u1ee3c k\u00e9o b\u1edfi m\u1ed9t n\u00fat&nbsp;<code>chef-client<\/code>\u0111\u1ec3 \u00e1p d\u1ee5ng c\u00e1c c\u1ea5u h\u00ecnh.<\/p>\n<h3 id=\"install-the-chef-server\">C\u00e0i \u0111\u1eb7t m\u00e1y ch\u1ee7 Chef<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#install-the-chef-server\"><\/a><\/h3>\n<p>1.T\u1ea3i xu\u1ed1ng&nbsp;<a href=\"https:\/\/downloads.chef.io\/chef-server\/#ubuntu\" target=\"_blank\" rel=\"noreferrer noopener\">l\u00f5i m\u00e1y ch\u1ee7 Chef m\u1edbi nh\u1ea5t<\/a>&nbsp;:<\/p>\n<pre class=\"wp-block-code\"><code>wget https:\/\/packages.chef.io\/files\/stable\/chef-server\/13.1.13\/ubuntu\/18.04\/chef-server-core_13.1.13-1_amd64.deb\n<\/code><\/pre>\n<p>2.C\u00e0i \u0111\u1eb7t m\u00e1y ch\u1ee7:<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo dpkg -i chef-server-core_*.deb<\/code><\/code><\/pre>\n<p>3.X\u00f3a t\u1ec7p \u0111\u00e3 t\u1ea3i xu\u1ed1ng:<\/p>\n<pre class=\"wp-block-code\"><code><code>rm chef-server-core_*.deb<\/code><\/code><\/pre>\n<p>4.M\u00e1y ch\u1ee7 Chef bao g\u1ed3m m\u1ed9t ti\u1ec7n \u00edch d\u00f2ng l\u1ec7nh c\u00f3 t\u00ean l\u00e0&nbsp;<code>chef-server-ctl<\/code>. Ch\u1ea1y&nbsp;<code>chef-server-ctl<\/code>\u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng c\u00e1c d\u1ecbch v\u1ee5 m\u00e1y ch\u1ee7 Chef:<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo chef-server-ctl reconfigure<\/code><\/code><\/pre>\n<h3 id=\"create-a-chef-user-and-organization\">T\u1ea1o Ng\u01b0\u1eddi d\u00f9ng v\u00e0 T\u1ed5 ch\u1ee9c Chef<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#create-a-chef-user-and-organization\"><\/a><\/h3>\n<p>\u0110\u1ec3 li\u00ean k\u1ebft c\u00e1c m\u00e1y tr\u1ea1m v\u00e0 n\u00fat v\u1edbi m\u00e1y ch\u1ee7 Chef, h\u00e3y t\u1ea1o m\u1ed9t qu\u1ea3n tr\u1ecb vi\u00ean v\u00e0 t\u1ed5 ch\u1ee9c c\u00f3 kh\u00f3a ri\u00eang RSA li\u00ean quan.<\/p>\n<p>1.T\u1eeb th\u01b0 m\u1ee5c ch\u00ednh, t\u1ea1o m\u1ed9t&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c \u0111\u1ec3 l\u01b0u tr\u1eef kh\u00f3a:<\/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>\u0111\u1ec3 t\u1ea1o ng\u01b0\u1eddi d\u00f9ng. Trong v\u00ed d\u1ee5 n\u00e0y, h\u00e3y thay \u0111\u1ed5i nh\u1eefng m\u1ee5c sau \u0111\u1ec3 ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u c\u1ee7a b\u1ea1n:&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>. \u0110i\u1ec1u ch\u1ec9nh&nbsp;<code>USER_NAME.pem<\/code>v\u00e0 \u0111\u1ec3 nguy\u00ean&nbsp;<code>.pem<\/code>ph\u1ea7n m\u1edf r\u1ed9ng:<\/p>\n<pre class=\"wp-block-code\"><code>sudo chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename ~\/.chef\/USER_NAME.pem\n<\/code><\/pre>\n<p>\u0110\u1ec3 xem danh s\u00e1ch t\u1ea5t c\u1ea3 ng\u01b0\u1eddi d\u00f9ng tr\u00ean m\u00e1y ch\u1ee7 Chef c\u1ee7a b\u1ea1n, h\u00e3y \u0111\u01b0a ra l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo chef-server-ctl user-list<\/code><\/code><\/pre>\n<p>3.T\u1ea1o m\u1ed9t t\u1ed5 ch\u1ee9c v\u00e0 th\u00eam ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c t\u1ea1o \u1edf b\u01b0\u1edbc tr\u01b0\u1edbc v\u00e0o nh\u00f3m b\u1ea3o m\u1eadt qu\u1ea3n tr\u1ecb vi\u00ean v\u00e0 qu\u1ea3n tr\u1ecb vi\u00ean thanh to\u00e1n. Thay th\u1ebf&nbsp;<code>ORG_NAME<\/code>b\u1eb1ng m\u1ed9t m\u00e3 \u0111\u1ecbnh danh ng\u1eafn cho t\u1ed5 ch\u1ee9c,&nbsp;<code>ORG_FULL_NAME<\/code>b\u1eb1ng t\u00ean \u0111\u1ea7y \u0111\u1ee7 c\u1ee7a t\u1ed5 ch\u1ee9c,&nbsp;<code>USER_NAME<\/code>b\u1eb1ng t\u00ean ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c t\u1ea1o \u1edf b\u01b0\u1edbc tr\u00ean v\u00e0&nbsp;<code>ORG_NAME.pem<\/code>b\u1eb1ng m\u00e3 \u0111\u1ecbnh danh ng\u1eafn c\u1ee7a t\u1ed5 ch\u1ee9c theo sau l\u00e0&nbsp;<code>.pem<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>sudo chef-server-ctl org-create ORG_NAME \"ORG_FULL_NAME\" --association_user USER_NAME --filename ~\/.chef\/ORG_NAME.pem\n<\/code><\/pre>\n<p>\u0110\u1ec3 xem danh s\u00e1ch t\u1ea5t c\u1ea3 c\u00e1c t\u1ed5 ch\u1ee9c tr\u00ean m\u00e1y ch\u1ee7 Chef c\u1ee7a b\u1ea1n, h\u00e3y s\u1eed d\u1ee5ng l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code>sudo chef-server-ctl org-list<\/code><\/pre>\n<p>Sau khi c\u00e0i \u0111\u1eb7t m\u00e1y ch\u1ee7 Chef v\u00e0 t\u1ea1o kh\u00f3a RSA, b\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u c\u1ea5u h\u00ecnh m\u00e1y tr\u1ea1m c\u1ee7a m\u00ecnh. M\u00e1y tr\u1ea1m l\u00e0 n\u01a1i t\u1ea5t c\u1ea3 c\u00e1c c\u1ea5u h\u00ecnh ch\u00ednh s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o cho c\u00e1c n\u00fat c\u1ee7a b\u1ea1n.<\/p>\n<h2 id=\"chef-workstations\">Chef Workstations<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#chef-workstations\"><\/a><a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#chef-workstations\"><\/a><\/h2>\n<p>Tr\u1ea1m l\u00e0m vi\u1ec7c Chef l\u00e0 n\u01a1i b\u1ea1n t\u1ea1o v\u00e0 c\u1ea5u h\u00ecnh b\u1ea5t k\u1ef3 c\u00f4ng th\u1ee9c n\u1ea5u \u0103n, s\u00e1ch h\u01b0\u1edbng d\u1eabn n\u1ea5u \u0103n, thu\u1ed9c t\u00ednh v\u00e0 c\u00e1c thay \u0111\u1ed5i kh\u00e1c c\u1ea7n thi\u1ebft \u0111\u1ec3 qu\u1ea3n l\u00fd c\u00e1c n\u00fat c\u1ee7a b\u1ea1n. M\u1eb7c d\u00f9 \u0111\u00e2y c\u00f3 th\u1ec3 l\u00e0 m\u00e1y c\u1ee5c b\u1ed9 ch\u1ea1y b\u1ea5t k\u1ef3 h\u1ec7 \u0111i\u1ec1u h\u00e0nh n\u00e0o, nh\u01b0ng v\u1eabn c\u00f3 m\u1ed9t s\u1ed1 l\u1ee3i \u00edch khi gi\u1eef m\u00e1y ch\u1ee7 t\u1eeb xa l\u00e0m tr\u1ea1m l\u00e0m vi\u1ec7c c\u1ee7a b\u1ea1n \u0111\u1ec3 b\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp t\u1eeb b\u1ea5t k\u1ef3 \u0111\u00e2u.<\/p>\n<p>Trong ph\u1ea7n n\u00e0y, b\u1ea1n s\u1ebd t\u1ea3i xu\u1ed1ng v\u00e0 c\u00e0i \u0111\u1eb7t g\u00f3i Chef Workstation, cung c\u1ea5p t\u1ea5t c\u1ea3 c\u00e1c c\u00f4ng c\u1ee5 c\u00f3 trong&nbsp;<a href=\"https:\/\/docs.chef.io\/about_chefdk.html\" target=\"_blank\" rel=\"noreferrer noopener\">ChefDK<\/a>&nbsp;, b\u1ed9 c\u00f4ng c\u1ee5 ph\u00e1t tri\u1ec3n c\u1ee7a Chef.<\/p>\n<h3 id=\"setting-up-a-workstation\">Thi\u1ebft l\u1eadp m\u1ed9t m\u00e1y tr\u1ea1m<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#setting-up-a-workstation\"><\/a><\/h3>\n<p>1.<a href=\"https:\/\/downloads.chef.io\/chef-workstation\/0.2.43#ubuntu\" target=\"_blank\" rel=\"noreferrer noopener\">T\u1ea3i xu\u1ed1ng Chef Workstation m\u1edbi nh\u1ea5t<\/a>&nbsp;:<\/p>\n<pre class=\"wp-block-code\"><code>wget  https:\/\/packages.chef.io\/files\/stable\/chef-workstation\/0.2.43\/ubuntu\/18.04\/chef-workstation_0.2.43-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\n<\/code><\/pre>\n<p>3.X\u00f3a t\u1ec7p c\u00e0i \u0111\u1eb7t:<\/p>\n<pre class=\"wp-block-code\"><code>rm chef-workstation_*.deb<\/code><\/pre>\n<p>4.T\u1ea1o kho l\u01b0u tr\u1eef Chef c\u1ee7a b\u1ea1n.&nbsp;<code>chef-repo<\/code>Th\u01b0 m\u1ee5c n\u00e0y s\u1ebd l\u01b0u tr\u1eef s\u00e1ch d\u1ea1y n\u1ea5u \u0103n Chef v\u00e0 c\u00e1c t\u1ec7p li\u00ean quan kh\u00e1c.<\/p>\n<pre class=\"wp-block-code\"><code>chef generate repo chef-repo\n<\/code><\/pre>\n<p>5.\u0110\u1ea3m b\u1ea3o r\u1eb1ng t\u1ec7p c\u1ee7a m\u00e1y tr\u1ea1m c\u1ee7a b\u1ea1n&nbsp;<code>\/etc\/hosts<\/code>\u00e1nh x\u1ea1 \u0111\u1ecba ch\u1ec9 IP c\u1ee7a n\u00f3 t\u1edbi t\u00ean mi\u1ec1n \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n c\u1ee7a m\u00e1y ch\u1ee7 Chef v\u00e0 t\u00ean m\u00e1y ch\u1ee7 m\u00e1y tr\u1ea1m. V\u00ed d\u1ee5:<\/p>\n<pre class=\"wp-block-code\"><code>127.0.0.1 localhost\n192.0.1.0 example.com\n192.0.2.0 workstation\n...<\/code><\/pre>\n<p>6.T\u1ea1o m\u1ed9t&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c con.&nbsp;<code>.chef<\/code>Th\u01b0 m\u1ee5c con s\u1ebd l\u01b0u tr\u1eef t\u1ec7p c\u1ea5u h\u00ecnh&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/beginners-guide-chef\/#knife\">Knife<\/a>&nbsp;v\u00e0&nbsp;<code>.pem<\/code>c\u00e1c t\u1ec7p \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e1c th\u1ef1c c\u1eb7p kh\u00f3a RSA v\u1edbi m\u00e1y ch\u1ee7 Chef. Di chuy\u1ec3n v\u00e0o th\u01b0&nbsp;<code>chef-repo<\/code>m\u1ee5c:<\/p>\n<pre class=\"wp-block-code\"><code> mkdir ~\/chef-repo\/.chef\n cd chef-repo<\/code><\/pre>\n<h3 id=\"add-the-rsa-private-keys\">Th\u00eam kh\u00f3a ri\u00eang RSA<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#add-the-rsa-private-keys\"><\/a><\/h3>\n<p>X\u00e1c th\u1ef1c gi\u1eefa m\u00e1y ch\u1ee7 Chef v\u00e0 m\u00e1y tr\u1ea1m v\u00e0\/ho\u1eb7c c\u00e1c n\u00fat \u0111\u01b0\u1ee3c ho\u00e0n t\u1ea5t b\u1eb1ng m\u00e3 h\u00f3a kh\u00f3a c\u00f4ng khai. \u0110i\u1ec1u n\u00e0y \u0111\u1ea3m b\u1ea3o r\u1eb1ng m\u00e1y ch\u1ee7 Chef ch\u1ec9 giao ti\u1ebfp v\u1edbi c\u00e1c m\u00e1y \u0111\u00e1ng tin c\u1eady. Trong ph\u1ea7n n\u00e0y, kh\u00f3a ri\u00eang RSA \u0111\u01b0\u1ee3c t\u1ea1o khi thi\u1ebft l\u1eadp m\u00e1y ch\u1ee7 Chef s\u1ebd \u0111\u01b0\u1ee3c sao ch\u00e9p v\u00e0o m\u00e1y tr\u1ea1m \u0111\u1ec3 cho ph\u00e9p giao ti\u1ebfp gi\u1eefa m\u00e1y ch\u1ee7 Chef v\u00e0 m\u00e1y tr\u1ea1m.<\/p>\n<p>1.N\u1ebfu b\u1ea1n ch\u01b0a c\u00f3 c\u1eb7p kh\u00f3a RSA tr\u00ean m\u00e1y tr\u1ea1m c\u1ee7a m\u00ecnh, h\u00e3y t\u1ea1o m\u1ed9t c\u1eb7p. C\u1eb7p kh\u00f3a n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 truy c\u1eadp v\u00e0o m\u00e1y ch\u1ee7 Chef v\u00e0 sau \u0111\u00f3 chuy\u1ec3n&nbsp;<code>.pem<\/code>c\u00e1c t\u1ec7p c\u1ee7a h\u1ecd:<code> <\/code><\/p>\n<pre class=\"wp-block-code\"><code><code>ssh-keygen -b 4096<\/code><\/code><\/pre>\n<p>Nh\u1ea5n&nbsp;<strong>Enter<\/strong>&nbsp;\u0111\u1ec3 s\u1eed d\u1ee5ng t\u00ean m\u1eb7c \u0111\u1ecbnh&nbsp;<code>id_rsa<\/code>v\u00e0&nbsp;<code>id_rsa.pub<\/code>nh\u1eadp&nbsp;<code>\/home\/your_username\/.ssh<\/code>tr\u01b0\u1edbc khi nh\u1eadp m\u1eadt kh\u1ea9u.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: N\u1ebfu b\u1ea1n \u0111\u00e3 t\u1eaft x\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u SSH tr\u00ean Linode c\u1ee7a m\u00e1y ch\u1ee7 Chef, theo khuy\u1ebfn ngh\u1ecb c\u1ee7a h\u01b0\u1edbng d\u1eabn&nbsp;<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<\/a>&nbsp;, h\u00e3y b\u1eadt l\u1ea1i x\u00e1c th\u1ef1c m\u1eadt kh\u1ea9u SSH tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n c\u00e1c b\u01b0\u1edbc n\u00e0y. H\u00e3y \u0111\u1ea3m b\u1ea3o t\u1eaft l\u1ea1i sau khi b\u1ea1n \u0111\u00e3 th\u00eam kh\u00f3a ssh c\u00f4ng khai c\u1ee7a m\u00e1y tr\u1ea1m v\u00e0o Linode c\u1ee7a m\u00e1y ch\u1ee7 Chef.<\/p>\n<p>T\u1ea3i kh\u00f3a c\u00f4ng khai c\u1ee7a m\u00e1y tr\u1ea1m c\u1ee7a b\u1ea1n l\u00ean Linode l\u01b0u tr\u1eef m\u00e1y ch\u1ee7 Chef. \u0110\u1ea3m b\u1ea3o b\u1ea1n thay th\u1ebf&nbsp;<code>example_user<\/code>b\u1eb1ng t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng c\u1ee7a m\u00e1y ch\u1ee7 Chef v\u00e0&nbsp;<code>192.0.2.0<\/code>b\u1eb1ng \u0111\u1ecba ch\u1ec9 IP c\u1ee7a n\u00f3:<\/p>\n<pre class=\"wp-block-code\"><code>ssh-copy-id example_user@192.0.2.0\n<\/code><\/pre>\n<p>2.Sao ch\u00e9p&nbsp;<code>.pem<\/code>c\u00e1c t\u1eadp tin t\u1eeb m\u00e1y ch\u1ee7 Chef c\u1ee7a b\u1ea1n \u0111\u1ebfn m\u00e1y tr\u1ea1m c\u1ee7a b\u1ea1n b\u1eb1ng&nbsp;<code>scp<\/code>l\u1ec7nh. Thay th\u1ebf&nbsp;<code>user<\/code>b\u1eb1ng t\u00ean ng\u01b0\u1eddi d\u00f9ng th\u00edch h\u1ee3p v\u00e0&nbsp;<code>192.0.2.0<\/code>b\u1eb1ng IP c\u1ee7a m\u00e1y ch\u1ee7 Chef c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>scp example_user@192.0.2.0:~\/.chef\/*.pem ~\/chef-repo\/.chef\/<\/code><\/pre>\n<p>3.X\u00e1c nh\u1eadn c\u00e1c t\u1eadp tin \u0111\u00e3 \u0111\u01b0\u1ee3c sao ch\u00e9p th\u00e0nh c\u00f4ng b\u1eb1ng c\u00e1ch li\u1ec7t k\u00ea n\u1ed9i dung c\u1ee7a&nbsp;<code>.chef<\/code>th\u01b0 m\u1ee5c:<\/p>\n<pre class=\"wp-block-code\"><code>ls ~\/chef-repo\/.chef\n<\/code><\/pre>\n<p>C\u00e1c t\u1eadp tin c\u1ee7a b\u1ea1n&nbsp;<code>.pem<\/code>s\u1ebd \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea.<\/p>\n<h3 id=\"add-version-control\">Th\u00eam Ki\u1ec3m so\u00e1t Phi\u00ean b\u1ea3n<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#add-version-control\"><\/a><\/h3>\n<p>M\u00e1y tr\u1ea1m \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ea1o, t\u1ea3i xu\u1ed1ng v\u00e0 ch\u1ec9nh s\u1eeda s\u00e1ch d\u1ea1y n\u1ea5u \u0103n v\u00e0 c\u00e1c t\u1ec7p li\u00ean quan kh\u00e1c. B\u1ea1n n\u00ean theo d\u00f5i m\u1ecdi thay \u0111\u1ed5i \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n \u0111\u1ed1i v\u1edbi c\u00e1c t\u1ec7p n\u00e0y b\u1eb1ng ph\u1ea7n m\u1ec1m ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n, nh\u01b0 Git. M\u00e1y tr\u1ea1m Chef th\u00eam th\u00e0nh ph\u1ea7n Git v\u00e0o m\u00e1y tr\u1ea1m c\u1ee7a b\u1ea1n v\u00e0 kh\u1edfi t\u1ea1o kho l\u01b0u tr\u1eef Git trong th\u01b0 m\u1ee5c n\u01a1i t\u1ec7p&nbsp;<code>chef-repo<\/code>\u0111\u01b0\u1ee3c t\u1ea1o. C\u1ea5u h\u00ecnh Git b\u1eb1ng c\u00e1ch th\u00eam t\u00ean ng\u01b0\u1eddi d\u00f9ng v\u00e0 email c\u1ee7a b\u1ea1n, sau \u0111\u00f3 th\u00eam v\u00e0 cam k\u1ebft m\u1ecdi t\u1ec7p m\u1edbi \u0111\u01b0\u1ee3c t\u1ea1o trong c\u00e1c b\u01b0\u1edbc tr\u00ean.<\/p>\n<p>1.C\u1ea5u h\u00ecnh Git b\u1eb1ng c\u00e1ch th\u00eam t\u00ean ng\u01b0\u1eddi d\u00f9ng v\u00e0 email c\u1ee7a b\u1ea1n, thay th\u1ebf c\u00e1c gi\u00e1 tr\u1ecb c\u1ea7n thi\u1ebft:<\/p>\n<pre class=\"wp-block-code\"><code>git config --global user.name yourname\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\u1eadp tin:<\/p>\n<pre class=\"wp-block-code\"><code>echo \".chef\" &gt; ~\/chef-repo\/.gitignore\n<\/code><\/pre>\n<p>3.Di chuy\u1ec3n v\u00e0o&nbsp;<code>~\/chef-repo<\/code>th\u01b0 m\u1ee5c n\u1ebfu b\u1ea1n ch\u01b0a v\u00e0o \u0111\u00f3 v\u00e0 th\u00eam v\u00e0 cam k\u1ebft t\u1ea5t c\u1ea3 c\u00e1c t\u1ec7p hi\u1ec7n c\u00f3:<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/chef-repo\ngit add .\ngit commit -m \"initial commit\"<\/code><\/pre>\n<p>4.\u0110\u1ea3m b\u1ea3o th\u01b0 m\u1ee5c s\u1ea1ch:<\/p>\n<pre class=\"wp-block-code\"><code>git status\n<\/code><\/pre>\n<p>N\u00f3 s\u1ebd cho ra k\u1ebft qu\u1ea3:<\/p>\n<pre class=\"wp-block-code\"><code>On branch master\nnothing to commit, working directory clean<\/code><\/pre>\n<h2 id=\"generate-your-first-cookbook\">T\u1ea1o First Cookbook c\u1ee7a b\u1ea1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#generate-your-first-cookbook\"><\/a><\/h2>\n<p>T\u1ea1o m\u1ed9t s\u00e1ch d\u1ea1y n\u1ea5u \u0103n m\u1edbi c\u1ee7a Chef:<code> <\/code><\/p>\n<pre class=\"wp-block-code\"><code>chef generate cookbook my_cookbook<\/code><\/pre>\n<h3 id=\"configure-knife\">C\u1ea5u h\u00ecnh Knife<\/h3>\n<p>1.T\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh dao b\u1eb1ng c\u00e1ch \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn&nbsp;<code>~\/chef-repo\/.chef<\/code>th\u01b0 m\u1ee5c c\u1ee7a b\u1ea1n v\u00e0 t\u1ea1o t\u1ec7p c\u00f3 t\u00ean&nbsp;<code>config.rb<\/code>b\u1eb1ng tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n b\u1ea1n th\u00edch.<\/p>\n<p>2.Sao ch\u00e9p c\u1ea5u h\u00ecnh sau v\u00e0o&nbsp;<code>config.rb<\/code>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           \"ORGANIZATION-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.Thay \u0111\u1ed5i nh\u1eefng m\u1ee5c sau:<\/p>\n<ul>\n<li>Gi\u00e1 tr\u1ecb&nbsp;<code>node_name<\/code>ph\u1ea3i l\u00e0 t\u00ean ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c t\u1ea1o tr\u00ean m\u00e1y ch\u1ee7 Chef.<\/li>\n<li>Thay \u0111\u1ed5i&nbsp;<code>USER.pem<\/code>b\u00ean d\u01b0\u1edbi&nbsp;<code>client_key<\/code>\u0111\u1ec3 ph\u1ea3n \u00e1nh&nbsp;<code>.pem<\/code>t\u1ec7p c\u1ee7a b\u1ea1n cho ng\u01b0\u1eddi d\u00f9ng.<\/li>\n<li>N\u00ean&nbsp;<code>validation_client_name<\/code>l\u00e0 t\u1ed5 ch\u1ee9c c\u1ee7a b\u1ea1n&nbsp;<code>ORG_NAME<\/code>theo sau l\u00e0&nbsp;<code>-validator<\/code>.<\/li>\n<li><code>ORGANIZATION-validator.pem<\/code>trong&nbsp;<code>validation_key<\/code>\u0111\u01b0\u1eddng d\u1eabn ph\u1ea3i \u0111\u01b0\u1ee3c \u0111\u1eb7t theo&nbsp;<code>ORG_NAME<\/code>sau b\u1edfi&nbsp;<code>-validator.pem<\/code>.<\/li>\n<li>Cu\u1ed1i c\u00f9ng&nbsp;<code>chef_server_url<\/code>ph\u1ea3i l\u00e0 t\u00ean mi\u1ec1n c\u1ee7a m\u00e1y ch\u1ee7 Chef \u0111\u01b0\u1ee3c&nbsp;<code>\/organizations\/ORG_NAME<\/code>th\u00eam v\u00e0o. H\u00e3y nh\u1edb thay th\u1ebf&nbsp;<code>ORG_NAME<\/code>b\u1eb1ng t\u00ean t\u1ed5 ch\u1ee9c c\u1ee7a b\u1ea1n.<\/li>\n<\/ul>\n<p>4.Di chuy\u1ec3n \u0111\u1ebfn&nbsp;<code>chef-repo<\/code>th\u01b0 m\u1ee5c v\u00e0 sao ch\u00e9p c\u00e1c ch\u1ee9ng ch\u1ec9 SSL c\u1ea7n thi\u1ebft t\u1eeb m\u00e1y ch\u1ee7:<\/p>\n<pre class=\"wp-block-code\"><code>cd ..\nknife ssl fetch<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: Ch\u1ee9ng ch\u1ec9 SSL \u0111\u01b0\u1ee3c t\u1ea1o trong qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t m\u00e1y ch\u1ee7 Chef. C\u00e1c ch\u1ee9ng ch\u1ec9 n\u00e0y \u0111\u01b0\u1ee3c t\u1ef1 k\u00fd, ngh\u0129a l\u00e0 kh\u00f4ng c\u00f3 c\u01a1 quan c\u1ea5p ch\u1ee9ng ch\u1ec9 k\u00fd (CA) n\u00e0o \u0111\u1ec3 x\u00e1c minh. T\u00ean m\u00e1y ch\u1ee7 v\u00e0 FQDN c\u1ee7a m\u00e1y ch\u1ee7 Chef ph\u1ea3i gi\u1ed1ng nhau \u0111\u1ec3 m\u00e1y tr\u1ea1m c\u00f3 th\u1ec3 l\u1ea5y v\u00e0 x\u00e1c minh ch\u1ee9ng ch\u1ec9 SSL. B\u1ea1n c\u00f3 th\u1ec3 x\u00e1c minh t\u00ean m\u00e1y ch\u1ee7 v\u00e0 FQDN c\u1ee7a m\u00e1y ch\u1ee7 Chef b\u1eb1ng c\u00e1ch ch\u1ea1y&nbsp;<code>hostname<\/code> v\u00e0&nbsp;<code>hostname -f<\/code>, t\u01b0\u01a1ng \u1ee9ng. Tham kh\u1ea3o&nbsp;<a href=\"https:\/\/docs.chef.io\/server_security.html#regenerate-certificates\" target=\"_blank\" rel=\"noreferrer noopener\">t\u00e0i li\u1ec7u c\u1ee7a Chef<\/a>&nbsp;\u0111\u1ec3 bi\u1ebft chi ti\u1ebft v\u1ec1 c\u00e1ch t\u1ea1o l\u1ea1i ch\u1ee9ng ch\u1ec9 SSL.<\/p>\n<p>5.X\u00e1c nh\u1eadn&nbsp;<code>config.rb<\/code>thi\u1ebft l\u1eadp \u0111\u00e3 \u0111\u00fang ch\u01b0a b\u1eb1ng c\u00e1ch ch\u1ea1y danh s\u00e1ch m\u00e1y kh\u00e1ch:<\/p>\n<pre class=\"wp-block-code\"><code>knife client list\n<\/code><\/pre>\n<p>L\u1ec7nh n\u00e0y s\u1ebd xu\u1ea5t ra t\u00ean tr\u00ecnh x\u00e1c th\u1ef1c.<\/p>\n<p>B\u00e2y gi\u1edd m\u00e1y ch\u1ee7 v\u00e0 m\u00e1y tr\u1ea1m Chef c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh, b\u1ea1n c\u00f3 th\u1ec3 kh\u1edfi \u0111\u1ed9ng n\u00fat \u0111\u1ea7u ti\u00ean.<\/p>\n<h2 id=\"bootstrap-a-node\">Kh\u1edfi \u0111\u1ed9ng m\u1ed9t node<\/h2>\n<p>Kh\u1edfi \u0111\u1ed9ng m\u1ed9t n\u00fat s\u1ebd c\u00e0i \u0111\u1eb7t Chef client tr\u00ean n\u00fat v\u00e0 x\u00e1c th\u1ef1c n\u00fat. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p n\u00fat \u0111\u1ecdc t\u1eeb m\u00e1y ch\u1ee7 Chef v\u00e0 k\u00e9o xu\u1ed1ng v\u00e0 \u00e1p d\u1ee5ng b\u1ea5t k\u1ef3 b\u1ea3n c\u1eadp nh\u1eadt c\u1ea5u h\u00ecnh c\u1ea7n thi\u1ebft n\u00e0o \u0111\u01b0\u1ee3c chef-client ph\u00e1t hi\u1ec7n.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: N\u1ebfu b\u1ea1n g\u1eb7p b\u1ea5t k\u1ef3&nbsp;<code>401 Unauthorized<\/code> l\u1ed7i n\u00e0o, h\u00e3y \u0111\u1ea3m b\u1ea3o r\u1eb1ng&nbsp;<code>ORGANIZATION.pem<\/code>t\u1ec7p c\u1ee7a b\u1ea1n c\u00f3&nbsp;<code>700<\/code>quy\u1ec1n. Xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/docs.chef.io\/errors.html\" target=\"_blank\" rel=\"noreferrer noopener\">kh\u1eafc ph\u1ee5c s\u1ef1 c\u1ed1 c\u1ee7a Chef<\/a>&nbsp;\u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 ch\u1ea9n \u0111o\u00e1n l\u1ed7i x\u00e1c th\u1ef1c.<\/p>\n<p>1.C\u1eadp nh\u1eadt&nbsp;<code>\/etc\/hosts<\/code>t\u1ec7p tr\u00ean&nbsp;<em>n\u00fat<\/em>&nbsp;\u0111\u1ec3 x\u00e1c \u0111\u1ecbnh n\u00fat, t\u00ean mi\u1ec1n c\u1ee7a m\u00e1y ch\u1ee7 Chef v\u00e0 m\u00e1y tr\u1ea1m.<\/p>\n<pre class=\"wp-block-code\"><code>127.0.0.1 localhost\n198.51.100.0 node-hostname\n192.0.2.0 workstation\n192.0.1.0 example.com\n...\n<\/code><\/pre>\n<p>2.T\u1eeb&nbsp;<em>m\u00e1y tr\u1ea1m<\/em>&nbsp;c\u1ee7a b\u1ea1n , h\u00e3y \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn&nbsp;<code>~\/chef-repo\/.chef<\/code>th\u01b0 m\u1ee5c:<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/chef-repo\/.chef\n<\/code><\/pre>\n<p>3.Kh\u1edfi \u0111\u1ed9ng n\u00fat m\u00e1y kh\u00e1ch b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng ng\u01b0\u1eddi d\u00f9ng g\u1ed1c c\u1ee7a n\u00fat m\u00e1y kh\u00e1ch ho\u1eb7c ng\u01b0\u1eddi d\u00f9ng c\u00f3 quy\u1ec1n cao h\u01a1n:<\/p>\n<ul>\n<li><strong>V\u1edbi t\u01b0 c\u00e1ch l\u00e0 ng\u01b0\u1eddi d\u00f9ng g\u1ed1c c\u1ee7a n\u00fat<\/strong>&nbsp;, h\u00e3y \u0111\u1ed5i&nbsp;<code>password<\/code>m\u1eadt kh\u1ea9u g\u1ed1c v\u00e0&nbsp;<code>nodename<\/code>t\u00ean mong mu\u1ed1n cho n\u00fat m\u00e1y kh\u00e1ch c\u1ee7a b\u1ea1n. B\u1ea1n c\u00f3 th\u1ec3 b\u1ecf qua m\u1ee5c n\u00e0y n\u1ebfu b\u1ea1n mu\u1ed1n t\u00ean m\u1eb7c \u0111\u1ecbnh l\u00e0 t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a n\u00fat:<code> knife bootstrap 192.0.2.0 -x root -P password --node-name nodename<\/code><\/li>\n<li><strong>V\u1edbi t\u01b0 c\u00e1ch l\u00e0 ng\u01b0\u1eddi d\u00f9ng c\u00f3 quy\u1ec1n sudo<\/strong>&nbsp;, h\u00e3y \u0111\u1ed5i&nbsp;<code>username<\/code>th\u00e0nh ng\u01b0\u1eddi d\u00f9ng n\u00fat,&nbsp;<code>password<\/code>m\u1eadt kh\u1ea9u ng\u01b0\u1eddi d\u00f9ng v\u00e0&nbsp;<code>nodename<\/code>t\u00ean mong mu\u1ed1n cho n\u00fat m\u00e1y kh\u00e1ch. B\u1ea1n c\u00f3 th\u1ec3 b\u1ecf qua m\u1ee5c n\u00e0y n\u1ebfu b\u1ea1n mu\u1ed1n t\u00ean m\u1eb7c \u0111\u1ecbnh l\u00e0 t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a n\u00fat:<code> knife bootstrap 192.0.2.0 -x username -P password --use-sudo-password --node-name nodename<\/code><\/li>\n<li><strong>V\u1edbi t\u01b0 c\u00e1ch l\u00e0 ng\u01b0\u1eddi d\u00f9ng c\u00f3 x\u00e1c th\u1ef1c c\u1eb7p kh\u00f3a<\/strong>&nbsp;, h\u00e3y thay \u0111\u1ed5i&nbsp;<code>username<\/code>th\u00e0nh ng\u01b0\u1eddi d\u00f9ng n\u00fat v\u00e0&nbsp;<code>nodename<\/code>t\u00ean mong mu\u1ed1n cho n\u00fat m\u00e1y kh\u00e1ch. B\u1ea1n c\u00f3 th\u1ec3 b\u1ecf m\u1ee5c n\u00e0y n\u1ebfu b\u1ea1n mu\u1ed1n t\u00ean m\u1eb7c \u0111\u1ecbnh l\u00e0 t\u00ean m\u00e1y ch\u1ee7 c\u1ee7a n\u00fat m\u00e1y kh\u00e1ch:<code> knife bootstrap 192.0.2.0 --ssh-user username --sudo --identity-file ~\/.ssh\/id_<\/code><\/li>\n<\/ul>\n<p>4.X\u00e1c nh\u1eadn r\u1eb1ng n\u00fat \u0111\u00e3 \u0111\u01b0\u1ee3c kh\u1edfi \u0111\u1ed9ng b\u1eb1ng c\u00e1ch li\u1ec7t k\u00ea c\u00e1c n\u00fat m\u00e1y kh\u00e1ch:<\/p>\n<pre class=\"wp-block-code\"><code>knife client list\n<\/code><\/pre>\n<p>N\u00fat m\u00e1y kh\u00e1ch m\u1edbi c\u1ee7a b\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c \u0111\u01b0a v\u00e0o danh s\u00e1ch.<\/p>\n<p>5.Th\u00eam n\u00fat kh\u1edfi \u0111\u1ed9ng v\u00e0o&nbsp;<code>\/etc\/hosts<\/code>t\u1ec7p m\u00e1y tr\u1ea1m c\u1ee7a b\u1ea1n. Thay th\u1ebf&nbsp;<code>node-hostname<\/code>b\u1eb1ng t\u00ean m\u00e1y ch\u1ee7 m\u00e0 b\u1ea1n v\u1eeba g\u00e1n cho n\u00fat khi n\u00f3 \u0111\u01b0\u1ee3c 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 workstation\n198.51.100.0 node-hostname\n...\n<\/code><\/pre>\n<h2 id=\"download-a-cookbook-optional\">T\u1ea3i xu\u1ed1ng Cookbook (T\u00f9y ch\u1ecdn)<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/#download-a-cookbook-optional\"><\/a><\/h2>\n<p>Khi s\u1eed d\u1ee5ng Chef, Chef client s\u1ebd ch\u1ea1y \u0111\u1ecbnh k\u1ef3 tr\u00ean c\u00e1c n\u00fat c\u1ee7a b\u1ea1n v\u00e0 k\u00e9o xu\u1ed1ng b\u1ea5t k\u1ef3 thay \u0111\u1ed5i n\u00e0o \u0111\u01b0\u1ee3c \u0111\u1ea9y l\u00ean m\u00e1y ch\u1ee7 Chef t\u1eeb m\u00e1y tr\u1ea1m c\u1ee7a b\u1ea1n. B\u1ea1n c\u0169ng s\u1ebd mu\u1ed1n t\u1ec7p&nbsp;<code>validation.pem<\/code>\u0111\u01b0\u1ee3c t\u1ea3i l\u00ean n\u00fat c\u1ee7a m\u00ecnh khi kh\u1edfi \u0111\u1ed9ng \u0111\u01b0\u1ee3c x\u00f3a v\u00ec m\u1ee5c \u0111\u00edch b\u1ea3o m\u1eadt. M\u1eb7c d\u00f9 c\u00e1c b\u01b0\u1edbc n\u00e0y c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n th\u1ee7 c\u00f4ng, nh\u01b0ng th\u01b0\u1eddng d\u1ec5 d\u00e0ng v\u00e0 hi\u1ec7u qu\u1ea3 h\u01a1n khi thi\u1ebft l\u1eadp ch\u00fang d\u01b0\u1edbi d\u1ea1ng s\u1ed5 tay h\u01b0\u1edbng d\u1eabn.<\/p>\n<p>Ph\u1ea7n n\u00e0y l\u00e0 t\u00f9y ch\u1ecdn nh\u01b0ng cung c\u1ea5p h\u01b0\u1edbng d\u1eabn v\u1ec1 c\u00e1ch t\u1ea3i s\u00e1ch d\u1ea1y n\u1ea5u \u0103n xu\u1ed1ng m\u00e1y tr\u1ea1m c\u1ee7a b\u1ea1n v\u00e0 \u0111\u1ea9y l\u00ean m\u00e1y ch\u1ee7, \u0111\u1ed3ng th\u1eddi bao g\u1ed3m ph\u1ea7n c\u1ed1t l\u00f5i c\u1ee7a s\u00e1ch d\u1ea1y n\u1ea5u \u0103n c\u01a1 b\u1ea3n \u0111\u1ec3 m\u1edf r\u1ed9ng v\u00e0 th\u1eed nghi\u1ec7m.<\/p>\n<p>1.T\u1eeb&nbsp;<em>m\u00e1y tr\u1ea1m<\/em>&nbsp;c\u1ee7a b\u1ea1n , h\u00e3y \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn&nbsp;<code>~\/chef-repo\/.chef<\/code>th\u01b0 m\u1ee5c:<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\/chef-repo\/.chef\n<\/code><\/pre>\n<p>2.T\u1ea3i xu\u1ed1ng s\u00e1ch h\u01b0\u1edbng d\u1eabn n\u1ea5u \u0103n v\u00e0 c\u00e1c ph\u1ee5 thu\u1ed9c:<\/p>\n<pre class=\"wp-block-code\"><code>knife cookbook site install cron-delvalidate\n<\/code><\/pre>\n<p>3.M\u1edf&nbsp;<code>default.rb<\/code>t\u1ec7p \u0111\u1ec3 ki\u1ec3m tra c\u00f4ng th\u1ee9c n\u1ea5u \u0103n m\u1eb7c \u0111\u1ecbnh:<\/p>\n<pre class=\"wp-block-code\"><code>#\n# Cookbook Name:: cron-delvalidate\n# Recipe:: Chef-Client Cron &amp; Delete Validation.pem\n#\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>T\u00e0i&nbsp;<code>cron \"clientrun\" do<\/code>nguy\u00ean \u0111\u1ecbnh ngh\u0129a h\u00e0nh \u0111\u1ed9ng cron. N\u00f3 \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp \u0111\u1ec3 ch\u1ea1y h\u00e0nh&nbsp;<code>chef-client<\/code>\u0111\u1ed9ng (&nbsp;<code>\/usr\/bin\/chef-client<\/code>) m\u1ed7i gi\u1edd (&nbsp;<code>*\/1<\/code>v\u1edbi&nbsp;<code>*\/<\/code>\u0111\u1ecbnh ngh\u0129a l\u00e0 m\u1ed7i gi\u1edd ch\u1ee9 kh\u00f4ng ph\u1ea3i 1 gi\u1edd s\u00e1ng h\u00e0ng ng\u00e0y).&nbsp;<code>action<\/code>M\u00e3 bi\u1ec3u th\u1ecb r\u1eb1ng Chef \u0111ang&nbsp;<em>t\u1ea1o<\/em>&nbsp;m\u1ed9t cronjob m\u1edbi.<\/p>\n<p><code>file \"\/etc\/chef\/validation.pem\" do<\/code>g\u1ecdi \u0111\u1ebfn&nbsp;<code>validation.pem<\/code>t\u1ec7p. X\u00e1c&nbsp;<code>action<\/code>\u0111\u1ecbnh r\u1eb1ng t\u1ec7p s\u1ebd b\u1ecb x\u00f3a (&nbsp;<code>:delete<\/code>).<\/p>\n<p>\u0110\u00e2y l\u00e0 hai b\u1ed9 m\u00e3 r\u1ea5t c\u01a1 b\u1ea3n \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng Ruby cung c\u1ea5p v\u00ed d\u1ee5 v\u1ec1 c\u1ea5u tr\u00fac m\u00e3 s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng khi t\u1ea1o s\u00e1ch d\u1ea1y n\u1ea5u \u0103n Chef. Nh\u1eefng v\u00ed d\u1ee5 n\u00e0y c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c ch\u1ec9nh s\u1eeda v\u00e0 m\u1edf r\u1ed9ng khi c\u1ea7n.<\/p>\n<p>4.Th\u00eam c\u00f4ng th\u1ee9c v\u00e0o danh s\u00e1ch ch\u1ea1y c\u1ee7a n\u00fat, thay th\u1ebf&nbsp;<code>nodename<\/code>b\u1eb1ng t\u00ean n\u00fat c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>knife node run_list add nodename 'recipe&#91;cron-delvalidate::default]'<\/code><\/pre>\n<p>5.\u0110\u1ea9y s\u00e1ch d\u1ea1y n\u1ea5u \u0103n l\u00ean m\u00e1y ch\u1ee7 Chef:<\/p>\n<pre class=\"wp-block-code\"><code>knife cookbook upload cron-delvalidate\n<\/code><\/pre>\n<p>L\u1ec7nh n\u00e0y c\u0169ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng khi c\u1eadp nh\u1eadt s\u00e1ch d\u1ea1y n\u1ea5u \u0103n.<\/p>\n<p>6.S\u1eed d\u1ee5ng&nbsp;<code>knife-ssh<\/code>\u0111\u1ec3 ch\u1ea1y&nbsp;<code>chef-client<\/code>l\u1ec7nh tr\u00ean n\u00fat c\u1ee7a b\u1ea1n. Thay th\u1ebf&nbsp;<code>nodename<\/code>b\u1eb1ng t\u00ean n\u00fat c\u1ee7a b\u1ea1n. N\u1ebfu b\u1ea1n \u0111\u00e3 thi\u1ebft l\u1eadp n\u00fat c\u1ee7a m\u00ecnh b\u1eb1ng t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng gi\u1edbi h\u1ea1n, h\u00e3y thay th\u1ebf&nbsp;<code>-x root<\/code>b\u1eb1ng t\u00ean ng\u01b0\u1eddi d\u00f9ng ch\u00ednh x\u00e1c, v\u00ed d\u1ee5&nbsp;<code>-x username<\/code>: .<\/p>\n<pre class=\"wp-block-code\"><code>knife ssh 'name:nodename' 'sudo chef-client' -x root<\/code><\/pre>\n<p>C\u00e1c c\u00f4ng th\u1ee9c trong danh s\u00e1ch ch\u1ea1y s\u1ebd \u0111\u01b0\u1ee3c k\u00e9o t\u1eeb m\u00e1y ch\u1ee7 v\u00e0 ch\u1ea1y tr\u00ean n\u00fat. Trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, \u0111\u00f3 s\u1ebd l\u00e0 c\u00f4ng&nbsp;<code>cron-delvalidate<\/code>th\u1ee9c. C\u00f4ng th\u1ee9c n\u00e0y \u0111\u1ea3m b\u1ea3o r\u1eb1ng b\u1ea5t k\u1ef3 s\u1ed5 tay n\u1ea5u \u0103n n\u00e0o \u0111\u01b0\u1ee3c \u0111\u1ea9y l\u00ean Chef Server v\u00e0 \u0111\u01b0\u1ee3c th\u00eam v\u00e0o danh s\u00e1ch ch\u1ea1y c\u1ee7a n\u00fat s\u1ebd \u0111\u01b0\u1ee3c k\u00e9o xu\u1ed1ng c\u00e1c n\u00fat kh\u1edfi \u0111\u1ed9ng m\u1ed9t l\u1ea7n m\u1ed9t gi\u1edd. B\u01b0\u1edbc t\u1ef1 \u0111\u1ed9ng n\u00e0y lo\u1ea1i b\u1ecf vi\u1ec7c k\u1ebft n\u1ed1i v\u1edbi n\u00fat trong t\u01b0\u01a1ng lai \u0111\u1ec3 k\u00e9o xu\u1ed1ng c\u00e1c thay \u0111\u1ed5i.<\/p>\n<p>B\u00e2y gi\u1edd b\u1ea1n \u0111\u00e3 bi\u1ebft c\u00e1ch t\u1ea3i xu\u1ed1ng s\u1ed5 tay h\u01b0\u1edbng d\u1eabn c\u1ee7a Chef, th\u00eam s\u1ed5 tay h\u01b0\u1edbng d\u1eabn v\u00e0o danh s\u00e1ch ch\u1ea1y c\u1ee7a m\u1ed9t n\u00fat v\u00e0 \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh tr\u00ean m\u1ed9t n\u00fat, h\u00e3y c\u00e2n nh\u1eafc b\u1ea3o m\u1eadt n\u00fat do Chef qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n b\u1eb1ng c\u00e1c s\u1ed5 tay h\u01b0\u1edbng d\u1eabn sau:&nbsp;<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/users\" target=\"_blank\" rel=\"noreferrer noopener\">Ng\u01b0\u1eddi d\u00f9ng<\/a>&nbsp;v\u00e0&nbsp;<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/firewall\" target=\"_blank\" rel=\"noreferrer noopener\">T\u01b0\u1eddng l\u1eeda<\/a>&nbsp;.<\/p>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/install-a-chef-server-workstation-on-ubuntu-18-04\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chef&nbsp;l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh d\u1ef1a tr\u00ean Ruby \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 \u0111\u1ecbnh ngh\u0129a c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng d\u01b0\u1edbi d\u1ea1ng m\u00e3. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng t\u1ef1 \u0111\u1ed9ng h\u00f3a vi\u1ec7c qu\u1ea3n l\u00fd nhi\u1ec1u&nbsp;n\u00fat&nbsp;v\u00e0 duy tr\u00ec t\u00ednh nh\u1ea5t qu\u00e1n tr\u00ean c\u00e1c n\u00fat \u0111\u00f3.&nbsp;C\u00e1c c\u00f4ng th\u1ee9c&nbsp;khai b\u00e1o tr\u1ea1ng th\u00e1i mong mu\u1ed1n cho c\u00e1c<\/p>\n","protected":false},"author":1,"featured_media":35949,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131],"tags":[],"class_list":["post-34949","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\/34949","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=34949"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34949\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35949"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}