{"id":34981,"date":"2024-09-17T14:22:39","date_gmt":"2024-09-17T07:22:39","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/17\/getting-started-with-salt-basic-installation-and-setup\/"},"modified":"2024-09-17T14:22:39","modified_gmt":"2024-09-17T07:22:39","slug":"getting-started-with-salt-basic-installation-and-setup","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/17\/getting-started-with-salt-basic-installation-and-setup\/","title":{"rendered":"B\u1eaft \u0111\u1ea7u v\u1edbi Salt \u2013 C\u00e0i \u0111\u1eb7t v\u00e0 thi\u1ebft l\u1eadp c\u01a1 b\u1ea3n"},"content":{"rendered":"<p><a href=\"https:\/\/saltproject.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Salt<\/a>&nbsp;l\u00e0 m\u1ed9t n\u1ec1n t\u1ea3ng qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh d\u1ef1a tr\u00ean Python \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 \u0111i\u1ec1u khi\u1ec3n m\u1ed9t s\u1ed1 m\u00e1y ch\u1ee7 ph\u1ee5 (g\u1ecdi l\u00e0 Minion theo thu\u1eadt ng\u1eef c\u1ee7a Salt) t\u1eeb m\u1ed9t m\u00e1y ch\u1ee7 ch\u00ednh duy nh\u1ea5t. H\u01b0\u1edbng d\u1eabn n\u00e0y h\u01b0\u1edbng d\u1eabn b\u1ea1n c\u00e1ch c\u1ea5u h\u00ecnh Salt Master v\u00e0 Minion v\u00e0 li\u00ean quan \u0111\u1ebfn b\u1ea5t k\u1ef3 b\u1ea3n ph\u00e2n ph\u1ed1i Linux n\u00e0o \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3.<\/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\/getting-started-with-salt-basic-installation-and-setup\/#before-you-begin\"><\/a><\/h2>\n<ul>\n<li>B\u1ea1n s\u1ebd c\u1ea7n \u00edt nh\u1ea5t hai Linode: M\u1ed9t s\u1ebd ho\u1ea1t \u0111\u1ed9ng nh\u01b0 Salt Master v\u00e0 m\u1ed9t ho\u1eb7c nhi\u1ec1u c\u00e1i c\u00f2n l\u1ea1i s\u1ebd ho\u1ea1t \u0111\u1ed9ng nh\u01b0 Salt Minion.<\/li>\n<li><a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/set-up-and-secure\/#configure-a-custom-hostname\">\u0110\u1eb7t t\u00ean m\u00e1y ch\u1ee7<\/a>&nbsp;c\u1ee7a t\u1eebng Linode&nbsp;. T\u00ean m\u00e1y ch\u1ee7 s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh t\u1eebng Linode trong Salt n\u00ean h\u00e3y \u0111\u1eb7t t\u00ean c\u1ee5 th\u1ec3 (v\u00ed d\u1ee5: master, minion1, minion2, v.v.).<\/li>\n<li>Ch\u00fang t\u00f4i khuy\u00ean b\u1ea1n n\u00ean c\u1ea5u h\u00ecnh&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/manage-ip-addresses\/#adding-an-ip-address\">\u0111\u1ecba ch\u1ec9 IP ri\u00eang<\/a>&nbsp;cho t\u1eebng h\u1ec7 th\u1ed1ng n\u1ebfu Linode c\u1ee7a b\u1ea1n n\u1eb1m trong c\u00f9ng m\u1ed9t trung t\u00e2m d\u1eef li\u1ec7u.<\/li>\n<\/ul>\n<h2 id=\"install-using-salt-bootstrap\">C\u00e0i \u0111\u1eb7t b\u1eb1ng Salt Bootstrap<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#install-using-salt-bootstrap\"><\/a><\/h2>\n<p><a href=\"https:\/\/repo.saltproject.io\/#bootstrap\" target=\"_blank\" rel=\"noreferrer noopener\">Salt Bootstrap<\/a>&nbsp;l\u00e0 m\u1ed9t t\u1eadp l\u1ec7nh c\u1ea5u h\u00ecnh t\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n h\u1ec7 \u0111i\u1ec1u h\u00e0nh \u0111ang ch\u1ea1y, thi\u1ebft l\u1eadp kho l\u01b0u tr\u1eef ch\u00ednh x\u00e1c v\u00e0 c\u00e0i \u0111\u1eb7t Salt. T\u1eadp l\u1ec7nh c\u00e0i \u0111\u1eb7t \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 ch\u1ea1y tr\u00ean m\u00e1y ch\u1ee7 Salt v\u00e0 t\u1ea5t c\u1ea3 c\u00e1c m\u00e1y minion.<\/p>\n<p><strong><strong>Salt Master<\/strong><\/strong><\/p>\n<pre class=\"wp-block-code\"><code>curl -L https:\/\/bootstrap.saltproject.io -o install_salt.sh\nsudo sh install_salt.sh -P -M -N<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: C\u1edd n\u00e0y&nbsp;<code>-N<\/code>cho bi\u1ebft kh\u00f4ng n\u00ean c\u00e0i \u0111\u1eb7t&nbsp;<code>salt-minion<\/code>v\u00ec h\u1ec7 th\u1ed1ng n\u00e0y l\u00e0 Salt master.<\/p>\n<p><strong>Minion Salt <\/strong><\/p>\n<pre class=\"wp-block-code\"><code>curl -L https:\/\/bootstrap.saltproject.io -o install_salt.sh\nsudo sh install_salt.sh -P\n<\/code><\/pre>\n<h2 id=\"coordinate-network-addressing\">Ph\u1ed1i h\u1ee3p \u0110\u1ecba ch\u1ec9 M\u1ea1ng<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#coordinate-network-addressing\"><\/a><\/h2>\n<p><strong><strong>Salt Master<\/strong><\/strong><\/p>\n<p>1.B\u1ecf ch\u00fa th\u00edch&nbsp;<code>#interface:<\/code>d\u00f2ng g\u1ea7n \u0111\u1ea7u t\u1ec7p v\u00e0 thay th\u1ebf tr\u00ecnh gi\u1eef ch\u1ed7 \u0111\u1ecba ch\u1ec9 b\u1eb1ng \u0111\u1ecba ch\u1ec9 Linode c\u1ee7a Salt master c\u1ee7a b\u1ea1n. N\u1ebfu Linode c\u1ee7a b\u1ea1n n\u1eb1m trong c\u00f9ng m\u1ed9t trung t\u00e2m d\u1eef li\u1ec7u, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng \u0111\u1ecba ch\u1ec9 IP ri\u00eang c\u1ee7a Linode.<\/p>\n<pre class=\"wp-block-code\"><code># The address of the interface to bind to:\ninterface: 203.0.113.0<\/code><\/pre>\n<p>2.Kh\u1edfi \u0111\u1ed9ng l\u1ea1i Salt:<\/p>\n<pre class=\"wp-block-code\"><code>sudo systemctl restart salt-master\n<\/code><\/pre>\n<p><strong>Minion Salt <\/strong><\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: B\u01b0\u1edbc n\u00e0y ph\u1ea3i \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n tr\u00ean&nbsp;<em>m\u1ed7i<\/em>&nbsp;l\u00ednh Salt.<\/p>\n<p>B\u1ecf ch\u00fa th\u00edch&nbsp;<code>#master: salt<\/code>\u1edf g\u1ea7n \u0111\u1ea7u&nbsp;<code>\/etc\/salt\/minion<\/code>, v\u00e0 thay th\u1ebf&nbsp;<code>salt<\/code>b\u1eb1ng \u0111\u1ecba ch\u1ec9 IP c\u1ee7a m\u00e1y ch\u1ee7 Salt c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code># Set the location of the salt master server. If the master server cannot be\n# resolved, then the minion will fail to start.\nmaster: 203.0.113.0<\/code><\/pre>\n<h2 id=\"authenticate-minions-to-the-salt-master\">X\u00e1c th\u1ef1c Minions v\u1edbi Salt Master<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#authenticate-minions-to-the-salt-master\"><\/a><\/h2>\n<h3 id=\"get-salt-master-key-fingerprint\">Nh\u1eadn v\u00e2n tay Salt Master Key<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#get-salt-master-key-fingerprint\"><\/a><\/h3>\n<p>T\u1eeb Salt master, li\u1ec7t k\u00ea d\u1ea5u v\u00e2n tay ch\u00ednh c\u1ee7a n\u00f3 v\u00e0 t\u1ea5t c\u1ea3 Minion \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi n\u00f3 b\u1eb1ng d\u1ea5u v\u00e2n tay ch\u00ednh c\u1ee7a ch\u00fang:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt-key --finger-all\n<\/code><\/pre>\n<p>B\u1ea1n s\u1ebd th\u1ea5y t\u00ean m\u00e1y ch\u1ee7 minion ho\u1eb7c \u0111\u1ecba ch\u1ec9 IP \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea trong&nbsp;<em>Unaccepted Keys<\/em>&nbsp;v\u00e0 d\u1ea5u v\u00e2n tay SHA256 c\u1ee7a m\u1ed7i kh\u00f3a. T\u1ea1i \u0111\u00e2y, d\u1ea5u v\u00e2n tay \u0111\u01b0\u1ee3c c\u1eaft b\u1edbt \u0111\u1ec3&nbsp;<code>...<\/code>tr\u00e1nh l\u1ed9n x\u1ed9n.<\/p>\n<pre class=\"wp-block-code\"><code>Local Keys:\nmaster.pem:  e9:6a:86:bf...\nmaster.pub:  4b:2a:81:79...\nAccepted Keys:\nUnaccepted Keys:\nminion1:  c7:b2:55:83:46...\nminion2:  f8:41:ce:73:f8...<\/code><\/pre>\n<h3 id=\"configure-salt-minions\">C\u1ea5u h\u00ecnh Salt Minions<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#configure-salt-minions\"><\/a><\/h3>\n<p>1.Th\u00eam d\u1ea5u v\u00e2n tay c\u1ee7a Salt Master&nbsp;<code>master.pub<\/code>v\u00e0o&nbsp;<code>\/etc\/salt\/minion<\/code>gi\u1eefa d\u1ea5u ngo\u1eb7c \u0111\u01a1n:<\/p>\n<pre class=\"wp-block-code\"><code># Fingerprint of the master public key to validate the identity of your Salt master\n# before the initial key exchange. The master fingerprint can be found by running\n# \"salt-key -f master.pub\" on the Salt master.\nmaster_finger: '4b:2a:81:79...'<\/code><\/pre>\n<p>2.Kh\u1edfi \u0111\u1ed9ng l\u1ea1i Salt:<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo systemctl restart salt-minion<\/code><\/code><\/pre>\n<p>3.Li\u1ec7t k\u00ea m\u00e3 b\u0103m d\u1ea5u v\u00e2n tay c\u1ee7a Minion v\u00e0 x\u00e1c minh n\u00f3 v\u1edbi th\u00f4ng tin \u0111\u01b0\u1ee3c Salt Master b\u00e1o c\u00e1o \u1edf B\u01b0\u1edbc 1 \u1edf tr\u00ean:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt-call key.finger --local\n<\/code><\/pre>\n<h3 id=\"accept-minions\">Ch\u1ea5p nh\u1eadn Minions<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#accept-minions\"><\/a><\/h3>\n<p>1.Sau khi x\u00e1c minh t\u1eebng ID Minion, h\u00e3y ch\u1ea5p nh\u1eadn t\u1ea5t c\u1ea3 ch\u00fang t\u1eeb Salt Master:<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo salt-key -A<\/code><\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: \u0110\u1ec3 ch\u1ea5p nh\u1eadn m\u1ed9t minion ri\u00eang l\u1ebb, h\u00e3y ch\u1ec9 \u0111\u1ecbnh n\u00f3 theo t\u00ean m\u00e1y ch\u1ee7 ho\u1eb7c \u0111\u1ecba ch\u1ec9 IP:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt-key -a hostname<\/code><\/pre>\n<p>2.X\u00e1c minh tr\u1ea1ng th\u00e1i c\u1ee7a c\u00e1c minion \u0111\u00e3 \u0111\u01b0\u1ee3c ch\u1ea5p nh\u1eadn. L\u1ec7nh b\u00ean d\u01b0\u1edbi s\u1ebd tr\u1ea3 v\u1ec1 t\u00ean m\u00e1y ch\u1ee7 ho\u1eb7c \u0111\u1ecba ch\u1ec9 IP c\u1ee7a m\u1ed7i Minion \u0111\u00e3 \u0111\u01b0\u1ee3c x\u00e1c minh v\u00e0 \u0111ang ch\u1ea1y.<\/p>\n<pre class=\"wp-block-code\"><code><code>sudo salt-run manage.up<\/code><\/code><\/pre>\n<p>\u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 Salt keys, h\u00e3y xem trang h\u01b0\u1edbng d\u1eabn&nbsp;<em><a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/configuration\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">salt-key<\/a><\/em>&nbsp;.<\/p>\n<h2 id=\"test-master-minion-connection\">Ki\u1ec3m tra k\u1ebft n\u1ed1i Master-Minion<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#test-master-minion-connection\"><\/a><\/h2>\n<p>Ping t\u1ea5t c\u1ea3 Minion:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt '*' test.ping\n<\/code><\/pre>\n<p>\u0110\u1ea7u ra s\u1ebd hi\u1ec3n th\u1ecb&nbsp;<code>true<\/code>cho t\u1eebng Minion:<\/p>\n<pre class=\"wp-block-code\"><code>root@saltmaster:~# salt '*' test.ping\nminion1:\n    True\nminion2:\n    True<\/code><\/pre>\n<h2 id=\"package-management-overview\">T\u1ed5ng quan v\u1ec1 qu\u1ea3n l\u00fd g\u00f3i<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#package-management-overview\"><\/a><\/h2>\n<p>C\u00e1c g\u00f3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t ho\u1eb7c g\u1ee1 b\u1ecf kh\u1ecfi Minion b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<em><a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/states\/all\/salt.states.pkg.html\" target=\"_blank\" rel=\"noreferrer noopener\">m\u00f4-\u0111un pkg state<\/a><\/em>&nbsp;. Mi\u1ec5n l\u00e0 b\u1ea1n \u0111ang ch\u1ea1y b\u1ea3n ph\u00e2n ph\u1ed1i Linux \u0111\u01b0\u1ee3c SaltStack h\u1ed7 tr\u1ee3, m\u00f4-\u0111un Salt s\u1ebd \u0111i\u1ec1u khi\u1ec3n tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i c\u1ee7a b\u1ea3n ph\u00e2n ph\u1ed1i, c\u00f3 th\u1ec3 l\u00e0&nbsp;<code>apt<\/code>,&nbsp;<code>yum<\/code>, v.v. C\u00e1c g\u00f3i c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c nh\u1eafm m\u1ee5c ti\u00eau \u0111\u1ebfn t\u1eebng Minion b\u1eb1ng c\u00e1ch ch\u1ec9 \u0111\u1ecbnh t\u00ean m\u00e1y ch\u1ee7 ho\u1eb7c \u0111\u1ecba ch\u1ec9 IP c\u1ee7a minion ho\u1eb7c \u0111\u1ebfn t\u1ea5t c\u1ea3 Minion b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<code>*<\/code>.<\/p>\n<p>C\u00e0i \u0111\u1eb7t c\u00e1c g\u00f3i b\u1eb1ng c\u00f9ng t\u00ean g\u00f3i \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong kho l\u01b0u tr\u1eef h\u1ec7 th\u1ed1ng c\u1ee7a Salt minion. V\u00ed d\u1ee5,&nbsp;<code>apache<\/code>l\u00e0 g\u00f3i m\u00e1y ch\u1ee7 Apache httpd trong Debian v\u00e0 Ubuntu, trong khi&nbsp;<code>httpd<\/code>l\u00e0 t\u00ean g\u00f3i trong c\u00e1c h\u1ec7 th\u1ed1ng d\u1ef1a tr\u00ean RHEL. N\u1ebfu Salt Minion c\u1ee7a b\u1ea1n l\u00e0 phi\u00ean b\u1ea3n Debian ho\u1eb7c Ubuntu, b\u1ea1n s\u1ebd c\u00e0i \u0111\u1eb7t ho\u1eb7c x\u00f3a Apache b\u1eb1ng c\u00e1c v\u00ed d\u1ee5 b\u00ean d\u01b0\u1edbi.<\/p>\n<p>C\u00e0i \u0111\u1eb7t Apache cho t\u1ea5t c\u1ea3 Minion:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt '*' pkg.install apache2<\/code><\/pre>\n<p>X\u00f3a Apache kh\u1ecfi&nbsp;<code>minion5<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt 'minion5' pkg.remove apache2<\/code><\/pre>\n<p>Li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c g\u00f3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t tr\u00ean&nbsp;<code>minion1<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt 'minion1' pkg.list_pkgs<\/code><\/pre>\n<p>C\u00e1c d\u1ecbch v\u1ee5 \u0111\u01b0\u1ee3c ki\u1ec3m so\u00e1t b\u1eb1ng&nbsp;<em><a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/modules\/all\/salt.modules.service.html\" target=\"_blank\" rel=\"noreferrer noopener\">m\u00f4-\u0111un d\u1ecbch v\u1ee5<\/a><\/em>&nbsp;.<\/p>\n<p>Kh\u1edfi \u0111\u1ed9ng l\u1ea1i Apache tr\u00ean t\u1ea5t c\u1ea3 Minion:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt '*' service.start apache2<\/code><\/pre>\n<p>Xem tr\u1ea1ng th\u00e1i c\u1ee7a&nbsp;<code>mariadb<\/code>d\u1ecbch v\u1ee5 tr\u00ean&nbsp;<code>minion1<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>sudo salt 'minion1' service.status mariadb<\/code><\/pre>\n<h2 id=\"next-steps\">C\u00e1c b\u01b0\u1edbc ti\u1ebfp theo<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/#next-steps\"><\/a><\/h2>\n<p>Salt l\u00e0 m\u1ed9t h\u1ec7 sinh th\u00e1i ph\u1ee9c t\u1ea1p \u0111\u00f2i h\u1ecfi ph\u1ea3i nghi\u00ean c\u1ee9u v\u00e0 th\u1ef1c h\u00e0nh \u0111\u1ec3 n\u1eafm b\u1eaft k\u1ef9 l\u01b0\u1ee1ng.&nbsp;<a href=\"https:\/\/docs.saltproject.io\/en\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e0i li\u1ec7u Salt<\/a>&nbsp;c\u00f3 nhi\u1ec1u v\u00ed d\u1ee5, h\u01b0\u1edbng d\u1eabn v\u00e0 trang tham kh\u1ea3o s\u1ebd gi\u00fap \u00edch.<\/p>\n<p>Ti\u1ebfn v\u1ec1 ph\u00eda tr\u01b0\u1edbc, b\u1ea1n n\u00ean b\u1eaft \u0111\u1ea7u b\u1eb1ng c\u00e1ch l\u00e0m quen v\u1edbi&nbsp;<em><a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/modules\/all\/index.html#all-salt-modules\" target=\"_blank\" rel=\"noreferrer noopener\">Execution Modules<\/a><\/em>&nbsp;v\u00e0&nbsp;<em><a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/states\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">Salt States<\/a><\/em>&nbsp;, v\u00e0 x\u00e1c \u0111\u1ecbnh c\u00e1ch \u00e1p d\u1ee5ng ch\u00fang v\u00e0o thi\u1ebft l\u1eadp c\u1ee7a b\u1ea1n.<\/p>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Salt&nbsp;l\u00e0 m\u1ed9t n\u1ec1n t\u1ea3ng qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh d\u1ef1a tr\u00ean Python \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 \u0111i\u1ec1u khi\u1ec3n m\u1ed9t s\u1ed1 m\u00e1y ch\u1ee7 ph\u1ee5 (g\u1ecdi l\u00e0 Minion theo thu\u1eadt ng\u1eef c\u1ee7a Salt) t\u1eeb m\u1ed9t m\u00e1y ch\u1ee7 ch\u00ednh duy nh\u1ea5t. H\u01b0\u1edbng d\u1eabn n\u00e0y h\u01b0\u1edbng d\u1eabn b\u1ea1n c\u00e1ch c\u1ea5u h\u00ecnh Salt Master v\u00e0 Minion v\u00e0 li\u00ean quan \u0111\u1ebfn b\u1ea5t<\/p>\n","protected":false},"author":1,"featured_media":36029,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124],"tags":[],"class_list":["post-34981","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salt"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34981","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=34981"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36029"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}