{"id":34909,"date":"2024-08-22T10:15:52","date_gmt":"2024-08-22T03:15:52","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/22\/a-tutorial-for-learning-adhoc-commands-in-ansible\/"},"modified":"2024-08-22T10:15:52","modified_gmt":"2024-08-22T03:15:52","slug":"a-tutorial-for-learning-adhoc-commands-in-ansible","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/22\/a-tutorial-for-learning-adhoc-commands-in-ansible\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng Adhoc Commands trong Ansible"},"content":{"rendered":"<p>Trong h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n s\u1ebd t\u00ecm hi\u1ec3u v\u1ec1 m\u1ed9t s\u1ed1 l\u1ec7nh adhoc Ansible \u0111\u01b0\u1ee3c c\u00e1c k\u1ef9 s\u01b0 h\u1ec7 th\u1ed1ng v\u00e0 devops s\u1eed d\u1ee5ng.<\/p>\n<p>C\u00e1c l\u1ec7nh Adhoc l\u00e0 c\u00e1c l\u1ec7nh b\u1ea1n ch\u1ea1y t\u1eeb d\u00f2ng l\u1ec7nh, b\u00ean ngo\u00e0i playbook. C\u00e1c l\u1ec7nh n\u00e0y ch\u1ea1y tr\u00ean m\u1ed9t ho\u1eb7c nhi\u1ec1u n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u00e0 th\u1ef1c hi\u1ec7n m\u1ed9t t\u00e1c v\u1ee5 \u0111\u01a1n gi\u1ea3n\/nhanh ch\u00f3ng\u2013th\u01b0\u1eddng l\u00e0 c\u00e1c t\u00e1c v\u1ee5 m\u00e0 b\u1ea1n kh\u00f4ng c\u1ea7n ph\u1ea3i l\u1eb7p l\u1ea1i. V\u00ed d\u1ee5, n\u1ebfu b\u1ea1n mu\u1ed1n t\u1ea3i l\u1ea1i Apache tr\u00ean m\u1ed9t c\u1ee5m m\u00e1y ch\u1ee7 web, b\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y m\u1ed9t l\u1ec7nh adhoc duy nh\u1ea5t \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00e1c v\u1ee5 \u0111\u00f3.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa:Trong Ansible, t\u1ea5t c\u1ea3 c\u00e1c m\u00f4-\u0111un c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c th\u1ef1c thi trong playbook ho\u1eb7c th\u00f4ng qua l\u1ec7nh adhoc.<\/p>\n<p>C\u00fa ph\u00e1p c\u01a1 b\u1ea3n \u0111\u1ec3 g\u1ecdi l\u1ec7nh adhoc l\u00e0:<\/p>\n<pre class=\"wp-block-code\"><code>ansible host_pattern -m module_name -a \"module_options\"\n<\/code><\/pre>\n<h2 id=\"before-you-begin\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#before-you-begin\"><\/a><\/h2>\n<p>\u0110\u1ec3 ch\u1ea1y c\u00e1c l\u1ec7nh trong h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n s\u1ebd c\u1ea7n:<\/p>\n<ul>\n<li>M\u1ed9t m\u00e1y tr\u1ea1m ho\u1eb7c m\u00e1y ch\u1ee7 c\u00f3 c\u00e0i \u0111\u1eb7t c\u00f4ng c\u1ee5 d\u00f2ng l\u1ec7nh Ansible s\u1ebd ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t n\u00fat \u0111i\u1ec1u khi\u1ec3n. Ph\u1ea7n&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-ansible\/#set-up-the-control-node\">Thi\u1ebft l\u1eadp n\u00fat \u0111i\u1ec1u khi\u1ec3n<\/a>&nbsp;c\u1ee7a h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-ansible\/\">B\u1eaft \u0111\u1ea7u v\u1edbi Ansible<\/a>&nbsp;c\u00f3 h\u01b0\u1edbng d\u1eabn thi\u1ebft l\u1eadp Linode l\u00e0m n\u00fat \u0111i\u1ec1u khi\u1ec3n. H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t cho c\u00e1c b\u1ea3n ph\u00e2n ph\u1ed1i kh\u00f4ng ph\u1ea3i Linux c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y tr\u00ean&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/installation_guide\/intro_installation.html\" target=\"_blank\" rel=\"noreferrer noopener\">trang t\u00e0i li\u1ec7u Ansible<\/a>&nbsp;.<\/li>\n<li>\u00cdt nh\u1ea5t m\u1ed9t m\u00e1y ch\u1ee7 kh\u00e1c s\u1ebd \u0111\u01b0\u1ee3c Ansible qu\u1ea3n l\u00fd. M\u1ed9t s\u1ed1 l\u1ec7nh trong h\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd nh\u1eafm m\u1ee5c ti\u00eau \u0111\u1ebfn ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng ph\u1ea3i root tr\u00ean m\u00e1y ch\u1ee7 n\u00e0y. Ng\u01b0\u1eddi d\u00f9ng n\u00e0y ph\u1ea3i c\u00f3 quy\u1ec1n sudo. C\u00f3 m\u1ed9t v\u00e0i t\u00f9y ch\u1ecdn \u0111\u1ec3 thi\u1ebft l\u1eadp ng\u01b0\u1eddi d\u00f9ng n\u00e0y:\n<ul>\n<li>B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Ansible \u0111\u1ec3 t\u1ea1o ng\u01b0\u1eddi d\u00f9ng, \u0111\u01b0\u1ee3c n\u00eau trong ph\u1ea7n&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/running-ansible-playbooks\/#add-a-limited-user-account\">Th\u00eam t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng c\u00f3 gi\u1edbi h\u1ea1n<\/a>&nbsp;c\u1ee7a h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/running-ansible-playbooks\/\">T\u1ef1 \u0111\u1ed9ng c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 b\u1eb1ng Ansible Playbooks<\/a>&nbsp;.<\/li>\n<li>Ngo\u00e0i ra, b\u1ea1n c\u00f3 th\u1ec3 th\u00eam ng\u01b0\u1eddi d\u00f9ng theo c\u00e1ch th\u1ee7 c\u00f4ng, \u0111\u01b0\u1ee3c n\u00eau trong ph\u1ea7n&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/set-up-and-secure\/#add-a-limited-user-account\">Th\u00eam t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng gi\u1edbi h\u1ea1n<\/a>&nbsp;c\u1ee7a 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 m\u00e1y t\u00ednh<\/a>&nbsp;.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: L\u00e0m theo h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/create\/\">T\u1ea1o phi\u00ean b\u1ea3n m\u00e1y t\u00ednh<\/a>&nbsp;\u0111\u1ec3 \u0111\u01b0\u1ee3c tr\u1ee3 gi\u00fap khi t\u1ea1o Linode.<\/p>\n<p>C\u00e1c l\u1ec7nh trong h\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c ch\u1ea1y t\u1eeb n\u00fat \u0111i\u1ec1u khi\u1ec3n v\u00e0 s\u1ebd nh\u1eafm m\u1ee5c ti\u00eau \u0111\u1ebfn m\u00e1y ch\u1ee7 c\u00f3 t\u00ean l\u00e0&nbsp;<code>Client<\/code>. Kho l\u01b0u tr\u1eef Ansible c\u1ee7a n\u00fat \u0111i\u1ec1u khi\u1ec3n c\u1ee7a b\u1ea1n ph\u1ea3i \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh sao cho \u00edt nh\u1ea5t m\u1ed9t trong c\u00e1c n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n c\u00f3 t\u00ean n\u00e0y. Ph\u1ea7n&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-ansible\/#create-an-ansible-inventory\">T\u1ea1o kho l\u01b0u tr\u1eef Ansible<\/a>&nbsp;c\u1ee7a h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-ansible\/\">B\u1eaft \u0111\u1ea7u v\u1edbi Ansible<\/a>&nbsp;ph\u00e1c th\u1ea3o c\u00e1ch thi\u1ebft l\u1eadp t\u1ec7p kho l\u01b0u tr\u1eef.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: Ngo\u00e0i ra, b\u1ea1n c\u00f3 th\u1ec3 s\u1eeda \u0111\u1ed5i c\u00e1c l\u1ec7nh trong h\u01b0\u1edbng d\u1eabn n\u00e0y \u0111\u1ec3 s\u1eed d\u1ee5ng t\u00ean m\u00e1y ch\u1ee7 kh\u00e1c.<\/p>\n<h2 id=\"basic-commands\">L\u1ec7nh c\u01a1 b\u1ea3n<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#basic-commands\"><\/a><\/h2>\n<h3 id=\"ping\">Ping<\/h3>\n<p>\u0110\u1ec3 ki\u1ec3m tra xem b\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp v\u00e0o n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a m\u00ecnh hay kh\u00f4ng, h\u00e3y s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/ping_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>ping<\/code>m\u00f4-\u0111un<\/a>&nbsp;:<\/p>\n<pre class=\"wp-block-code\"><code>ansible -m ping Client\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}<\/code><\/pre>\n<h3 id=\"run-with-privilege-escalation\">Ch\u1ea1y v\u1edbi s\u1ef1 leo thang \u0111\u1eb7c quy\u1ec1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#run-with-privilege-escalation\"><\/a><\/h3>\n<p>L\u1ec7nh adhoc n\u00e0y ch\u1ee9ng minh c\u00e1ch ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng ph\u1ea3i root tr\u00ean n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u00f3 th\u1ec3 c\u00f3 \u0111\u01b0\u1ee3c c\u00e1c \u0111\u1eb7c quy\u1ec1n c\u1ee7a ng\u01b0\u1eddi d\u00f9ng root khi th\u1ef1c thi m\u1ed9t m\u00f4-\u0111un. C\u1ee5 th\u1ec3, v\u00ed d\u1ee5 n\u00e0y cho th\u1ea5y c\u00e1ch s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/become.html\" target=\"_blank\" rel=\"noreferrer noopener\">leo thang \u0111\u1eb7c quy\u1ec1n<\/a>&nbsp;\u0111\u1ec3 ch\u1ea1y&nbsp;<code>fdisk<\/code>l\u1ec7nh th\u00f4ng qua&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/shell_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>shell<\/code>m\u00f4-\u0111un<\/a>&nbsp;:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m shell -a 'fdisk -l' -u non_root_user --become -K<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>BECOME password:\nnode1 | CHANGED | rc=0 &gt;&gt;\nDisk \/dev\/sda: 79.51 GiB, 85362475008 bytes, 166723584 sectors\nDisk model: QEMU HARDDISK\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical\/physical): 512 bytes \/ 512 bytes\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes\nDisk \/dev\/sdb: 512 MiB, 536870912 bytes, 1048576 sectors\nDisk model: QEMU HARDDISK\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical\/physical): 512 bytes \/ 512 bytes\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<\/code><\/pre>\n<ul>\n<li>T\u00f9y ch\u1ecdn n\u00e0y&nbsp;<code>-u<\/code>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ch\u1ec9 \u0111\u1ecbnh ng\u01b0\u1eddi d\u00f9ng tr\u00ean n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd.<\/li>\n<li>Ghi ch\u00faTheo m\u1eb7c \u0111\u1ecbnh, Ansible s\u1ebd c\u1ed1 g\u1eafng thi\u1ebft l\u1eadp k\u1ebft n\u1ed1i \u0111\u1ebfn n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd d\u01b0\u1edbi c\u00f9ng m\u1ed9t ng\u01b0\u1eddi d\u00f9ng m\u00e0 b\u1ea1n th\u1ef1c thi Ansible CLI tr\u00ean n\u00fat \u0111i\u1ec1u khi\u1ec3n.<\/li>\n<li>T\u00f9y ch\u1ecdn n\u00e0y&nbsp;<code>--become<\/code>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 th\u1ef1c thi l\u1ec7nh v\u1edbi quy\u1ec1n c\u1ee7a ng\u01b0\u1eddi d\u00f9ng root.<\/li>\n<li>T\u00f9y ch\u1ecdn n\u00e0y&nbsp;<code>-K<\/code>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 nh\u1eafc nh\u1eadp m\u1eadt kh\u1ea9u n\u00e2ng cao \u0111\u1eb7c quy\u1ec1n c\u1ee7a ng\u01b0\u1eddi d\u00f9ng.<\/li>\n<\/ul>\n<h3 id=\"reboot-a-managed-node\">Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u1ed9t n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#reboot-a-managed-node\"><\/a><\/h3>\n<p>D\u01b0\u1edbi \u0111\u00e2y l\u00e0 l\u1ec7nh kh\u1edfi \u0111\u1ed9ng l\u1ea1i n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -a \"\/sbin\/reboot\" -f 1\n<\/code><\/pre>\n<p>L\u1ec7nh n\u00e0y b\u1ecf qua&nbsp;<code>-m<\/code>t\u00f9y ch\u1ecdn ch\u1ec9 \u0111\u1ecbnh m\u00f4-\u0111un. Khi m\u00f4-\u0111un kh\u00f4ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh, m\u00f4&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/command_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>command<\/code>-\u0111un<\/a>&nbsp;s\u1ebd l\u00e0 m\u1eb7c \u0111\u1ecbnh \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng.<\/p>\n<p>Module n\u00e0y&nbsp;<code>command<\/code>t\u01b0\u01a1ng t\u1ef1 nh\u01b0&nbsp;<code>shell<\/code>module \u1edf ch\u1ed7 c\u1ea3 hai \u0111\u1ec1u s\u1ebd th\u1ef1c thi l\u1ec7nh m\u00e0 b\u1ea1n truy\u1ec1n cho n\u00f3. Module&nbsp;<code>shell<\/code>s\u1ebd ch\u1ea1y l\u1ec7nh th\u00f4ng qua shell tr\u00ean n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd, trong khi&nbsp;<code>command<\/code>module s\u1ebd kh\u00f4ng ch\u1ea1y l\u1ec7nh th\u00f4ng qua shell.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: T\u00f9y ch\u1ecdn n\u00e0y&nbsp;<code>-f<\/code>\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh s\u1ed1&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_strategies.html#setting-the-number-of-forks\" target=\"_blank\" rel=\"noreferrer noopener\">nh\u00e1nh<\/a>&nbsp;m\u00e0 Ansible s\u1ebd s\u1eed d\u1ee5ng tr\u00ean n\u00fat \u0111i\u1ec1u khi\u1ec3n khi ch\u1ea1y l\u1ec7nh c\u1ee7a b\u1ea1n.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: N\u1ebfu n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n l\u00e0 Linode, th\u00ec c\u1ea7n ph\u1ea3i b\u1eadt&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/lassie-shutdown-watchdog\/\">ch\u1ee9c n\u0103ng gi\u00e1m s\u00e1t t\u1eaft m\u00e1y c\u1ee7a Linode l\u00e0&nbsp;<em>Lassie<\/em><\/a>&nbsp;\u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng l\u1ea1i th\u00e0nh c\u00f4ng. \u0110i\u1ec1u n\u00e0y l\u00e0 do Linode kh\u00f4ng th\u1ec3 t\u1ef1 b\u1eadt &#8211; thay v\u00e0o \u0111\u00f3, m\u00f4i tr\u01b0\u1eddng m\u00e1y ch\u1ee7 c\u1ee7a Linode ph\u1ea3i kh\u1edfi \u0111\u1ed9ng Linode.<\/p>\n<h2 id=\"collecting-system-diagnostics\">H\u1ec7 th\u1ed1ng thu th\u1eadp ch\u1ea9n \u0111o\u00e1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#collecting-system-diagnostics\"><\/a><\/h2>\n<h3 id=\"check-free-disk-space\">Ki\u1ec3m tra dung l\u01b0\u1ee3ng \u0111\u0129a tr\u1ed1ng<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#check-free-disk-space\"><\/a><\/h3>\n<p>L\u1ec7nh n\u00e0y \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ki\u1ec3m tra dung l\u01b0\u1ee3ng \u0111\u0129a tr\u1ed1ng tr\u00ean t\u1ea5t c\u1ea3 c\u00e1c \u0111\u0129a \u0111\u01b0\u1ee3c g\u1eafn k\u1ebft c\u1ee7a m\u1ed9t n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd. L\u1ec7nh n\u00e0y li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c h\u1ec7 th\u1ed1ng t\u1ec7p c\u00f3 tr\u00ean n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u00f9ng v\u1edbi k\u00edch th\u01b0\u1edbc h\u1ec7 th\u1ed1ng t\u1ec7p, dung l\u01b0\u1ee3ng \u0111\u00e3 s\u1eed d\u1ee5ng v\u00e0 dung l\u01b0\u1ee3ng kh\u1ea3 d\u1ee5ng theo \u0111\u1ecbnh d\u1ea1ng m\u00e0 con ng\u01b0\u1eddi c\u00f3 th\u1ec3 \u0111\u1ecdc \u0111\u01b0\u1ee3c:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -a \"df -h\"<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED | rc=0 &gt;&gt;\nFilesystem      Size  Used Avail Use% Mounted on\nudev            1.9G     0  1.9G   0% \/dev\ntmpfs           394M  596K  394M   1% \/run\n\/dev\/sda         79G  2.6G   72G   4% \/\ntmpfs           2.0G  124K  2.0G   1% \/dev\/shm\ntmpfs           5.0M     0  5.0M   0% \/run\/lock\ntmpfs           2.0G     0  2.0G   0% \/sys\/fs\/cgroup\ntmpfs           394M     0  394M   0% \/run\/user\/0<\/code><\/pre>\n<p>L\u1ec7nh n\u00e0y ki\u1ec3m tra kh\u00f4ng gian kh\u1ea3 d\u1ee5ng v\u00e0 \u0111\u00e3 s\u1eed d\u1ee5ng tr\u00ean m\u1ed9t h\u1ec7 th\u1ed1ng t\u1ec7p c\u1ee5 th\u1ec3:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m shell -a 'df -h \/dev\/sda'\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED | rc=0 &gt;&gt;\nFilesystem      Size  Used Avail Use% Mounted on\n\/dev\/sda         79G  2.6G   72G   4% \/<\/code><\/pre>\n<h3 id=\"check-memory-and-cpu-usage\">Ki\u1ec3m tra b\u1ed9 nh\u1edb v\u00e0 s\u1eed d\u1ee5ng CPU<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#check-memory-and-cpu-usage\"><\/a><\/h3>\n<p>S\u1eed d\u1ee5ng&nbsp;<code>free<\/code>l\u1ec7nh v\u1edbi&nbsp;<code>shell<\/code>m\u00f4-\u0111un \u0111\u1ec3 xem b\u1ed9 nh\u1edb tr\u1ed1ng v\u00e0 \u0111\u00e3 s\u1eed d\u1ee5ng c\u1ee7a n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n t\u00ednh theo megabyte:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m shell -a 'free -m'<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED | rc=0 &gt;&gt;\n              total        used        free      shared  buff\/cache   available\nMem:           3936         190        3553           0         192        3523\nSwap:           511           0         511<\/code><\/pre>\n<p>S\u1eed d\u1ee5ng&nbsp;<code>mpstat<\/code>l\u1ec7nh v\u1edbi&nbsp;<code>shell<\/code>module \u0111\u1ec3 ki\u1ec3m tra m\u1ee9c s\u1eed d\u1ee5ng CPU:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m shell -a 'mpstat -P ALL'\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED | rc=0 &gt;&gt;\nLinux 5.3.0-40-generic (localhost)      03\/21\/2020      _x86_64_        (2 CPU)\n\n07:41:27 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle\n07:41:27 PM  all    0.96    0.00    0.72    0.08    0.00    0.02    0.01    0.00    0.00   98.21\n07:41:27 PM    0    0.93    0.00    0.73    0.06    0.00    0.03    0.01    0.00    0.00   98.24\n07:41:27 PM    1    1.00    0.00    0.71    0.09    0.00    0.01    0.01    0.00    0.00   98.17<\/code><\/pre>\n<h3 id=\"check-system-uptime\">Ki\u1ec3m tra th\u1eddi gian ho\u1ea1t \u0111\u1ed9ng c\u1ee7a h\u1ec7 th\u1ed1ng<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#check-system-uptime\"><\/a><\/h3>\n<p>L\u1ec7nh Ansible n\u00e0y s\u1ebd hi\u1ec3n th\u1ecb th\u1eddi gian c\u00e1c n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n \u0111\u00e3 ho\u1ea1t \u0111\u1ed9ng:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -a \"uptime\"<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED | rc=0 &gt;&gt;\n 19:40:11 up 8 min,  2 users,  load average: 0.00, 0.02, 0.00<\/code><\/pre>\n<h2 id=\"file-transfer\">Chuy\u1ec3n t\u1eadp tin<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#file-transfer\"><\/a><\/h2>\n<h3 id=\"copy-files\">Sao ch\u00e9p t\u1eadp tin<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#copy-files\"><\/a><\/h3>\n<p><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/copy_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>copy<\/code>M\u00f4-\u0111un<\/a>&nbsp;n\u00e0y&nbsp;\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 chuy\u1ec3n t\u1ec7p ho\u1eb7c th\u01b0 m\u1ee5c t\u1eeb n\u00fat \u0111i\u1ec1u khi\u1ec3n \u0111\u1ebfn c\u00e1c n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n b\u1eb1ng c\u00e1ch x\u00e1c \u0111\u1ecbnh \u0111\u01b0\u1eddng d\u1eabn ngu\u1ed3n v\u00e0 \u0111\u00edch. B\u1ea1n c\u00f3 th\u1ec3 x\u00e1c \u0111\u1ecbnh ch\u1ee7 s\u1edf h\u1eefu t\u1ec7p v\u00e0 quy\u1ec1n t\u1ec7p trong l\u1ec7nh:<\/p>\n<pre class=\"wp-block-code\"><code>cd ~\necho \"Hello World\" &gt; test.txt\nansible Client -m copy -a 'src=test.txt dest=\/etc\/ owner=root mode=0644' -u non_root_user --become -K<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>BECOME password:\nnode1 | CHANGED =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": true,\n    \"checksum\": \"13577023221e91069c21d8f10a4b90f8192d6a26\",\n    \"dest\": \"\/etc\/test\",\n    \"gid\": 0,\n    \"group\": \"root\",\n    \"md5sum\": \"eb662c21e683b643f0fcb5997d7bbccf\",\n    \"mode\": \"0644\",\n    \"owner\": \"root\",\n    \"size\": 18,\n    \"src\": \"\/root\/.ansible\/tmp\/ansible-tmp-1584820375.14-54524496813834\/source\",\n    \"state\": \"file\",\n    \"uid\": 0\n}<\/code><\/pre>\n<p>B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Ansible \u0111\u1ec3 ki\u1ec3m tra xem t\u1ec7p c\u1ee7a b\u1ea1n c\u00f3 \u0111\u01b0\u1ee3c sao ch\u00e9p \u0111\u1ebfn v\u1ecb tr\u00ed \u0111\u00edch hay kh\u00f4ng:<\/p>\n<pre class=\"wp-block-code\"><code>sudo ansible Client -m shell -a 'ls -l \/etc\/test*'\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED | rc=0 &gt;&gt;\n-rw-r--r-- 1 root root 12 Jun  1 22:35 \/etc\/test.txt<\/code><\/pre>\n<h3 id=\"fetch-files\">L\u1ea5y t\u1eadp tin<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#fetch-files\"><\/a><\/h3>\n<p><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/fetch_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>fetch<\/code>Module<\/a>&nbsp;n\u00e0y&nbsp;\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 chuy\u1ec3n m\u1ed9t t\u1ec7p t\u1eeb m\u1ed9t n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd sang n\u00fat \u0111i\u1ec1u khi\u1ec3n. Sau khi l\u1ec7nh ch\u1ea1y th\u00e0nh c\u00f4ng,&nbsp;<code>changed<\/code>bi\u1ebfn trong \u0111\u1ea7u ra c\u1ee7a Ansible s\u1ebd \u0111\u01b0\u1ee3c \u0111\u1eb7t th\u00e0nh&nbsp;<code>true<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m fetch -a 'src=\/etc\/test.txt dest=\/etc\/'\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED =&gt; {\n    \"changed\": true,\n    \"checksum\": \"648a6a6ffffdaa0badb23b8baf90b6168dd16b3a\",\n    \"dest\": \"\/etc\/192.0.2.4\/etc\/test.txt\",\n    \"md5sum\": \"e59ff97941044f85df5297e1c302d260\",\n    \"remote_checksum\": \"648a6a6ffffdaa0badb23b8baf90b6168dd16b3a\",\n    \"remote_md5sum\": null\n}<\/code><\/pre>\n<p>L\u01b0u \u00fd r\u1eb1ng t\u1ec7p \u0111\u00e3 t\u1ea3i xu\u1ed1ng \u0111\u01b0\u1ee3c \u0111\u1eb7t v\u00e0o&nbsp;<code>\/etc\/192.0.2.4\/etc\/test.txt<\/code>. Theo m\u1eb7c \u0111\u1ecbnh,&nbsp;<code>fetch<\/code>m\u00f4-\u0111un s\u1ebd \u0111\u1eb7t c\u00e1c t\u1ec7p \u0111\u00e3 t\u1ea3i xu\u1ed1ng v\u00e0o c\u00e1c th\u01b0 m\u1ee5c ri\u00eang bi\u1ec7t cho m\u1ed7i t\u00ean m\u00e1y ch\u1ee7 m\u00e0 b\u1ea1n \u0111ang t\u1ea3i xu\u1ed1ng. \u0110i\u1ec1u n\u00e0y ng\u0103n kh\u00f4ng cho t\u1ec7p t\u1eeb m\u1ed9t n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd ghi \u0111\u00e8 l\u00ean t\u1ec7p t\u1eeb m\u1ed9t n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd kh\u00e1c.<\/p>\n<p>\u0110\u1ec3 tr\u00e1nh t\u1ea1o c\u00e1c th\u01b0 m\u1ee5c n\u00e0y, h\u00e3y th\u00eam&nbsp;<code>flat=yes<\/code>t\u00f9y ch\u1ecdn:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m fetch -a 'src=\/etc\/test.txt dest=\/etc\/ flat=yes'\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | SUCCESS =&gt; {\n    \"changed\": false,\n    \"checksum\": \"648a6a6ffffdaa0badb23b8baf90b6168dd16b3a\",\n    \"dest\": \"\/etc\/test.txt\",\n    \"file\": \"\/etc\/test.txt\",\n    \"md5sum\": \"e59ff97941044f85df5297e1c302d260\"\n}<\/code><\/pre>\n<h3 id=\"create-directories\">T\u1ea1o th\u01b0 m\u1ee5c<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#create-directories\"><\/a><\/h3>\n<p><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/file_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>file<\/code>Module<\/a>&nbsp;n\u00e0y&nbsp;\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ea1o, x\u00f3a v\u00e0 thi\u1ebft l\u1eadp quy\u1ec1n tr\u00ean c\u00e1c t\u1ec7p v\u00e0 th\u01b0 m\u1ee5c, v\u00e0 t\u1ea1o li\u00ean k\u1ebft t\u01b0\u1ee3ng tr\u01b0ng. L\u1ec7nh n\u00e0y s\u1ebd t\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c t\u1ea1i&nbsp;<code>\/root\/linode\/new\/<\/code>tr\u00ean n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u1edbi ch\u1ee7 s\u1edf h\u1eefu v\u00e0 quy\u1ec1n \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh trong c\u00e1c t\u00f9y ch\u1ecdn:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m file -a \"dest=\/root\/linode\/new\/ mode=755 owner=root group=root state=directory\" -u non_root_user --become -K\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": true,\n    \"gid\": 0,\n    \"group\": \"root\",\n    \"mode\": \"0755\",\n    \"owner\": \"root\",\n    \"path\": \"\/root\/linode\/new\",\n    \"size\": 4096,\n    \"state\": \"directory\",\n    \"uid\": 0\n}<\/code><\/pre>\n<p>L\u01b0u \u00fd r\u1eb1ng t\u1ea5t c\u1ea3 c\u00e1c th\u01b0 m\u1ee5c trung gian kh\u00f4ng t\u1ed3n t\u1ea1i c\u0169ng s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o. Trong v\u00ed d\u1ee5 n\u00e0y, n\u1ebfu th\u01b0&nbsp;<code>linode\/<\/code>m\u1ee5c con ch\u01b0a t\u1ed3n t\u1ea1i th\u00ec n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o.<\/p>\n<h2 id=\"managing-packages\">Qu\u1ea3n l\u00fd c\u00e1c g\u00f3i<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#managing-packages\"><\/a><\/h2>\n<h3 id=\"install-a-package\">C\u00e0i \u0111\u1eb7t m\u1ed9t g\u00f3i<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#install-a-package\"><\/a><\/h3>\n<p><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/package_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>package<\/code>Module<\/a>&nbsp;n\u00e0y&nbsp;c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 c\u00e0i \u0111\u1eb7t m\u1ed9t g\u00f3i m\u1edbi tr\u00ean n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd. L\u1ec7nh n\u00e0y c\u00e0i \u0111\u1eb7t phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t c\u1ee7a NGINX:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m package -a 'name=nginx state=present' -u non_root_user --become -K\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"cache_update_time\": 1584821061,\n    \"cache_updated\": false,\n    \"changed\": true,\n    \"stderr\": \"\",\n    \"stderr_lines\": &#91;],\n    \"stdout\": \"Reading package lists...\\nBuilding dependency tree...\n        \"Unpacking nginx (1.16.1-0ubuntu2.1) ...\",\n        \"Setting up libxpm4:amd64 (1:3.5.12-1) ...\",\n        \"Setting up nginx-common (1.16.1-0ubuntu2.1) ...\",\n        \"Setting up nginx-core (1.16.1-0ubuntu2.1) ...\",\n        \"Setting up nginx (1.16.1-0ubuntu2.1) ...\",\n    ]\n}<\/code><\/pre>\n<p>Ghi ch\u00fa: M\u00f4&nbsp;<code>package<\/code>-\u0111un ho\u1ea1t \u0111\u1ed9ng tr\u00ean nhi\u1ec1u b\u1ea3n ph\u00e2n ph\u1ed1i. Ngo\u00e0i ra c\u00f2n c\u00f3 c\u00e1c m\u00f4-\u0111un cho c\u00e1c tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i c\u1ee5 th\u1ec3 (v\u00ed d\u1ee5: m\u00f4&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/apt_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>apt<\/code>-\u0111un<\/a>&nbsp;v\u00e0&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/yum_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>yum<\/code>m\u00f4-\u0111un<\/a>&nbsp;). C\u00e1c m\u00f4-\u0111un n\u00e0y cung c\u1ea5p nhi\u1ec1u t\u00f9y ch\u1ecdn h\u01a1n d\u00e0nh ri\u00eang cho c\u00e1c tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i \u0111\u00f3.<\/p>\n<h3 id=\"uninstall-a-package\">G\u1ee1 c\u00e0i \u0111\u1eb7t m\u1ed9t g\u00f3i<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#uninstall-a-package\"><\/a><\/h3>\n<p>\u0110\u1ec3 g\u1ee1 c\u00e0i \u0111\u1eb7t m\u1ed9t g\u00f3i, h\u00e3y thi\u1ebft l\u1eadp&nbsp;<code>state=absent<\/code>c\u00e1c t\u00f9y ch\u1ecdn c\u1ee7a l\u1ec7nh:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m package -a 'name=nginx state=absent' -u non_root_user --become -K\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": true,\n    \"stderr\": \"\",\n    \"stderr_lines\": &#91;],\n    \"stdout\": \"Reading package lists...\\nBuilding dependency tree \u2026\n        \"  nginx-core\",\n        \"Use 'sudo apt autoremove' to remove them.\",\n        \"The following packages will be REMOVED:\",\n        \"  nginx*\",\n        \"Removing nginx (1.16.1-0ubuntu2.1) ...\"\n    ]\n}<\/code><\/pre>\n<h2 id=\"managing-services\">Qu\u1ea3n l\u00fd d\u1ecbch v\u1ee5<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#managing-services\"><\/a><\/h2>\n<h3 id=\"start-a-service\">B\u1eaft \u0111\u1ea7u m\u1ed9t d\u1ecbch v\u1ee5<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#start-a-service\"><\/a><\/h3>\n<p>S\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/service_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>service<\/code>m\u00f4-\u0111un<\/a>&nbsp;\u0111\u1ec3 b\u1eaft \u0111\u1ea7u m\u1ed9t d\u1ecbch v\u1ee5 tr\u00ean n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd. L\u1ec7nh n\u00e0y s\u1ebd b\u1eaft \u0111\u1ea7u v\u00e0 k\u00edch ho\u1ea1t d\u1ecbch v\u1ee5 NGINX:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m service -a 'name=nginx state=started enabled=yes' -u non_root_user --become -K\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": false,\n    \"enabled\": true,\n    \"name\": \"nginx\",\n    \"state\": \"started\",\n    \"status\": {\n        \"ActiveEnterTimestamp\": \"Sat 2020-03-21 20:04:35 UTC\",\n        \"ActiveEnterTimestampMonotonic\": \"1999615481\",\n        \"ActiveExitTimestampMonotonic\": \"0\",\n        \"ActiveState\": \"active\",\n        \"After\": \"system.slice systemd-journald.socket network.target sysinit.target basic.target\",\n        \"AllowIsolate\": \"no\",\n        \"AmbientCapabilities\": \"\",\n        \"AssertResult\": \"yes\",\n        \"AssertTimestamp\": \"Sat 2020-03-21 20:04:35 UTC\",\n        \"AssertTimestampMonotonic\": \"1999560256\",\n        \"Before\": \"multi-user.target shutdown.target\",\n    }\n}<\/code><\/pre>\n<h3 id=\"stop-a-service\">D\u1eebng m\u1ed9t d\u1ecbch v\u1ee5<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#stop-a-service\"><\/a><\/h3>\n<p>Khi b\u1ea1n thay \u0111\u1ed5i tr\u1ea1ng th\u00e1i th\u00e0nh \u0111\u00e3&nbsp;<em>d\u1eebng<\/em>&nbsp;, d\u1ecbch v\u1ee5 s\u1ebd ng\u1eebng ch\u1ea1y.<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m service -a 'name=nginx state=stopped' -u non_root_user --become -K<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | CHANGED =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": true,\n    \"name\": \"nginx\",\n    \"state\": \"stopped\",\n    \"status\": {\n        \"ActiveEnterTimestamp\": \"Sat 2020-03-21 20:04:35 UTC\",\n        \"ActiveEnterTimestampMonotonic\": \"1999615481\",\n        \"ActiveExitTimestampMonotonic\": \"0\",\n        \"ActiveState\": \"active\",\n        \"After\": \"system.slice systemd-journald.socket network.target sysinit.target basic.target\",\n        \"AllowIsolate\": \"no\",\n        \"AmbientCapabilities\": \"\",\n        \"AssertResult\": \"yes\",\n        \"AssertTimestamp\": \"Sat 2020-03-21 20:04:35 UTC\",\n}\n}<\/code><\/pre>\n<h2 id=\"gathering-facts\">Thu th\u1eadp s\u1ef1 th\u1eadt<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#gathering-facts\"><\/a><\/h2>\n<p><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/setup_module.html\" target=\"_blank\" rel=\"noreferrer noopener\"><code>setup<\/code>M\u00f4-\u0111un<\/a>&nbsp;n\u00e0y&nbsp;c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 thu th\u1eadp th\u00f4ng tin v\u1ec1 c\u00e1c n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m setup\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"ansible_all_ipv4_addresses\": &#91;\n            \"192.0.2.4\"\n        ],\n        \"ansible_all_ipv6_addresses\": &#91;\n            \"2400:8904::f03c:92ff:fee9:dcb3\",\n            \"fe80::f03c:92ff:fee9:dcb3\"\n        ],\n        \"ansible_apparmor\": {\n            \"status\": \"enabled\"\n        },\n        \"ansible_architecture\": \"x86_64\",\n        \"ansible_bios_date\": \"04\/01\/2014\",\n        \"ansible_bios_version\": \"rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org\",\n        \"ansible_cmdline\": {\n            \"BOOT_IMAGE\": \"\/boot\/vmlinuz-5.3.0-40-generic\",\n            \"console\": \"ttyS0,19200n8\",\n            \"net.ifnames\": \"0\",\n            \"ro\": true,\n            \"root\": \"\/dev\/sda\"\n        },\n        \"ansible_date_time\": {\n            \"date\": \"2020-03-21\",\n            \"day\": \"21\",\n            \"epoch\": \"1584821656\",\n            \"hour\": \"20\",\n            \"iso8601\": \"2020-03-21T20:14:16Z\",\n            \"iso8601_basic\": \"20200321T201416267047\",\n            \"iso8601_basic_short\": \"20200321T201416\",\n            \"iso8601_micro\": \"2020-03-21T20:14:16.267127Z\",\n            \"minute\": \"14\",\n            \"month\": \"03\",\n            \"second\": \"16\",\n            \"time\": \"20:14:16\",\n            \"tz\": \"UTC\",\n            \"tz_offset\": \"+0000\",\n            \"weekday\": \"Saturday\",\n            \"weekday_number\": \"6\",\n            \"weeknumber\": \"11\",\n            \"year\": \"2020\"\n        },\n        \"ansible_default_ipv4\": {\n            \"address\": \"192.0.2.4\",\n            \"alias\": \"eth0\",\n            \"broadcast\": \"192.0.2.255\",\n            \"gateway\": \"192.0.2.1\",\n            \"interface\": \"eth0\",\n            \"macaddress\": \"f2:3c:92:e9:dc:b3\",\n            \"mtu\": 1500,\n            \"netmask\": \"255.255.255.0\",\n            \"network\": \"192.0.2.0\",\n            \"type\": \"ether\"\n        },\n        \"gather_subset\": &#91;\n            \"all\"\n        ],\n        \"module_setup\": true\n    },\n    \"changed\": false\n}<\/code><\/pre>\n<h3 id=\"filtering-facts\">L\u1ecdc s\u1ef1 ki\u1ec7n<a href=\"https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/#filtering-facts\"><\/a><\/h3>\n<p>S\u1eed d\u1ee5ng&nbsp;<code>filter<\/code>t\u00f9y ch\u1ecdn v\u1edbi&nbsp;<code>setup<\/code>module s\u1ebd gi\u1edbi h\u1ea1n nh\u1eefng g\u00ec module tr\u1ea3 v\u1ec1. L\u1ec7nh n\u00e0y li\u1ec7t k\u00ea chi ti\u1ebft c\u00e1c b\u1ea3n ph\u00e2n ph\u1ed1i \u0111\u00e3 c\u00e0i \u0111\u1eb7t c\u1ee7a c\u00e1c n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>ansible Client -m setup -a \"filter=ansible_distribution*\"\n<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>node1 | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"ansible_distribution\": \"Ubuntu\",\n        \"ansible_distribution_file_parsed\": true,\n        \"ansible_distribution_file_path\": \"\/etc\/os-release\",\n        \"ansible_distribution_file_variety\": \"Debian\",\n        \"ansible_distribution_major_version\": \"19\",\n        \"ansible_distribution_release\": \"eoan\",\n        \"ansible_distribution_version\": \"19.10\",\n        \"discovered_interpreter_python\": \"\/usr\/bin\/python\"\n    },\n    \"changed\": false\n}<\/code><\/pre>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/ansible-adhoc-commands\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trong h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n s\u1ebd t\u00ecm hi\u1ec3u v\u1ec1 m\u1ed9t s\u1ed1 l\u1ec7nh adhoc Ansible \u0111\u01b0\u1ee3c c\u00e1c k\u1ef9 s\u01b0 h\u1ec7 th\u1ed1ng v\u00e0 devops s\u1eed d\u1ee5ng. C\u00e1c l\u1ec7nh Adhoc l\u00e0 c\u00e1c l\u1ec7nh b\u1ea1n ch\u1ea1y t\u1eeb d\u00f2ng l\u1ec7nh, b\u00ean ngo\u00e0i playbook. C\u00e1c l\u1ec7nh n\u00e0y ch\u1ea1y tr\u00ean m\u1ed9t ho\u1eb7c nhi\u1ec1u n\u00fat \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u00e0 th\u1ef1c hi\u1ec7n m\u1ed9t t\u00e1c<\/p>\n","protected":false},"author":1,"featured_media":35671,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129],"tags":[],"class_list":["post-34909","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ansible"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34909","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=34909"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34909\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35671"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34909"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}