{"id":7124,"date":"2026-10-03T11:00:42","date_gmt":"2026-10-03T07:30:42","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7124"},"modified":"2026-10-03T11:00:42","modified_gmt":"2026-10-03T07:30:42","slug":"%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%86%d8%b5%d8%a8-%d9%88-%d9%be%db%8c%da%a9%d8%b1%d8%a8%d9%86%d8%af%db%8c-ansible-%d8%b1%d9%88%db%8c-%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%86%d8%b5%d8%a8-%d9%88-%d9%be%db%8c%da%a9%d8%b1%d8%a8%d9%86%d8%af%db%8c-ansible-%d8%b1%d9%88%db%8c-%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Ansible \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ansible \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0633\u0631\u0648\u0631\u0647\u0627 \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0648\u0627\u062d\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f\u061b \u0628\u062f\u0648\u0646 \u0622\u0646\u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 Agent \u0631\u0648\u06cc \u0645\u0627\u0634\u06cc\u0646\u200c\u0647\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a\u0634\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0628\u0631\u062e\u0644\u0627\u0641 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Chef \u06cc\u0627 Puppet\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0631 Ansible \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc YAML \u0642\u0627\u0628\u0644\u200c\u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0648\u0638\u0627\u06cc\u0641 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u062f\u0648\u0646 Agent \u0628\u0627\u0639\u062b \u0634\u062f\u0647 Ansible \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u0631\u06a9\u0627\u0631\u0628\u0631\u062f\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\u06cc production \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c Ansible \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0646\u0635\u0628 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 Inventory \u0627\u0632 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062f\u0633\u062a\u0648\u0631\u0627\u062a Ad-Hoc \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0648 \u0627\u0648\u0644\u06cc\u0646 Playbook \u062e\u0648\u062f \u0631\u0627 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631\u0628\u0627\u0631\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0646\u0635\u0628 \u0645\u0648\u062c\u0648\u062f \u2014 \u0634\u0627\u0645\u0644 PPA \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Ansible\u060c \u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0648 pipx \u2014 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u062a\u0627 \u0631\u0648\u06cc\u06a9\u0631\u062f\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0645\u062d\u06cc\u0637 \u0634\u0645\u0627 \u0647\u0645\u200c\u062e\u0648\u0627\u0646\u06cc \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc \u0648 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u062a\u0631 \u0627\u0632 \u062c\u0627\u06cc\u06af\u0627\u0647 Ansible \u062f\u0631 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u0645\u0642\u0627\u0644\u0647 \u00ab\u0645\u0642\u062f\u0645\u0647\u200c\u0627\u06cc \u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0627 Ansible\u00bb \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 LTS \u0648 24.04 LTS \u062a\u0633\u062a \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0648 \u0645\u0631\u0627\u062d\u0644 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0648 \u0646\u0633\u062e\u0647 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u062f\u0631 \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u062a\u0641\u0627\u0648\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u062f\u0631 \u0647\u0645\u0627\u0646 \u0645\u062d\u0644 \u0630\u06a9\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ansible \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0631\u0648\u06cc \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0646\u0635\u0628 \u0634\u0648\u062f. \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0628\u0647 Python 3 \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc SSH \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f\u060c \u0627\u0645\u0627 \u0628\u0647 \u0647\u06cc\u0686 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 Ansible \u0646\u06cc\u0627\u0632\u06cc \u0646\u062f\u0627\u0631\u0646\u062f.<\/li>\n\n\n\n<li>PPA \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Ansible (ppa:ansible\/ansible) \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u067e\u0627\u06cc\u062f\u0627\u0631 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0631\u0648\u0634 \u0646\u0635\u0628 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u0628\u0631\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc production \u0627\u0633\u062a.<\/li>\n\n\n\n<li>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f Ansible \u0631\u0627 \u0628\u0627 pipx \u0628\u0631\u0627\u06cc \u0646\u0635\u0628\u200c\u0647\u0627\u06cc \u0627\u06cc\u0632\u0648\u0644\u0647 \u0648 \u0633\u0637\u062d \u06a9\u0627\u0631\u0628\u0631 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f\u060c \u06cc\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0628\u0627 \u0646\u0633\u062e\u0647 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0641\u0627\u06cc\u0644 Inventory \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f Ansible \u06a9\u062f\u0627\u0645 \u0647\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 <code>\/etc\/ansible\/hosts<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Inventory \u0645\u062e\u0635\u0648\u0635 \u0647\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0633\u0627\u0632\u06cc\u062f.<\/li>\n\n\n\n<li>\u0647\u0645\u06cc\u0634\u0647 \u0628\u0639\u062f \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Inventory \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc SSH \u0648 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0647\u0631 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646\u06cc\u060c \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u0628\u0627 <code>ansible all -m ping<\/code> \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u06cc\u06a9 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible:<\/strong> \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible \u0645\u0627\u0634\u06cc\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc Ansible \u0648 \u06a9\u0646\u062a\u0631\u0644 \u0622\u0646\u200c\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0627\u0634\u06cc\u0646 \u0645\u062d\u0644\u06cc\u200c\u062a\u0627\u0646 \u06cc\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc Ansible \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0634\u0645\u0627 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u06cc\u0627 24.04 \u0627\u0633\u062a. \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u062f\u0627\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a:\n<ul class=\"wp-block-list\">\n<li>\u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 root \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo. \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0645\u0631\u0627\u062d\u0644 \u06f2 \u0648 \u06f3 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0633\u0631\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0627\u0632 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062a\u0645\u0627\u0645 \u0645\u0631\u0627\u062d\u0644 \u0622\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0631\u0627 \u0628\u0627 ufw \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0627\u0631\u062c\u06cc \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 root \u062e\u0648\u062f \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u06cc\u06a9 \u062c\u0641\u062a \u06a9\u0644\u06cc\u062f SSH \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631. \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0645\u0631\u062d\u0644\u0647 \u06f1 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc SSH \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0647\u0627\u0633\u062a Ansible (\u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647):<\/strong> \u0647\u0627\u0633\u062a Ansible \u0647\u0631 \u0645\u0627\u0634\u06cc\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc Ansible \u0634\u0645\u0627 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0647\u0633\u062a\u0646\u062f. \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0647\u0631 \u0647\u0627\u0633\u062a Ansible \u062f\u0627\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a:\n<ul class=\"wp-block-list\">\n<li>\u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc SSH \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible \u06a9\u0647 \u0628\u0647 \u0641\u0627\u06cc\u0644 authorized_keys \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0633\u06cc\u0633\u062a\u0645\u06cc \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f root \u06cc\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0628\u0627\u0634\u062f. \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0645\u0631\u062d\u0644\u0647 \u06f2 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc SSH \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0646\u062a\u062e\u0627\u0628 \u0631\u0648\u0634 \u0646\u0635\u0628<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0646\u0635\u0628 Ansible\u060c \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0633\u0647 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0646\u0635\u0628 \u0645\u0648\u062c\u0648\u062f \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a. \u0647\u0631 \u0631\u0648\u0634 \u0627\u0632 \u0646\u0638\u0631 \u062a\u0627\u0632\u06af\u06cc \u0646\u0633\u062e\u0647\u060c \u0633\u0647\u0648\u0644\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u0627\u06cc\u0632\u0648\u0644\u0627\u0633\u06cc\u0648\u0646\u060c \u0645\u0632\u0627\u06cc\u0627 \u0648 \u0645\u0639\u0627\u06cc\u0628 \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0631\u0648\u0634<\/th><th>\u062f\u0633\u062a\u0648\u0631<\/th><th>\u0646\u0633\u062e\u0647<\/th><th>\u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc<\/th><\/tr><\/thead><tbody><tr><td>PPA \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Ansible<\/td><td><code>sudo apt install ansible<\/code> (\u067e\u0633 \u0627\u0632 \u0627\u0641\u0632\u0648\u062f\u0646 PPA)<\/td><td>\u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u067e\u0627\u06cc\u062f\u0627\u0631<\/td><td>\u0646\u0648\u062f\u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 production<\/td><\/tr><tr><td>\u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0648\u0628\u0648\u0646\u062a\u0648<\/td><td><code>sudo apt install ansible<\/code><\/td><td>\u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 (\u0647\u0645\u0631\u0627\u0647 \u0646\u0633\u062e\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0639\u0631\u0636\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f)<\/td><td>\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u06cc\u0639 \u06a9\u0647 \u062a\u0627\u0632\u06af\u06cc \u0646\u0633\u062e\u0647 \u062f\u0631 \u0622\u0646 \u0627\u0648\u0644\u0648\u06cc\u062a \u0646\u06cc\u0633\u062a<\/td><\/tr><tr><td>pipx<\/td><td><code>pipx install --include-deps ansible<\/code><\/td><td>\u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0627\u0632 PyPI<\/td><td>\u062a\u0648\u0633\u0639\u0647\u060c \u062a\u0633\u062a \u06cc\u0627 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0686\u0646\u062f\u0646\u0633\u062e\u0647\u200c\u0627\u06cc<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u0631\u0648\u0634 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc production<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 production\u060c Ansible \u0631\u0627 \u0627\u0632 PPA \u0631\u0633\u0645\u06cc Ansible \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u067e\u0627\u06cc\u062f\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0645\u0646\u0638\u0645 \u0627\u0632 \u0637\u0631\u06cc\u0642 apt upgrade \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u062a\u0627\u0646 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u062f. \u0627\u06cc\u0646 PPA \u062a\u0648\u0633\u0637 \u067e\u0631\u0648\u0698\u0647 Ansible \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0632 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u0648 24.04 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0631\u0648\u0634 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627 \u062a\u0633\u062a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627 \u062a\u0633\u062a\u060c pipx \u0627\u0628\u0632\u0627\u0631 Ansible \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc Python \u0627\u06cc\u0632\u0648\u0644\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 \u062a\u062f\u0627\u062e\u0644 \u0628\u0627 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc Python \u0633\u0637\u062d \u0633\u06cc\u0633\u062a\u0645 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0686\u0646\u062f \u0646\u0633\u062e\u0647 \u0627\u0632 Ansible \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc Ansible \u0627\u06a9\u0646\u0648\u0646 pipx \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0631\u0648\u0634 \u0646\u0635\u0628 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc\u200c\u0634\u062f\u0647 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a\u061b \u062a\u0627 \u062d\u062f\u06cc \u062f\u0631 \u067e\u0627\u0633\u062e \u0628\u0647 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc PEP 668 \u062f\u0631 Python \u0628\u0631\u0627\u06cc \u0646\u0635\u0628\u200c\u0647\u0627\u06cc \u0633\u0631\u0627\u0633\u0631\u06cc pip \u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f1 \u2014 \u0646\u0635\u0628 Ansible \u0627\u0632 \u0637\u0631\u06cc\u0642 PPA (\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PPA \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Ansible \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u067e\u0627\u06cc\u062f\u0627\u0631 \u067e\u06a9\u06cc\u062c Community \u0622\u0646 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0641\u0632\u0648\u062f\u0646 PPA \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627\u060c \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u0635\u0628 \u0646\u0628\u0648\u062f\u0646\u060c \u067e\u06a9\u06cc\u062c software-properties-common \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c \u062f\u0633\u062a\u0648\u0631 apt-add-repository \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install software-properties-common<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633\u060c PPA \u0631\u0633\u0645\u06cc Ansible \u0631\u0627 \u0628\u0647 \u0641\u0647\u0631\u0633\u062a \u0645\u0646\u0627\u0628\u0639 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-add-repository ppa:ansible\/ansible<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u060c \u0628\u0631\u0627\u06cc \u067e\u0630\u06cc\u0631\u0634 \u0627\u0641\u0632\u0648\u062f\u0646 PPA \u06a9\u0644\u06cc\u062f ENTER \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0627\u06cc\u0646\u062f\u06a9\u0633 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0648 \u0646\u0635\u0628 Ansible<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062f\u06a9\u0633 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0631\u0627 \u0631\u0641\u0631\u0634 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 PPA \u062a\u0627\u0632\u0647 \u0627\u0636\u0627\u0641\u0647\u200c\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0628\u0631 \u0628\u06af\u06cc\u0631\u062f \u0648 \u0633\u067e\u0633 Ansible \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install ansible<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0623\u06cc\u06cc\u062f \u0646\u0633\u062e\u0647 \u0646\u0635\u0628\u200c\u0634\u062f\u0647 Ansible<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0635\u0628 \u0631\u0627 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0646\u0633\u062e\u0647 Ansible \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible &#91;core 2.17.x]\n  config file = \/etc\/ansible\/ansible.cfg\n  configured module search path = &#91;'\/home\/sammy\/.ansible\/plugins\/modules', '\/usr\/share\/ansible\/plugins\/modules']\n  ansible python module location = \/usr\/lib\/python3\/dist-packages\/ansible\n  ansible collection location = \/home\/sammy\/.ansible\/collections:\/usr\/share\/ansible\/collections\n  executable location = \/usr\/bin\/ansible\n  python version = 3.10.12 (main, ...) &#91;GCC 11.4.0]\n  jinja version = 3.0.3\n  libyaml = True<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0645\u0627\u0631\u0647 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0647\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062e\u0631\u0648\u062c\u06cc\u060c \u0646\u0635\u0628 Ansible \u0648 \u0646\u0633\u062e\u0647 Python \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0622\u0646 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f2 \u2014 \u0646\u0635\u0628 Ansible \u0628\u0627 apt (\u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0648\u0628\u0648\u0646\u062a\u0648)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f \u0648 \u0628\u0647 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f Ansible \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0648 \u0628\u062f\u0648\u0646 \u0627\u0641\u0632\u0648\u062f\u0646 \u0647\u06cc\u0686 PPA \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install ansible<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0633\u062e\u0647 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0628\u0647 \u0646\u0633\u062e\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u06cc \u0634\u0645\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u062f\u0631 \u0645\u062e\u0627\u0632\u0646 \u062e\u0648\u062f \u062f\u0627\u0631\u0627\u06cc Ansible \u0646\u0633\u062e\u0647 2.10.x \u0627\u0633\u062a\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u0631\u0627 \u0634\u0627\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u0631\u0627\u062d\u0644 \u06a9\u0645\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f \u0627\u0645\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u0622\u062e\u0631\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u0648 \u0631\u0641\u0639 \u0627\u0634\u06a9\u0627\u0644\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 Ansible \u0639\u0642\u0628 \u0628\u0645\u0627\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0646\u0633\u062e\u0647 \u0645\u0648\u062c\u0648\u062f \u0642\u0628\u0644 \u0627\u0632 \u0646\u0635\u0628:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-cache policy ansible<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0628\u0647 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0627\u0632 \u0631\u0648\u0634 PPA \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u06f1 \u06cc\u0627 \u0631\u0648\u0634 pipx \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u06f3 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f3 \u2014 \u0646\u0635\u0628 Ansible \u0628\u0627 pipx (\u067e\u06cc\u0634\u0631\u0641\u062a\u0647)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u0632\u0627\u0631 pipx \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc Python \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0627\u06cc\u0632\u0648\u0644\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 Ansible \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc\u0634 \u0631\u0627 \u0627\u0632 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc Python \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u062c\u062f\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0635\u0628 pipx \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u0648 24.04\u060c pipx \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install pipx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0645\u0633\u06cc\u0631 ~\/.local\/bin \u062f\u0631 PATH \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f. \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pipx ensurepath<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0631\u0627 \u0628\u0628\u0646\u062f\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f\u060c \u06cc\u0627 \u0628\u0631\u0627\u06cc \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631 PATH \u062f\u0633\u062a\u0648\u0631 <code>source ~\/.bashrc<\/code> (\u06cc\u0627 <code>source ~\/.zshrc<\/code> \u0627\u06af\u0631 \u0627\u0632 Zsh \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f) \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0635\u0628 Ansible \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0627\u06cc\u0632\u0648\u0644\u0647 pipx<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u06cc\u0631\u0627\u0646\u06cc:<\/strong> \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0633\u0631\u06cc\u0639\u200c\u062a\u0631 \u0648 \u067e\u0627\u06cc\u062f\u0627\u0631\u062a\u0631 \u0628\u0647 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc PyPI \u0647\u0646\u06af\u0627\u0645 \u0646\u0635\u0628 \u0628\u0627 pipx\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646\u062f\u06a9\u0633 pip \u0631\u0627 \u0631\u0648\u06cc \u0645\u06cc\u0631\u0648\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export PIP_INDEX_URL=https:\/\/pypi.parmincloud.ir\/simple\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645 \u062f\u0631 \u0646\u0634\u0633\u062a \u0641\u0639\u0644\u06cc \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0647\u0645\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a pipx (\u0627\u0632 \u062c\u0645\u0644\u0647 \u0646\u0635\u0628 \u0648 \u0627\u0631\u062a\u0642\u0627) \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u06a9\u06cc\u062c \u06a9\u0627\u0645\u0644 Ansible Community \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pipx install --include-deps ansible<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0644\u06af &#8211;include-deps \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a\u061b \u0686\u0631\u0627 \u06a9\u0647 \u067e\u06a9\u06cc\u062c ansible \u0628\u0647 ansible-core \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u062f\u06cc\u06af\u0631 \u0648\u0627\u0628\u0633\u062a\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0641\u0642\u0637 \u067e\u06a9\u06cc\u062c \u0645\u06cc\u0646\u06cc\u0645\u0627\u0644 ansible-core \u0628\u0647\u200c\u062c\u0627\u06cc \u0622\u0646:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pipx install ansible-core<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0635\u0628 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible --version<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u062f\u0647\u06cc\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 pipx \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ansible \u0631\u0627 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc Python \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0627\u06cc\u0632\u0648\u0644\u0647 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f<\/li>\n\n\n\n<li>\u06cc\u06a9 \u0646\u0633\u062e\u0647 \u062e\u0627\u0635 \u0627\u0632 Ansible \u0631\u0627 \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/li>\n\n\n\n<li>\u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0646\u0635\u0628 \u0628\u0627 pip \u062f\u0631 \u0622\u0646 \u062a\u0648\u0633\u0637 PEP 668 \u0645\u062d\u062f\u0648\u062f \u0634\u062f\u0647 \u0627\u0633\u062a (\u0631\u0627\u06cc\u062c \u062f\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0622\u0646)<\/li>\n\n\n\n<li>Playbook\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 Ansible \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f4 \u2014 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0641\u0627\u06cc\u0644 Inventory<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 Inventory \u0628\u0647 Ansible \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u062f\u0627\u0645 \u0647\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627\u06cc\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9 \u062a\u0627 \u0635\u062f\u0647\u0627 \u0633\u0631\u0648\u0631 \u0631\u0627 \u062f\u0631 \u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0648 \u0632\u06cc\u0631\u06af\u0631\u0648\u0647\u200c\u0647\u0627 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f. \u0641\u0627\u06cc\u0644 Inventory \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627 \u06cc\u0627 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u062e\u0627\u0635 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u2014 \u0645\u0627\u0646\u0646\u062f \u0645\u0633\u06cc\u0631 \u0645\u0641\u0633\u0631 Python \u06cc\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 SSH \u2014 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062f\u0631\u06a9 \u0645\u06a9\u0627\u0646 \u0641\u0627\u06cc\u0644 Inventory \u067e\u06cc\u0634\u200c\u0641\u0631\u0636<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ansible \u0647\u0646\u06af\u0627\u0645 \u0646\u0635\u0628 \u0627\u0632 \u0637\u0631\u06cc\u0642 PPA \u06cc\u0627 apt\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 Inventory \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062f\u0631 \u0645\u0633\u06cc\u0631 \/etc\/ansible\/hosts \u0645\u06cc\u200c\u0633\u0627\u0632\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/ansible\/hosts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Inventory \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0645\u06a9\u0627\u0646\u06cc \u0628\u0633\u0627\u0632\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 Inventory \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 -i \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a Ansible \u067e\u0627\u0633 \u062f\u0647\u06cc\u062f. \u0645\u062b\u0644\u0627\u064b: <code>ansible all -m ping -i \/path\/to\/inventory<\/code>. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc Inventory \u0645\u062e\u0635\u0648\u0635 \u0647\u0631 \u067e\u0631\u0648\u0698\u0647\u060c \u0639\u0645\u0644 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a \u062a\u0627 \u0631\u06cc\u0633\u06a9 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 Playbook \u0631\u0648\u06cc \u06af\u0631\u0648\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 \u0633\u0631\u0648\u0631\u0647\u0627 \u06a9\u0645\u06cc\u0646\u0647 \u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06af\u0631\u0648\u0647\u200c\u0628\u0646\u062f\u06cc \u0647\u0627\u0633\u062a\u200c\u0647\u0627 \u0648 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0647\u0627\u0633\u062a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u06af\u0631\u0648\u0647\u06cc \u0628\u0627 \u0646\u0627\u0645 <code>[servers]<\/code> \u0634\u0627\u0645\u0644 \u0633\u0647 \u0647\u0627\u0633\u062a \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0628\u0627 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0633\u0641\u0627\u0631\u0634\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc IP \u0631\u0627 \u0628\u0627 \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc IP \u0648\u0627\u0642\u0639\u06cc \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u062e\u0648\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>\/etc\/ansible\/hosts<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;servers]\nserver1 ansible_host=203.0.113.111\nserver2 ansible_host=203.0.113.112\nserver3 ansible_host=203.0.113.113<\/code><\/pre>\n\n\n<p>[all:vars]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ansible_python_interpreter=\/usr\/bin\/python3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062e\u0634 <code>[all:vars]<\/code> \u0645\u062a\u063a\u06cc\u0631 ansible_python_interpreter \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 Inventory \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0647 Ansible \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0627\u0632 \/usr\/bin\/python3 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. Python 3 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u0648 24.04 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0635\u0631\u06cc\u062d \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0627\u0632 \u0647\u0634\u062f\u0627\u0631\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0634\u0641 (Discovery) \u0645\u0641\u0633\u0631 Python \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u06a9\u0627\u0631\u062a\u0627\u0646 \u062a\u0645\u0627\u0645 \u0634\u062f\u060c \u0628\u0627 \u0641\u0634\u0631\u062f\u0646 CTRL+X \u0648 \u0633\u067e\u0633 Y \u0648 ENTER \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0623\u06cc\u06cc\u062f Inventory<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u06cc\u0646\u06a9\u0647 Ansible \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0641\u0627\u06cc\u0644 Inventory \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u062a\u062c\u0632\u06cc\u0647 (Parse) \u06a9\u0646\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible-inventory --list -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u06cc\u0646 \u0631\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>all:\n  children:\n    servers:\n      hosts:\n        server1:\n          ansible_host: 203.0.113.111\n          ansible_python_interpreter: \/usr\/bin\/python3\n        server2:\n          ansible_host: 203.0.113.112\n          ansible_python_interpreter: \/usr\/bin\/python3\n        server3:\n          ansible_host: 203.0.113.113\n          ansible_python_interpreter: \/usr\/bin\/python3\n    ungrouped: {}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062e\u0631\u0648\u062c\u06cc\u060c \u0647\u0627\u0633\u062a\u200c\u0647\u0627 \u0648 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0645\u0646\u0639\u06a9\u0633 \u06a9\u0646\u062f\u060c Inventory \u0634\u0645\u0627 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f5 \u2014 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u06a9\u0644\u06cc\u062f SSH<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ansible \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0627\u0632 SSH \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0647\u0631 \u062f\u0633\u062a\u0648\u0631 Ansible\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u062f\u0648\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u060c \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0628\u0647 \u0647\u0631 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0648\u0644\u06cc\u062f \u062c\u0641\u062a \u06a9\u0644\u06cc\u062f SSH \u0631\u0648\u06cc \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u0631\u0648\u06cc \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u062e\u0648\u062f \u062c\u0641\u062a \u06a9\u0644\u06cc\u062f SSH \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-keygen -t ed25519 -C \"ansible-control-node\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u06cc\u062f ENTER \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0645\u06a9\u0627\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0641\u0627\u06cc\u0644 (~\/.ssh\/id_ed25519) \u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0634\u0648\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u06cc\u06a9 Passphrase \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0628\u0631\u0627\u06cc \u0631\u062f \u06a9\u0631\u062f\u0646 \u0622\u0646\u060c ENTER \u0631\u0627 \u0628\u0632\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06a9\u067e\u06cc \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0628\u0647 \u0647\u0631 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 ssh-copy-id \u0628\u0631\u0627\u06cc \u06a9\u067e\u06cc \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u062e\u0648\u062f \u0628\u0647 \u0647\u0631 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc root \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0648 \u0628\u0647\u200c\u062c\u0627\u06cc 203.0.113.111 \u0622\u062f\u0631\u0633 IP \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0631\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-copy-id root@203.0.113.111<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0641\u0647\u0631\u0633\u062a\u200c\u0634\u062f\u0647 \u062f\u0631 Inventory \u062e\u0648\u062f \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0633\u062a \u062f\u0633\u062a\u06cc \u0627\u062a\u0635\u0627\u0644 SSH<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc Ansible\u060c \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0648\u0627\u0631\u062f \u0647\u0631 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0634\u0648\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@203.0.113.111<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0645\u062a\u0635\u0644 \u0634\u062f\u06cc\u062f\u060c \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644\u060c exit \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u06cc\u0627 \u062e\u0637\u0627 \u062f\u06cc\u062f\u06cc\u062f\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647\u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0644\u06cc\u062f SSH \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f6 \u2014 \u062a\u0633\u062a \u0627\u062a\u0635\u0627\u0644 Ansible<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Inventory \u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc SSH\u060c \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 Ansible \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u0647\u0645\u0647 \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0634\u0645\u0627 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u062c\u0631\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 ping \u0631\u0648\u06cc Inventory<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible all -m ping -u root<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u062f\u0627\u062e\u0644\u06cc ping \u0627\u0646\u0635\u06cc\u0628\u0644 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0647\u0631 \u0647\u0627\u0633\u062a \u0645\u0648\u062c\u0648\u062f \u062f\u0631 Inventory \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0641\u0644\u06af -u root \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06af\u0631 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u06a9\u0627\u0631\u0628\u0631 sudo \u0645\u0639\u0645\u0648\u0644\u06cc \u062f\u0627\u0631\u0646\u062f\u060c root \u0631\u0627 \u0628\u0627 \u0622\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627\u0698\u0648\u0644 ping \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u062a\u0633\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0647\u0631 \u0647\u0627\u0633\u062a \u0631\u0648\u06cc \u0634\u0628\u06a9\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a<\/li>\n\n\n\n<li>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a SSH \u0634\u0645\u0627 \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a<\/li>\n\n\n\n<li>\u0647\u0627\u0633\u062a \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Ansible \u0631\u0627 \u0628\u0627 Python \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0641\u0633\u06cc\u0631 \u067e\u0627\u0633\u062e \u0645\u0648\u0641\u0642<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0633\u062e \u0645\u0648\u0641\u0642 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0633\u062a:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server1 | SUCCESS =&gt; {\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\nserver2 | SUCCESS =&gt; {\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\nserver3 | SUCCESS =&gt; {\n    \"changed\": false,\n    \"ping\": \"pong\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0633\u062e <code>\"pong\"<\/code> \u0627\u0632 \u06cc\u06a9 \u0647\u0627\u0633\u062a \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 Ansible \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0631\u0648\u06cc \u0622\u0646 \u0633\u0631\u0648\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u06cc\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631\u0648\u0631\u0647\u0627 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f\u060c \u0627\u0632 \u0634\u0645\u0627 \u062e\u0648\u0627\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u062b\u0631 \u0627\u0646\u06af\u0634\u062a \u06a9\u0644\u06cc\u062f \u0647\u0627\u0633\u062a (Host Key Fingerprint) \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0647\u0631 \u0647\u0627\u0633\u062a\u060c yes \u062a\u0627\u06cc\u067e \u06a9\u0631\u062f\u0647 \u0648 ENTER \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0641\u0633\u06cc\u0631 \u0648 \u0631\u0641\u0639 \u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc \u062e\u0637\u0627\u06cc \u0631\u0627\u06cc\u062c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u06cc\u06a9 \u0647\u0627\u0633\u062a \u0645\u0642\u062f\u0627\u0631 UNREACHABLE \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0622\u062f\u0631\u0633 IP \u0647\u0627\u0633\u062a \u062f\u0631 Inventory \u0634\u0645\u0627 \u062f\u0631\u0633\u062a \u0627\u0633\u062a<\/li>\n\n\n\n<li>SSH \u0631\u0648\u06cc \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a<\/li>\n\n\n\n<li>\u06a9\u0644\u06cc\u062f SSH \u0634\u0645\u0627 \u0628\u0647 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u06a9\u067e\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a<\/li>\n\n\n\n<li>\u0647\u06cc\u0686 \u0642\u0627\u0646\u0648\u0646 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644\u06cc \u067e\u0648\u0631\u062a 22 \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u0646\u06a9\u0631\u062f\u0647 \u0627\u0633\u062a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0627\u062a\u0635\u0627\u0644\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc Cheat Sheet \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Ansible \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f7 \u2014 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a Ad-Hoc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0633\u062a\u0648\u0631\u0627\u062a Ad-Hoc \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0628\u062f\u0648\u0646 \u0646\u0648\u0634\u062a\u0646 Playbook\u060c \u06cc\u06a9 \u0648\u0638\u06cc\u0641\u0647 \u0648\u0627\u062d\u062f \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u200c\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u0648 \u06cc\u06a9\u200c\u0628\u0627\u0631\u0645\u0635\u0631\u0641 \u2014 \u0645\u062b\u0644 \u0628\u0631\u0631\u0633\u06cc \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9\u060c \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u0646\u0635\u0628 \u06cc\u06a9 \u067e\u06a9\u06cc\u062c \u2014 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0633\u06cc\u0646\u062a\u06a9\u0633 \u062f\u0633\u062a\u0648\u0631 Ad-Hoc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u06cc\u0646\u062a\u06a9\u0633 \u06a9\u0644\u06cc \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 Ad-Hoc \u062f\u0631 Ansible \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible host-pattern -m module -a \"module arguments\" -u remote_user<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>host-pattern<\/code>: \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0647\u062f\u0641 (all\u060c \u0646\u0627\u0645 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u06cc\u0627 \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0645\u0633\u062a\u0639\u0627\u0631 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062e\u0627\u0635)<\/li>\n\n\n\n<li><code>-m<\/code>: \u0645\u0627\u0698\u0648\u0644 Ansible \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/li>\n\n\n\n<li><code>-a<\/code>: \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 \u067e\u0627\u0633 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f<\/li>\n\n\n\n<li><code>-u<\/code>: \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc \u0645\u0635\u0631\u0641 \u062f\u06cc\u0633\u06a9 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u0635\u0631\u0641 \u062f\u06cc\u0633\u06a9 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Inventory \u062e\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible all -a \"df -h\" -u root<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server1 | CHANGED | rc=0 &gt;&gt;\nFilesystem      Size  Used Avail Use% Mounted on\nudev            3.9G     0  3.9G   0% \/dev\ntmpfs           798M  624K  798M   1% \/run\n\/dev\/vda1       155G  2.3G  153G   2% \/\ntmpfs           3.9G     0  3.9G   0% \/dev\/shm\ntmpfs           5.0M     0  5.0M   0% \/run\/lock\n\/dev\/vda15      105M  3.6M  101M   4% \/boot\/efi\ntmpfs           798M     0  798M   0% \/run\/user\/0\n\n...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u0628\u0627 -m \u0645\u0634\u062e\u0635 \u0646\u06a9\u0646\u06cc\u062f\u060c Ansible \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 command \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u062f\u0633\u062a\u0648\u0631 \u0634\u0644 \u062f\u0627\u062f\u0647\u200c\u0634\u062f\u0647 \u0631\u0627 \u0631\u0648\u06cc \u0647\u0631 \u0647\u0627\u0633\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc uptime \u0648 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0633\u06cc\u0633\u062a\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc uptime \u0647\u0645\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06af\u0631\u0648\u0647 servers:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible servers -a \"uptime\" -u root<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u06cc\u06a9 \u067e\u06a9\u06cc\u062c \u0628\u0627 \u0645\u0627\u0698\u0648\u0644 apt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible all -m apt -a \"name=vim state=latest\" -u root<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0646\u0641\u0631\u062f \u06cc\u0627 \u0686\u0646\u062f \u0647\u0627\u0633\u062a\u0650 \u062c\u062f\u0627\u200c\u0634\u062f\u0647 \u0628\u0627 \u062f\u0648\u0646\u0642\u0637\u0647 \u0631\u0627 \u0647\u062f\u0641 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible server1:server2 -m ping -u root<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u200c\u0647\u0627 \u0648 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u060c \u0645\u0642\u0627\u0644\u0647 \u00ab\u0645\u062f\u06cc\u0631\u06cc\u062a \u0686\u0646\u062f \u0633\u0631\u0648\u0631 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u062a Ad Hoc \u062f\u0631 Ansible\u00bb \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f8 \u2014 \u0646\u0648\u0634\u062a\u0646 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 Playbook<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Playbook\u0647\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc YAML \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0648\u0638\u0627\u06cc\u0641 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0631\u0648\u06cc \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0627\u06af\u0631\u0686\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a Ad-Hoc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc \u0633\u0631\u06cc\u0639 \u06a9\u0627\u0641\u06cc\u200c\u0627\u0646\u062f\u060c Playbook\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646\u0650 \u0642\u0627\u0628\u0644\u200c\u062a\u06a9\u0631\u0627\u0631 \u0648 \u0642\u0627\u0628\u0644\u200c\u06a9\u0646\u062a\u0631\u0644\u200c\u0646\u0633\u062e\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a\u0627\u0631 YAML \u0648 \u0645\u0628\u0627\u0646\u06cc \u0633\u06cc\u0646\u062a\u06a9\u0633 Playbook<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 Playbook \u0627\u0632 \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f Play \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0647\u0631 Play \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>hosts<\/code>: \u06a9\u062f\u0627\u0645 \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0647\u062f\u0641 \u0642\u0631\u0627\u0631 \u0628\u06af\u06cc\u0631\u0646\u062f<\/li>\n\n\n\n<li><code>become<\/code>: \u0622\u06cc\u0627 \u0648\u0638\u0627\u06cc\u0641 \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0627\u0644\u0627\u062a\u0631 (sudo) \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f<\/li>\n\n\n\n<li><code>tasks<\/code>: \u0641\u0647\u0631\u0633\u062a \u0645\u0631\u062a\u0628\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u06cc\u06a9 Playbook \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc apt \u0631\u0648\u06cc \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc Playbook\u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0633\u067e\u0633 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 Playbook \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir ~\/ansible-practice\nnano ~\/ansible-practice\/update-apt.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u062a\u0648\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>~\/ansible-practice\/update-apt.yml<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- hosts: all\n  become: true\n  tasks:\n    - name: Update apt package cache\n      apt:\n        update_cache: yes\n\n    - name: Upgrade all packages to the latest version\n      apt:\n        upgrade: dist\n\n    - name: Remove unused dependencies\n      apt:\n        autoremove: yes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Playbook \u0628\u0647 \u0647\u0645\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc Inventory \u0634\u0645\u0627 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0631\u0627 \u0628\u0627 sudo \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f (<code>become: true<\/code>)\u060c \u06a9\u0634 apt \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0647\u0645\u0647 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0631\u0627 \u0627\u0631\u062a\u0642\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0646\u0634\u062f\u0647 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u062c\u0631\u0627\u06cc Playbook<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Playbook \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 ansible-playbook \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible-playbook ~\/ansible-practice\/update-apt.yml -u root<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0627\u0632 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 root \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 sudo\u060c \u0641\u0644\u06af &#8211;ask-become-pass \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible-playbook ~\/ansible-practice\/update-apt.yml -u sammy --ask-become-pass<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0641\u0633\u06cc\u0631 \u062e\u0631\u0648\u062c\u06cc Playbook<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc\u060c \u0648\u0636\u0639\u06cc\u062a \u0647\u0631 \u0648\u0638\u06cc\u0641\u0647 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PLAY &#91;all] *********************************************************************\n\nTASK &#91;Gathering Facts] *********************************************************\nok: &#91;server1]\nok: &#91;server2]\nok: &#91;server3]\n\nTASK &#91;Update apt package cache] ************************************************\nchanged: &#91;server1]\nchanged: &#91;server2]\nchanged: &#91;server3]\n\nTASK &#91;Upgrade all packages to the latest version] ******************************\nchanged: &#91;server1]\nchanged: &#91;server2]\nchanged: &#91;server3]\n\nTASK &#91;Remove unused dependencies] **********************************************\nok: &#91;server1]\nok: &#91;server2]\nok: &#91;server3]\n\nPLAY RECAP *********************************************************************\nserver1                    : ok=4    changed=2    unreachable=0    failed=0    skipped=0\nserver2                    : ok=4    changed=2    unreachable=0    failed=0    skipped=0\nserver3                    : ok=4    changed=2    unreachable=0    failed=0    skipped=0<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ok<\/code> \u06cc\u0639\u0646\u06cc \u0648\u0638\u06cc\u0641\u0647 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u062c\u0631\u0627 \u0634\u062f \u0648 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0632 \u0642\u0628\u0644 \u062f\u0631 \u0648\u0636\u0639\u06cc\u062a \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a.<\/li>\n\n\n\n<li><code>changed<\/code> \u06cc\u0639\u0646\u06cc \u0648\u0638\u06cc\u0641\u0647 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/li>\n\n\n\n<li><code>failed<\/code> \u06cc\u0639\u0646\u06cc \u0648\u0638\u06cc\u0641\u0647 \u0628\u0627 \u062e\u0637\u0627 \u0631\u0648\u0628\u0631\u0648 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 \u0646\u0648\u0634\u062a\u0646 Playbook\u0647\u0627\u060c \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u0642\u0627\u0644\u0627\u062a \u00ab\u0646\u062d\u0648\u0647 \u0646\u0648\u0634\u062a\u0646 Playbook\u0647\u0627\u06cc Ansible\u00bb \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0631\u062a\u0642\u0627 \u0648 \u062d\u0630\u0641 Ansible<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0631\u062a\u0642\u0627\u06cc Ansible<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Ansible \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 PPA \u06cc\u0627 \u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0633\u0627\u06cc\u0631 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt upgrade ansible<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Ansible \u0631\u0627 \u0628\u0627 pipx \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pipx upgrade ansible<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u0632 \u0627\u0631\u062a\u0642\u0627\u060c \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible --version<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062d\u0630\u0641 Ansible<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062d\u0630\u0641 Ansible \u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 apt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt remove ansible\nsudo apt autoremove<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062d\u0630\u0641 Ansible \u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 pipx:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pipx uninstall ansible<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627\u06cc\u062c<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u0634\u06a9\u0633\u062a \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0644\u06cc\u062f \u0647\u0627\u0633\u062a SSH<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <code>Host key verification failed<\/code> \u062f\u06cc\u062f\u06cc\u062f\u060c \u0627\u062b\u0631 \u0627\u0646\u06af\u0634\u062a SSH \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u06cc\u0627 \u0647\u0646\u0648\u0632 \u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u062a\u0635\u0627\u0644 \u062f\u0633\u062a\u06cc \u0628\u0647 \u0647\u0627\u0633\u062a \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0648 \u067e\u0630\u06cc\u0631\u0634 \u0627\u062b\u0631 \u0627\u0646\u06af\u0634\u062a\u060c \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0631\u0641\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@203.0.113.111<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0650 \u0627\u0641\u0632\u0648\u062f\u0646 \u0647\u0627\u0633\u062a \u0628\u0647 \u0641\u0627\u06cc\u0644 known hosts \u062e\u0648\u062f\u060c yes \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0631\u062f \u06a9\u0631\u062f\u0646 (Skip) \u0628\u0631\u0631\u0633\u06cc \u06a9\u0644\u06cc\u062f \u0647\u0627\u0633\u062a \u062f\u0631 \u0647\u0645\u0647 \u0627\u062a\u0635\u0627\u0644\u0627\u062a Ansible (\u062f\u0631 \u0645\u062d\u06cc\u0637 production \u062a\u0648\u0635\u06cc\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f)\u060c \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 ansible.cfg \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u06cc\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export ANSIBLE_HOST_KEY_CHECKING=False<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u0646 \u0645\u0641\u0633\u0631 Python \u0631\u0648\u06cc \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Ansible \u062e\u0637\u0627\u06cc MODULE FAILURE \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u067e\u06cc\u0627\u0645\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0645\u0641\u0633\u0631 Python \u06af\u0632\u0627\u0631\u0634 \u06a9\u0631\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 Python 3 \u0646\u0635\u0628 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@203.0.113.111 \"apt update &amp;&amp; apt install python3 -y\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0645\u062a\u063a\u06cc\u0631 ansible_python_interpreter \u062f\u0631 Inventory \u0634\u0645\u0627 \u0631\u0648\u06cc \/usr\/bin\/python3 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062e\u0637\u0627\u06cc Permission denied \u0647\u0646\u06af\u0627\u0645 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0637\u0627\u06cc <code>Permission denied (publickey)<\/code> \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u06cc\u0639\u0646\u06cc \u06a9\u0644\u06cc\u062f SSH \u0634\u0645\u0627 \u0628\u0647 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u06a9\u067e\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0633\u062a\u0648\u0631 ssh-copy-id \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-copy-id root@203.0.113.111<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u063a\u06cc\u0631 root \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0622\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u0648 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 ~\/.ssh\/authorized_keys \u0627\u0648 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0646\u062f\u0627\u0634\u062a\u0646 \u0647\u0627\u0633\u062a Inventory<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062f\u0633\u062a\u0648\u0631 <code>ansible all -m ping<\/code> \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0647\u0627\u0633\u062a \u0645\u0642\u062f\u0627\u0631 UNREACHABLE \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0622\u062f\u0631\u0633 IP \u062f\u0631 \u0641\u0627\u06cc\u0644 Inventory \u0634\u0645\u0627 \u062f\u0631\u0633\u062a \u0627\u0633\u062a<\/li>\n\n\n\n<li>\u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0631\u0648\u0634\u0646 \u0648 \u0645\u062a\u0635\u0644 \u0628\u0647 \u0634\u0628\u06a9\u0647 \u0627\u0633\u062a<\/li>\n\n\n\n<li>SSH \u0631\u0648\u06cc \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a: <code>sudo systemctl status ssh<\/code><\/li>\n\n\n\n<li>\u0647\u06cc\u0686 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644\u06cc \u0631\u0648\u06cc \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647\u060c \u067e\u0648\u0631\u062a 22 \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u0646\u06a9\u0631\u062f\u0647 \u0627\u0633\u062a: <code>sudo ufw status<\/code><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f1. \u062a\u0641\u0627\u0648\u062a \u0646\u0635\u0628 Ansible \u0628\u0627 apt \u0648 \u0628\u0627 PPA \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Ansible \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0686\u06cc\u0633\u062a\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 apt \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u060c \u0646\u0633\u062e\u0647\u200c\u0627\u06cc \u0627\u0632 Ansible \u0631\u0627 \u0639\u0631\u0636\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0634\u062f\u0646 \u0646\u0633\u062e\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0628\u0647\u200c\u0631\u0648\u0632 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0639\u0645\u062f\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0641\u0642\u0637 \u067e\u0686\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc. PPA \u0631\u0633\u0645\u06cc Ansible (ppa:ansible\/ansible) \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u067e\u0627\u06cc\u062f\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 Ansible \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631\u060c \u0631\u0641\u0639 \u0627\u0634\u06a9\u0627\u0644\u200c\u0647\u0627 \u0648 \u0628\u0647\u0628\u0648\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631\u062a\u0627\u0646 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc production\u060c \u0631\u0648\u0634 PPA \u0627\u0646\u062a\u062e\u0627\u0628 \u0628\u0647\u062a\u0631\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f2. \u0622\u06cc\u0627 Ansible \u0628\u0627\u06cc\u062f \u0631\u0648\u06cc \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0646\u0635\u0628 \u0634\u0648\u062f\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u06cc\u0631. Ansible \u0627\u0632 \u0645\u0639\u0645\u0627\u0631\u06cc \u0628\u062f\u0648\u0646 Agent \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0634\u0645\u0627 \u0641\u0642\u0637 Ansible \u0631\u0627 \u0631\u0648\u06cc \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0628\u0647 Python 3 (\u06a9\u0647 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u0648 24.04 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0639\u0631\u0636\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f) \u0648 \u06cc\u06a9 \u0633\u0631\u0648\u0631 SSH \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f. Ansible \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0628\u0647 \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f3. \u0622\u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 Ansible \u0631\u0627 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0628\u062f\u0648\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc root \u0646\u0635\u0628 \u06a9\u0646\u0645\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 <code>pipx install --include-deps ansible<\/code>\u060c \u0627\u0628\u0632\u0627\u0631 Ansible \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0633\u0637\u062d \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 sudo \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627 \u0645\u0648\u0642\u0639\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0633\u06cc\u0627\u0631 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f4. \u0686\u0637\u0648\u0631 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u0645 \u06a9\u0647 Ansible \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0633\u062a\u0648\u0631 <code>ansible --version<\/code> \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u062e\u0631\u0648\u062c\u06cc\u060c \u0646\u0633\u062e\u0647 \u0646\u0635\u0628\u200c\u0634\u062f\u0647 Ansible\u060c \u0646\u0633\u062e\u0647 Python \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0622\u0646\u060c \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u200c\u0648\u062c\u0648\u06cc \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06af\u0631 \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u060c Ansible \u06cc\u0627 \u0646\u0635\u0628 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a \u06cc\u0627 \u062f\u0631 PATH \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0642\u0631\u0627\u0631 \u0646\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f5. \u0622\u06cc\u0627 Ansible \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u0628\u0627 \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0633\u0627\u0632\u06af\u0627\u0631 \u0627\u0633\u062a\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. Ansible \u0628\u0631\u0627\u06cc \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u060c \u0628\u06cc\u0646\u200c\u0646\u0633\u062e\u0647\u200c\u0627\u06cc \u0633\u0627\u0632\u06af\u0627\u0631 \u0627\u0633\u062a. \u06cc\u06a9 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 22.04 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0646\u0648\u062f\u0647\u0627\u06cc\u06cc \u0628\u0627 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f \u0648 \u0628\u0631\u0639\u06a9\u0633\u061b \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 Python 3 \u0648 SSH \u0631\u0648\u06cc \u0646\u0648\u062f\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0634\u0646\u062f. \u0627\u0631\u062a\u0628\u0627\u0637 Ansible \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0628\u0647 \u062a\u0637\u0627\u0628\u0642 \u0646\u0633\u062e\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0628\u0627 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c Ansible \u0631\u0627 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0628\u0627 \u0631\u0648\u0634 PPA \u0646\u0635\u0628 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0641\u0627\u06cc\u0644 Inventory \u0631\u0627 \u0628\u0627 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u06cc\u062f\u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u06a9\u0644\u06cc\u062f SSH \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u062f\u060c \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u0628\u0627 \u0645\u0627\u0698\u0648\u0644 ping \u062a\u0633\u062a \u06a9\u0631\u062f\u06cc\u062f\u060c \u062f\u0633\u062a\u0648\u0631\u0627\u062a Ad-Hoc \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u062f \u0648 \u0627\u0648\u0644\u06cc\u0646 Playbook \u062e\u0648\u062f \u0631\u0627 \u0633\u0627\u062e\u062a\u06cc\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0646\u0635\u0628 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0628\u0627 pipx \u0648 \u0645\u062e\u0632\u0646 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0622\u0634\u0646\u0627 \u0634\u062f\u06cc\u062f \u0648 \u0645\u0631\u0627\u062d\u0644 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0631\u0627\u06cc\u062c \u0645\u0634\u06a9\u0644\u0627\u062a SSH \u0648 \u0627\u062a\u0635\u0627\u0644 \u0631\u0627 \u0645\u0631\u0648\u0631 \u06a9\u0631\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ansible \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646\u0650 \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u060c \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0633\u062a\u0645\u0631 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 \u0622\u0645\u0627\u062f\u0647 \u0628\u0648\u062f\u0646 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0648 Inventory\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0627\u062e\u062a Playbook\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u200c\u062a\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0631\u0648\u0632\u0645\u0631\u0647 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc\u062a\u0627\u0646 \u0622\u063a\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 Ansible \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0645\u062a\u0646\u200c\u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0633\u0631\u0648\u0631\u0647\u0627 \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0648\u0627\u062d\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f\u061b \u0628\u062f\u0648\u0646 \u0622\u0646\u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 Agent \u0631\u0648\u06cc \u0645\u0627\u0634\u06cc\u0646\u200c\u0647\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a\u0634\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0628\u0631\u062e\u0644\u0627\u0641 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Chef \u06cc\u0627 Puppet\u060c \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0631 Ansible \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc YAML &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7125,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131,150],"tags":[],"class_list":["post-7124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-131","category-linux"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=7124"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7124\/revisions"}],"predecessor-version":[{"id":7126,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7124\/revisions\/7126"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7125"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}