{"id":7145,"date":"2026-10-07T11:00:42","date_gmt":"2026-10-07T07:30:42","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7145"},"modified":"2026-10-07T11:00:42","modified_gmt":"2026-10-07T07:30:42","slug":"%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-ansible-%d8%a8%d8%b1%d8%a7%db%8c-%d9%86%d8%b5%d8%a8-docker-%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%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-ansible-%d8%a8%d8%b1%d8%a7%db%8c-%d9%86%d8%b5%d8%a8-docker-%d8%b1%d9%88%db%8c-%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88\/","title":{"rendered":"\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Ansible \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Docker \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\">\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0633\u0631\u0648\u0631\u0647\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u0627\u0647\u06cc\u062a \u06cc\u06a9\u200c\u0628\u0627\u0631\u0645\u0635\u0631\u0641\u0650 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u062f\u0631\u0646\u060c \u0646\u0642\u0634\u06cc \u0636\u0631\u0648\u0631\u06cc \u062f\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0627\u06cc\u0641\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0627\u0646\u0646\u062f Ansible \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0641\u0631\u0627\u06cc\u0646\u062f \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061b \u0628\u0627 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0648\u06cc\u0647\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0648 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u06a9\u0627\u0647\u0634 \u062e\u0637\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u06cc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ansible \u0645\u0639\u0645\u0627\u0631\u06cc \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632\u0645\u0646\u062f \u0646\u0635\u0628 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u062e\u0627\u0635\u06cc \u0631\u0648\u06cc \u0646\u0648\u062f\u0647\u0627 \u0646\u06cc\u0633\u062a. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0642\u0648\u06cc \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u0648 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0646\u0648\u0634\u062a\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u0633\u0627\u0632\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0686\u0637\u0648\u0631 \u0627\u0632 Ansible \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0645\u0631\u0627\u062d\u0644 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. Docker \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0641\u0631\u0627\u06cc\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u067e\u0631\u0648\u0633\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u0632 \u0646\u0638\u0631 \u0645\u0646\u0627\u0628\u0639 \u06a9\u0647 \u0631\u0641\u062a\u0627\u0631\u06cc \u0634\u0628\u06cc\u0647 \u0645\u0627\u0634\u06cc\u0646\u200c\u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u062f\u0627\u0631\u0646\u062f\u060c \u0627\u0645\u0627 \u0642\u0627\u0628\u0644\u200c\u062d\u0645\u0644\u200c\u062a\u0631\u060c \u0628\u0647\u06cc\u0646\u0647\u200c\u062a\u0631 \u0627\u0632 \u0646\u0638\u0631 \u0645\u0646\u0627\u0628\u0639 \u0648 \u0648\u0627\u0628\u0633\u062a\u0647\u200c\u062a\u0631 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 LTS \u062a\u0633\u062a \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06af\u0631\u0686\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0648\u06cc \u0633\u0627\u06cc\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0647\u0645 \u06a9\u0627\u0631 \u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0628\u0631\u062e\u06cc \u0645\u0631\u0627\u062d\u0644 \u2014 \u0645\u0627\u0646\u0646\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062e\u0632\u0646 \u2014 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062c\u0632\u0626\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<\/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>\u062a\u06a9\u0631\u0627\u0631\u067e\u0630\u06cc\u0631\u06cc (Idempotency) \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f Playbook \u0631\u0627 \u0686\u0646\u062f \u0628\u0627\u0631 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0627\u06cc\u0645\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u0628\u062f\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0646\u0627\u062e\u0648\u0627\u0633\u062a\u0647\u061b \u0686\u0648\u0646 \u0647\u0631 \u0648\u0638\u06cc\u0641\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u060c \u0648\u0636\u0639\u06cc\u062a \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062f\u0631\u0646 \u06a9\u0644\u06cc\u062f GPG\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u062e\u0632\u0646 \u0631\u0627 \u062f\u0631 \/etc\/apt\/keyrings \u0647\u0645\u0631\u0627\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc signed-by \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0641\u0631\u0645\u0627\u0646 \u0645\u0646\u0633\u0648\u062e\u200c\u0634\u062f\u0647 apt-key \u0648 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0642\u062f\u06cc\u0645\u06cc \u0645\u0627\u0698\u0648\u0644 apt_key \u062f\u0631 Ansible \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>Docker Compose v2 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u0644\u0627\u06af\u06cc\u0646 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f (docker-compose-plugin) \u0648 \u0632\u06cc\u0631\u062f\u0633\u062a\u0648\u0631 docker compose \u0631\u0627 \u0628\u0647\u200c\u062c\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0642\u062f\u06cc\u0645\u06cc docker-compose \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0645\u062a\u063a\u06cc\u0631 <code>{{ ansible_distribution_release }}<\/code> \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0631\u0645\u0632 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 (\u200ffocal\u060c jammy\u060c noble) \u0631\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u06cc\u0646\u200c\u0646\u0633\u062e\u0647\u200c\u0627\u06cc \u0631\u0627 \u0628\u062f\u0648\u0646 \u0647\u0627\u0631\u062f\u06a9\u062f\u200c\u06a9\u0631\u062f\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0627\u0635\u0650 \u0647\u0631 \u0646\u0633\u062e\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u0628\u0627\u06cc\u062f Collection \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 community.docker \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u060c \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0631\u0648\u06cc \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u062e\u0648\u062f \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 <code>ansible-galaxy collection install community.docker<\/code> \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u06cc\u06a9 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 Docker Engine \u0628\u0647 \u067e\u0646\u062c \u067e\u06a9\u06cc\u062c \u0627\u0635\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f: docker-ce\u060c docker-ce-cli\u060c containerd.io\u060c docker-buildx-plugin \u0648 docker-compose-plugin.<\/li>\n\n\n\n<li>\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0639\u0636\u0648\u06cc\u062a \u062f\u0631 \u06af\u0631\u0648\u0647 \u0646\u0627\u0634\u06cc \u0627\u0632 <code>usermod -aG docker<\/code> \u0628\u0631\u0627\u06cc \u0627\u0639\u0645\u0627\u0644 \u0634\u062f\u0646\u060c \u0646\u06cc\u0627\u0632\u0645\u0646\u062f \u062e\u0631\u0648\u062c \u0648 \u0648\u0631\u0648\u062f \u0645\u062c\u062f\u062f \u0647\u0633\u062a\u0646\u062f\u061b \u0686\u0648\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627 \u0647\u0646\u06af\u0627\u0645 \u0648\u0631\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li>\u062a\u0631\u062a\u06cc\u0628 \u062f\u0631\u0633\u062a \u0648\u0638\u0627\u06cc\u0641 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a\u061b \u0686\u0648\u0646 Ansible \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062a\u0631\u062a\u06cc\u0628\u06cc (Synchronous) \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06cc\u0639\u0646\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 gnupg \u0628\u0627\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a GPG \u0646\u0635\u0628 \u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li>\u062d\u0627\u0644\u062a Verbose (\u200f-vvv) \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0648\u0627\u0642\u0639\u06cc\u0650 \u0627\u062c\u0631\u0627\u0634\u062f\u0647 \u0648 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u06a9\u0627\u0645\u0644 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u0628\u0627\u06af \u062d\u06cc\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0634\u0628\u06a9\u0647 \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>Playbook\u0647\u0627\u06cc Ansible \u0627\u0632 \u0637\u0631\u06cc\u0642 Idempotency \u062f\u0627\u062e\u0644\u06cc\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u062e\u0648\u062f\u0645\u0633\u062a\u0646\u062f (Self-Documenting) \u0648 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0646\u0633\u062e\u0647\u060c \u062a\u06a9\u0631\u0627\u0631\u067e\u0630\u06cc\u0631\u06cc \u0628\u0631\u062a\u0631\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u0634\u0644 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\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 \u0627\u062c\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0650 \u0641\u0631\u0627\u0647\u0645\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Playbook \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \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> \u06cc\u06a9 \u0645\u0627\u0634\u06cc\u0646 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0628\u0627 Ansible \u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc Ansible \u0634\u0645\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc SSH \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f. \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0648 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u0641\u0639\u0627\u0644 \u0627\u0633\u062a\u061b \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0633\u0631\u0648\u0631 \u0628\u0627 \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647. \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Ansible\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\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\u00bb \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0647\u0627\u0633\u062a Ansible:<\/strong> \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0633\u0631\u0648\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0637\u0628\u0642 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Ansible \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0633\u0631\u0648\u0631 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0642\u0628\u0644 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible \u0634\u0645\u0627 \u0642\u0627\u062f\u0631 \u0627\u0633\u062a \u0628\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc Ansible \u0634\u0645\u0627 \u0645\u062a\u0635\u0644 \u0634\u062f\u0647 \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0631\u0627 \u0631\u0648\u06cc \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0627\u062a\u0635\u0627\u0644\u060c \u0645\u0631\u062d\u0644\u0647 \u06f3 \u0645\u0642\u0627\u0644\u0647 \u00ab\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\u00bb \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u06cc\u0646 Playbook \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Playbook \u0627\u0646\u0635\u06cc\u0628\u0644\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u06cc\u0650 \u0631\u0648\u06cc\u0647 \u062a\u0648\u0636\u06cc\u062d\u200c\u062f\u0627\u062f\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u0627\u0633\u062a. Playbook \u062e\u0648\u062f \u0631\u0627 \u06cc\u06a9 \u0628\u0627\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0635\u0628 \u0628\u0639\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 Playbook\u060c \u0627\u06cc\u0646 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0631\u0627 \u0631\u0648\u06cc \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc Ansible \u0634\u0645\u0627 \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0646\u0635\u0628 aptitude \u06a9\u0647 \u062a\u0648\u0633\u0637 Ansible \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631 \u067e\u06a9\u06cc\u062c apt \u062a\u0631\u062c\u06cc\u062d \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n\n\n\n<li>\u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632.<\/li>\n\n\n\n<li>\u062f\u0627\u0646\u0644\u0648\u062f \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0644\u06cc\u062f GPG \u062f\u0627\u06a9\u0631 \u0628\u0627 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 Keyring.<\/li>\n\n\n\n<li>\u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062e\u0632\u0646 \u0631\u0633\u0645\u06cc Docker \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 apt.<\/li>\n\n\n\n<li>\u0646\u0635\u0628 Docker.<\/li>\n\n\n\n<li>\u0646\u0635\u0628 Docker Compose (\u067e\u0644\u0627\u06af\u06cc\u0646 v2).<\/li>\n\n\n\n<li>\u0646\u0635\u0628 \u0645\u0627\u0698\u0648\u0644 Python \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Docker \u0627\u0632 \u0637\u0631\u06cc\u0642 pip.<\/li>\n\n\n\n<li>\u062f\u0631\u06cc\u0627\u0641\u062a (Pull) \u0627\u06cc\u0645\u06cc\u062c \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u0650 \u062a\u0639\u06cc\u06cc\u0646\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 default_container_image \u0627\u0632 Docker Hub.<\/li>\n\n\n\n<li>\u0633\u0627\u062e\u062a \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0645\u062a\u063a\u06cc\u0631 container_count \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0627\u0632 \u0627\u06cc\u0645\u06cc\u062c \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 default_container_image \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0633\u062a\u0648\u0631 \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 default_container_command \u0631\u0627 \u062f\u0631 \u0647\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062c\u062f\u06cc\u062f \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u062c\u0631\u0627\u06cc Playbook \u062a\u0645\u0627\u0645 \u0634\u0648\u062f\u060c \u062a\u0639\u062f\u0627\u062f\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0628\u0631 \u0627\u0633\u0627\u0633 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0633\u0627\u062e\u062a\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0628\u0627 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062f\u0627\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f1 \u2014 \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Playbook<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0627\u06cc\u0644 playbook.yml \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0647\u0645\u0647 \u0648\u0638\u0627\u06cc\u0641 \u0634\u0645\u0627 \u062f\u0631 \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u06cc\u06a9 \u0648\u0638\u06cc\u0641\u0647 (Task)\u060c \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0648\u0627\u062d\u062f \u0627\u0642\u062f\u0627\u0645\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u06cc\u06a9 Playbook \u0627\u0646\u0635\u06cc\u0628\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627\u060c \u0641\u0627\u06cc\u0644 Playbook \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u062a\u0646 \u062f\u0644\u062e\u0648\u0627\u0647\u062a\u0627\u0646 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano playbook.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 YAML \u062e\u0627\u0644\u06cc \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0642\u0628\u0644 \u0627\u0632 \u067e\u0631\u062f\u0627\u062e\u062a\u0646 \u0628\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0628\u0647 Playbook\u060c \u0628\u0627 \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>playbook.yml<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- hosts: all\n  become: true\n  vars:\n    container_count: 4\n    default_container_name: docker\n    default_container_image: hub.cr.parmincloud.ir\/library\/ubuntu\n    default_container_command: sleep 1d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u0631 Playbook\u06cc \u06a9\u0647 \u0628\u0627 \u0622\u0646 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641\u200c\u0647\u0627\u06cc\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u06cc\u0646 \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u0642\u062f\u0627\u0631 hosts \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible \u0628\u0627 \u0627\u06cc\u0646 Playbook \u06a9\u062f\u0627\u0645 \u0633\u0631\u0648\u0631\u0647\u0627 \u0631\u0627 \u0647\u062f\u0641 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0645\u0642\u062f\u0627\u0631 become \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0622\u06cc\u0627 \u0647\u0645\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627\u06cc \u0627\u0631\u062a\u0642\u0627\u06cc\u0627\u0641\u062a\u0647 root \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u0646\u062f \u06cc\u0627 \u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062e\u0634 vars \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647 \u062a\u0635\u0645\u06cc\u0645 \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0622\u0646\u200c\u0647\u0627 \u06af\u0631\u0641\u062a\u06cc\u062f\u060c \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u062e\u0637\u0648\u0637 \u0645\u0646\u0641\u0631\u062f \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f. \u062a\u0648\u0636\u06cc\u062d \u0645\u062e\u062a\u0635\u0631\u06cc \u0627\u0632 \u0647\u0631 \u0645\u062a\u063a\u06cc\u0631:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>container_count:<\/strong> \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0647 \u0634\u0648\u0646\u062f.<\/li>\n\n\n\n<li><strong>default_container_name:<\/strong> \u0646\u0627\u0645 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631.<\/li>\n\n\n\n<li><strong>default_container_image:<\/strong> \u0627\u06cc\u0645\u06cc\u062c \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 Docker \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n\n\n\n<li><strong>default_container_command:<\/strong> \u062f\u0633\u062a\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u06cc \u06a9\u0647 \u0631\u0648\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0641\u0627\u06cc\u0644 Playbook \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0646\u0647\u0627\u06cc\u06cc \u0648 \u06a9\u0627\u0645\u0644\u0634 \u0628\u0628\u06cc\u0646\u06cc\u062f\u060c \u0628\u0647 \u0645\u0631\u062d\u0644\u0647 \u06f5 \u0628\u0631\u0648\u06cc\u062f. \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc YAML \u062f\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 \u062a\u0648\u0631\u0641\u062a\u06af\u06cc\u200c\u0634\u0627\u0646 \u062d\u0633\u0627\u0633 \u0647\u0633\u062a\u0646\u062f\u061b \u067e\u0633 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0639\u062f \u0627\u0632 \u0627\u0641\u0632\u0648\u062f\u0646 \u0647\u0645\u0647 \u0648\u0638\u0627\u06cc\u0641\u060c \u0628\u062e\u0648\u0627\u0647\u06cc\u062f Playbook \u062e\u0648\u062f \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f2 \u2014 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0628\u0647 Playbook<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c \u0648\u0638\u0627\u06cc\u0641 \u062a\u0648\u0633\u0637 Ansible \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062a\u0631\u062a\u06cc\u0628\u06cc \u0648 \u0627\u0632 \u0628\u0627\u0644\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u062f\u0631 Playbook \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u062a\u0631\u062a\u06cc\u0628 \u0648\u0638\u0627\u06cc\u0641 \u0645\u0647\u0645 \u0627\u0633\u062a \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0647\u0631 \u0648\u0638\u06cc\u0641\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0648\u0638\u06cc\u0641\u0647 \u0628\u0639\u062f\u06cc\u060c \u0627\u062c\u0631\u0627\u06cc\u0634 \u062a\u0645\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u0648\u0638\u0627\u06cc\u0641 \u0627\u06cc\u0646 Playbook \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0633\u062a\u0642\u0644 \u0628\u0627\u0634\u0646\u062f \u0648 \u062f\u0631 \u0633\u0627\u06cc\u0631 Playbook\u0647\u0627\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u0645\u0647\u0645 \u062f\u0631 Ansible\u060c \u062a\u06a9\u0631\u0627\u0631\u067e\u0630\u06cc\u0631\u06cc (Idempotency) \u0627\u0633\u062a\u061b \u06cc\u0639\u0646\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u06a9\u0631\u0631 \u06cc\u06a9 Playbook \u0647\u0645\u06cc\u0634\u0647 \u0628\u0647 \u06cc\u06a9 \u0648\u0636\u0639\u06cc\u062a \u0633\u06cc\u0633\u062a\u0645\u06cc \u06cc\u06a9\u0633\u0627\u0646 \u0645\u0646\u062c\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u062f\u0648\u0646 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0646\u0627\u062e\u0648\u0627\u0633\u062a\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 Playbook\u060c \u0647\u0631 \u0648\u0638\u06cc\u0641\u0647 \u0628\u0647\u200c\u0635\u0648\u0631\u062a Idempotent \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u062b\u0644\u0627\u064b\u060c \u0648\u0638\u0627\u06cc\u0641 \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c \u0627\u0632 state: latest \u06cc\u0627 state: present \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u0646\u062f \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0644\u0632\u0648\u0645 \u0646\u0635\u0628 \u06cc\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0634\u0648\u0646\u062f. \u0628\u0647\u200c\u0637\u0648\u0631 \u0645\u0634\u0627\u0628\u0647\u060c \u0648\u0638\u0627\u06cc\u0641 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062e\u0632\u0646 \u0648 \u06a9\u0644\u06cc\u062f \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u062f\u0631 \u062c\u0627\u06cc \u062e\u0648\u062f \u0646\u0628\u0627\u0634\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 Playbook \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f \u062f\u0631 \u0647\u0631 \u0632\u0645\u0627\u0646 \u0627\u06cc\u0645\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u0628\u0647\u200c\u062e\u0635\u0648\u0635 \u0647\u0646\u06af\u0627\u0645 \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u06cc\u0627 \u0627\u0639\u0645\u0627\u0644 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0631\u0648\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0648\u0644\u06cc\u0646 \u0648\u0638\u0627\u06cc\u0641 \u062e\u0648\u062f \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f: \u0646\u0635\u0628 aptitude (\u0627\u0628\u0632\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u0645\u062f\u06cc\u0631 \u067e\u06a9\u06cc\u062c \u0644\u06cc\u0646\u0648\u06a9\u0633) \u0648 \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645\u06cc \u0645\u0648\u0631\u062f\u0646\u06cc\u0627\u0632. Ansible \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0628\u0627\u0634\u0646\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>playbook.yml<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code> tasks:\n    - name: Install aptitude\n      apt:\n        name: aptitude\n        state: latest\n        update_cache: true\n\n    - name: Install required system packages\n      apt:\n        pkg:\n          - ca-certificates\n          - curl\n          - gnupg\n          - software-properties-common\n          - python3-pip\n          - python3-venv\n          - python3-setuptools\n        state: latest\n        update_cache: true<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u062f\u0627\u062e\u0644\u06cc apt \u0627\u0646\u0635\u06cc\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 Ansible \u062f\u0633\u062a\u0648\u0631 \u062f\u0647\u06cc\u062f \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc\u062a\u0627\u0646 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u062f. \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u062f\u0631 Ansible \u0645\u06cc\u0627\u0646\u200c\u0628\u0631\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0628\u0627\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062e\u0627\u0645 bash \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u062f. Ansible \u062f\u0631 \u0635\u0648\u0631\u062a \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u0628\u0648\u062f\u0646 aptitude\u060c \u0628\u0647\u200c\u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0628\u0647 apt \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u062f\u061b \u0627\u0645\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u062a\u0627\u0631\u06cc\u062e\u06cc aptitude \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0644\u06cc\u0642\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0647\u0645\u0647 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0646\u0647\u200c\u062a\u0646\u0647\u0627 \u0645\u0648\u062c\u0648\u062f\u060c \u0628\u0644\u06a9\u0647 \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0628\u0627\u0634\u0646\u062f \u0648 \u067e\u0633 \u0627\u0632 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0628\u0627 apt \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f3 \u2014 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0646\u0635\u0628 Docker \u0628\u0647 Playbook<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0638\u06cc\u0641\u0647 \u0634\u0645\u0627\u060c \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 Docker \u0631\u0627 \u0627\u0632 \u0645\u062e\u0632\u0646 \u0631\u0633\u0645\u06cc \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f. \u06a9\u0644\u06cc\u062f GPG \u062f\u0627\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u062f\u0627\u0646\u0644\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0645\u062e\u0632\u0646 \u0631\u0633\u0645\u06cc \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u0646\u0628\u0639 \u067e\u06a9\u06cc\u062c \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0648 Docker \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u062f \u0634\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u067e\u0644\u0627\u06af\u06cc\u0646 Docker Compose \u0648 \u0645\u0627\u0698\u0648\u0644 Docker \u0628\u0631\u0627\u06cc Python \u0647\u0645 \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>playbook.yml<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>   - name: Create keyrings directory\n      file:\n        path: \/etc\/apt\/keyrings\n        state: directory\n        mode: '0755'\n\n    - name: Download Docker GPG key\n      get_url:\n        url: https:\/\/docker-ce.parmincloud.ir\/gpg\n        dest: \/etc\/apt\/keyrings\/docker.asc\n        mode: '0644'\n        force: true\n\n    - name: De-armor Docker GPG key for APT\n      command: gpg --dearmor --yes --output \/etc\/apt\/keyrings\/docker.gpg \/etc\/apt\/keyrings\/docker.asc\n      args:\n        creates: \/etc\/apt\/keyrings\/docker.gpg\n\n    - name: Add Docker repository\n      apt_repository:\n        repo: \"deb [signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/docker-ce.parmincloud.ir\/ {{ ansible_distribution_release }} stable\"\n        state: present\n        filename: docker\n\n    - name: Update apt and install Docker Engine\n      apt:\n        pkg:\n          - docker-ce\n          - docker-ce-cli\n          - containerd.io\n          - docker-buildx-plugin\n          - docker-compose-plugin\n        state: latest\n        update_cache: true\n\n    - name: Install Docker Module for Python\n      pip:\n        name: docker\n        extra_args: \"--index-url https:\/\/pypi.parmincloud.ir\/simple\/\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0632 \u06cc\u06a9 Keyring \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 APT \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 \u0645\u0634\u062e\u0635\u0647 signed-by \u0645\u062e\u0632\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0631\u0648\u0634 \u062a\u0648\u0635\u06cc\u0647\u200c\u0634\u062f\u0647 \u0641\u0639\u0644\u06cc \u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0627\u0633\u062a \u0648 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u0645\u0646\u0633\u0648\u06a9 apt_key \u0627\u062c\u062a\u0646\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Compose \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u06a9\u06cc\u062c docker-compose-plugin \u0646\u0635\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0645\u062f\u0631\u0646 CLI \u06cc\u0639\u0646\u06cc docker compose \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0645\u0633\u062a\u0642\u0644\u0650 \u0642\u062f\u06cc\u0645\u06cc docker-compose \u062f\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0628\u0627 Docker Compose v2\u060c \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0627\u0632 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 docker compose (\u0628\u0627 \u0641\u0627\u0635\u0644\u0647) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b \u0628\u0647\u200c\u062c\u0627\u06cc docker-compose \u0642\u062f\u06cc\u0645\u06cc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f4 \u2014 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0627\u06cc\u0645\u06cc\u062c \u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Docker \u0628\u0647 Playbook<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u062e\u062a \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a (Pull) \u0627\u06cc\u0645\u06cc\u062c \u0645\u0648\u0631\u062f \u0646\u0638\u0631 Docker \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u062c\u200c\u0647\u0627 \u0627\u0632 Docker Hub \u0631\u0633\u0645\u06cc \u0645\u06cc\u200c\u0622\u06cc\u0646\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u06cc\u0645\u06cc\u062c\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0637\u0628\u0642 \u0645\u0634\u062e\u0635\u0627\u062a\u06cc \u06a9\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc Playbook \u0634\u0645\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\u0647\u200c\u0627\u0646\u062f \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u0641\u0632\u0648\u062f\u0646 \u0627\u06cc\u0646 \u0648\u0638\u0627\u06cc\u0641\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f Collection \u0627\u0646\u0635\u06cc\u0628\u0644\u0650 community.docker \u0631\u0648\u06cc \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u0634\u0645\u0627 \u0646\u0635\u0628 \u0627\u0633\u062a. \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>ansible-galaxy collection install community.docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0648\u0638\u0627\u06cc\u0641 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 Playbook \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>playbook.yml<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>   - name: Pull default Docker image\n      community.docker.docker_image:\n        name: \"{{ default_container_image }}\"\n        source: pull\n\n    - name: Create default containers\n      community.docker.docker_container:\n        name: \"{{ default_container_name }}{{ item }}\"\n        image: \"{{ default_container_image }}\"\n        command: \"{{ default_container_command }}\"\n        state: present\n      with_sequence: count={{ container_count }}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627\u0698\u0648\u0644 community.docker.docker_image \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u0645\u06cc\u062c Docker\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u067e\u0627\u06cc\u0647 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u062a\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f. \u0645\u0627\u0698\u0648\u0644 community.docker.docker_container \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0645\u0634\u062e\u0635\u0627\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u0631\u0627 \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 \u062f\u0633\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u067e\u0627\u0633 \u0628\u062f\u0647\u06cc\u062f\u060c \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">with_sequence \u0631\u0648\u0634 Ansible \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u062d\u0644\u0642\u0647 \u0627\u0633\u062a \u0648 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0633\u0627\u062e\u062a \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0639\u062f\u0627\u062f\u06cc \u06a9\u0647 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u062d\u0644\u0642\u0647 \u0645\u06cc\u200c\u0632\u0646\u062f. \u0627\u06cc\u0646 \u06cc\u06a9 \u062d\u0644\u0642\u0647 \u0634\u0645\u0627\u0631\u0634\u06cc \u067e\u0627\u06cc\u0647 \u0627\u0633\u062a\u061b \u067e\u0633 \u0645\u062a\u063a\u06cc\u0631 item \u0627\u06cc\u0646\u062c\u0627 \u0639\u062f\u062f\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0646\u0634\u0627\u0646\u200c\u062f\u0647\u0646\u062f\u0647 \u062a\u06a9\u0631\u0627\u0631 \u0641\u0639\u0644\u06cc \u062d\u0644\u0642\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0639\u062f\u062f \u0628\u0631\u0627\u06cc \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f5 \u2014 \u0628\u0631\u0631\u0633\u06cc Playbook \u06a9\u0627\u0645\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Playbook \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f\u061b \u0628\u0627 \u062a\u0641\u0627\u0648\u062a\u200c\u0647\u0627\u06cc \u062c\u0632\u0626\u06cc \u0628\u0633\u062a\u0647 \u0628\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc\u062a\u0627\u0646:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>playbook.yml<\/code><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- hosts: all\n  become: true\n  vars:\n    container_count: 4\n    default_container_name: docker\n    default_container_image: hub.cr.parmincloud.ir\/library\/ubuntu\n    default_container_command: sleep 1d\n\n  tasks:\n    - name: Install aptitude\n      apt:\n        name: aptitude\n        state: latest\n        update_cache: true\n\n    - name: Install required system packages\n      apt:\n        pkg:\n          - ca-certificates\n          - curl\n          - gnupg\n          - software-properties-common\n          - python3-pip\n          - python3-venv\n          - python3-setuptools\n        state: latest\n        update_cache: true\n\n    - name: Create keyrings directory\n      file:\n        path: \/etc\/apt\/keyrings\n        state: directory\n        mode: '0755'\n\n    - name: Download Docker GPG key\n      get_url:\n        url: https:\/\/docker-ce.parmincloud.ir\/gpg\n        dest: \/etc\/apt\/keyrings\/docker.asc\n        mode: '0644'\n        force: true\n\n    - name: De-armor Docker GPG key for APT\n      command: gpg --dearmor --yes --output \/etc\/apt\/keyrings\/docker.gpg \/etc\/apt\/keyrings\/docker.asc\n      args:\n        creates: \/etc\/apt\/keyrings\/docker.gpg\n\n    - name: Add Docker repository\n      apt_repository:\n        repo: \"deb &#91;signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/docker-ce.parmincloud.ir\/ {{ ansible_distribution_release }} stable\"\n        state: present\n        filename: docker\n\n    - name: Update apt and install Docker Engine\n      apt:\n        pkg:\n          - docker-ce\n          - docker-ce-cli\n          - containerd.io\n          - docker-buildx-plugin\n          - docker-compose-plugin\n        state: latest\n        update_cache: true\n\n    - name: Install Docker Module for Python\n      pip:\n        name: docker\n        extra_args: \"--index-url https:\/\/pypi.parmincloud.ir\/simple\/\"\n\n    - name: Pull default Docker image\n      community.docker.docker_image:\n        name: \"{{ default_container_image }}\"\n        source: pull\n\n    - name: Create default containers\n      community.docker.docker_container:\n        name: \"{{ default_container_name }}{{ item }}\"\n        image: \"{{ default_container_image }}\"\n        command: \"{{ default_container_command }}\"\n        state: present\n      with_sequence: count={{ container_count }}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 Playbook \u0631\u0627 \u0622\u0632\u0627\u062f\u0627\u0646\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f \u062a\u0627 \u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0641\u0631\u062f\u06cc \u0634\u0645\u0627 \u062f\u0631 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u062e\u0648\u062f\u062a\u0627\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0645\u062b\u0644\u0627\u064b\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 docker_image \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 (Push) \u0627\u06cc\u0645\u06cc\u062c\u200c\u0647\u0627 \u0628\u0647 Docker Hub \u06cc\u0627 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 docker_container \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0627\u06cc\u0646 \u06cc\u06a9 \u06cc\u0627\u062f\u0622\u0648\u0631\u06cc \u0645\u0644\u0627\u06cc\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062a\u0648\u0631\u0641\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0628\u0647 \u062e\u0637\u0627 \u062e\u0648\u0631\u062f\u06cc\u062f\u060c \u0628\u0647\u200c\u0627\u062d\u062a\u0645\u0627\u0644 \u062e\u06cc\u0644\u06cc \u0632\u06cc\u0627\u062f \u0645\u0642\u0635\u0631 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. YAML \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06f2 \u0641\u0627\u0635\u0644\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0631\u0641\u062a\u06af\u06cc \u0631\u0627 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u0632 Playbook \u062e\u0648\u062f \u0631\u0627\u0636\u06cc \u0634\u062f\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0645\u062a\u0646 \u062e\u0627\u0631\u062c \u0634\u062f\u0647 \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0631\u062d\u0644\u0647 \u06f6 \u2014 \u0627\u062c\u0631\u0627\u06cc Playbook<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06a9\u0646\u0648\u0646 \u0622\u0645\u0627\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 Playbook \u0631\u0648\u06cc \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u0633\u0631\u0648\u0631 \u0647\u0633\u062a\u06cc\u062f. \u0628\u06cc\u0634\u062a\u0631 Playbook\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0637\u0648\u0631\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u06a9\u0647 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Inventory \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f\u061b \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0633\u0631\u0648\u0631\u062a\u0627\u0646 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Playbook \u0641\u0642\u0637 \u0631\u0648\u06cc server1 \u0648 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 sammy\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible-playbook playbook.yml -l server1 -u sammy<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0644\u06af l- \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u0648 \u0641\u0644\u06af u- \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0628\u0627 \u06a9\u062f\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f. \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u06cc\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\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>. . .\nchanged: &#91;server1]\n\nTASK &#91;Create default containers] *****************************************************************************************************************\nchanged: &#91;server1] =&gt; (item=1)\nchanged: &#91;server1] =&gt; (item=2)\nchanged: &#91;server1] =&gt; (item=3)\nchanged: &#91;server1] =&gt; (item=4)\n\nPLAY RECAP ***************************************************************************************************************************************\nserver1                  : ok=10    changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 \u0646\u062d\u0648\u0647 \u0627\u062c\u0631\u0627\u06cc Playbook\u0647\u0627\u06cc Ansible\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc Cheat Sheet \u0627\u0646\u0635\u06cc\u0628\u0644 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u0634\u0645\u0627 \u06a9\u0627\u0645\u0644 \u0627\u0633\u062a! \u062e\u0631\u0648\u062c\u06cc \u0634\u0645\u0627 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062f\u0642\u06cc\u0642\u0627\u064b \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0645\u0647\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0635\u0641\u0631 \u062e\u0637\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u062c\u0631\u0627\u06cc Playbook \u062a\u0645\u0627\u0645 \u0634\u062f\u060c \u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0648\u0627\u0631\u062f \u0633\u0631\u0648\u0631\u06cc \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062a\u0648\u0633\u0637 Ansible \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647 \u062a\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u06cc\u0627 \u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0648\u0627\u0631\u062f \u0633\u0631\u0648\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0634\u0648\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh sammy@your_remote_server_ip<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc Docker \u062e\u0648\u062f \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u0641\u0647\u0631\u0633\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker ps -a<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0627\u06cc\u0646 \u0631\u0627 \u0628\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>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES\na3fe9bfb89cf        ubuntu              \"sleep 1d\"          5 minutes ago       Created                                 docker4\n8799c16cde1e        ubuntu              \"sleep 1d\"          5 minutes ago       Created                                 docker3\nad0c2123b183        ubuntu              \"sleep 1d\"          5 minutes ago       Created                                 docker2\nb9350916ffd8        ubuntu              \"sleep 1d\"          5 minutes ago       Created                                 docker1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u062f\u0631 Playbook \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0646\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0627\u06cc\u0646 \u0622\u062e\u0631\u06cc\u0646 \u0648\u0638\u06cc\u0641\u0647 \u062f\u0631 Playbook \u0628\u0648\u062f\u060c \u0647\u0645\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 Playbook \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0631\u0648\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u0631 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631\u062d\u0627\u0644\u06cc\u200c\u06a9\u0647 \u0627\u06cc\u0646 Playbook \u0637\u0648\u0631\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u06a9\u0647 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645\u0650 \u062f\u0631\u0633\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0634\u062f\u0647 \u0631\u0648\u0627\u0646 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0633\u062a\u0647 \u0628\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u0628\u06a9\u0647 \u0633\u0631\u0648\u0631\u060c \u0648\u0636\u0639\u06cc\u062a \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u06cc\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627\u060c \u06af\u0627\u0647\u06cc \u0628\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0631\u0648\u0628\u0631\u0648 \u0634\u0648\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0648\u0628\u0631\u0648 \u0634\u0648\u06cc\u062f \u0631\u0627 \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u0647 \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645\u200c\u0628\u0647\u200c\u06af\u0627\u0645 \u0628\u0631\u0627\u06cc \u0631\u0641\u0639 \u0622\u0646\u200c\u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062e\u0637\u0627\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f GPG \u062f\u0627\u06a9\u0631<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0644\u06cc\u062f GPG \u062f\u0627\u06a9\u0631 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0632\u0645\u0627\u0646\u06cc \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 Playbook \u0646\u062a\u0648\u0627\u0646\u062f \u06a9\u0644\u06cc\u062f \u0627\u0645\u0636\u0627\u06cc \u0645\u062e\u0632\u0646 \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06cc\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u062a\u0635\u0627\u0644 \u0634\u0628\u06a9\u0647\u060c \u0645\u0634\u06a9\u0644\u0627\u062a DNS \u06cc\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0641\u0627\u06cc\u0644 \u0631\u0648\u06cc \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \/etc\/apt\/keyrings \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062e\u0637\u0627\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f GPG \u0631\u0627 \u062f\u0631 \u062e\u0631\u0648\u062c\u06cc Ansible \u062f\u06cc\u062f\u06cc\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 URL \u06a9\u0644\u06cc\u062f GPG \u062f\u0627\u06a9\u0631 \u0627\u0632 \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0634\u0645\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0644\u06cc\u062f \u0628\u0627 curl \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/docker-ce.parmincloud.ir\/gpg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062f\u0627\u0646\u0644\u0648\u062f \u0645\u0648\u0641\u0642 \u0628\u0648\u062f\u060c \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0645\u0634\u06a9\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062e\u0632\u0646\u06cc \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a\u060c \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0634 apt \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0647\u200c\u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u062f\u0627\u0645\u0647 \u062f\u0627\u0634\u062a\u0646\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0634\u0628\u06a9\u0647 \u0648 \u062a\u0641\u06a9\u06cc\u06a9 DNS \u062f\u0631\u0633\u062a \u062f\u0627\u0631\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0641\u06a9\u06cc\u06a9 DNS \u0631\u0627 \u0628\u0627 nslookup docker-ce.parmincloud.ir \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u062a\u0635\u0627\u0644 \u06a9\u0644\u06cc \u0631\u0627 \u0628\u0627 ping 8.8.8.8 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u062e\u0632\u0646 Docker<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0637\u0627\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062e\u0632\u0646 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u0634\u06a9\u0644 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u00abpackage not found\u00bb \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0646\u0635\u0628 Docker \u0638\u0627\u0647\u0631 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0639\u0644\u062a\u060c \u0639\u062f\u0645 \u062a\u0637\u0627\u0628\u0642 \u0628\u06cc\u0646 URL \u0645\u062e\u0632\u0646 \u0648 \u0646\u0627\u0645 \u0631\u0645\u0632 \u0646\u0633\u062e\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u06cc \u0634\u0645\u0627\u0633\u062a\u061b \u0647\u0631\u0686\u0646\u062f \u0627\u06cc\u0646 Playbook \u0627\u0632 ansible_distribution_release \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0646\u0627\u0645 \u0631\u0645\u0632 \u062f\u0631\u0633\u062a \u0631\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u062e\u0632\u0646\u060c \u0645\u0646\u0627\u0628\u0639 APT \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0634\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0645\u062e\u0632\u0646 Docker \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -r docker \/etc\/apt\/sources.list*<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u06cc\u062f \u0648\u0631\u0648\u062f\u06cc\u200c\u0627\u06cc \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 [signed-by=\/etc\/apt\/keyrings\/docker.gpg] \u0648 \u0646\u0627\u0645 \u0631\u0645\u0632 \u062f\u0631\u0633\u062a \u0628\u0631\u0627\u06cc \u0646\u0633\u062e\u0647 \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u06cc \u0634\u0645\u0627\u0633\u062a (\u0645\u062b\u0644\u0627\u064b focal \u0628\u0631\u0627\u06cc 20.04\u060c jammy \u0628\u0631\u0627\u06cc 22.04 \u06cc\u0627 noble \u0628\u0631\u0627\u06cc 24.04). \u0627\u06af\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u062e\u0632\u0646 \u062f\u0631\u0633\u062a \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u0627\u0645\u0627 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0647\u0645\u0686\u0646\u0627\u0646 \u067e\u06cc\u062f\u0627 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c sudo apt update \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0641\u0631\u0634 \u0627\u06cc\u0646\u062f\u06a9\u0633 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u0647 \u0648 \u0633\u067e\u0633 Playbook \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0634\u06a9\u0633\u062a \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0686\u0646\u062f \u062f\u0644\u06cc\u0644 \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u062f\u061b \u0627\u0632 \u062c\u0645\u0644\u0647 \u062a\u062f\u0627\u062e\u0644 \u0628\u0627 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u060c \u0646\u0635\u0628\u200c\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc\u0650 \u0646\u06cc\u0645\u0647\u200c\u06a9\u0627\u0631\u0647 \u06cc\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0642\u0641\u0644\u200c\u0634\u062f\u0647 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627. \u0648\u0642\u062a\u06cc Ansible \u062e\u0637\u0627\u0647\u0627\u06cc \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c \u0631\u0627 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0645\u0634\u06a9\u0644 \u0632\u06cc\u0631\u0628\u0646\u0627\u06cc\u06cc \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 \u0648\u0636\u0639\u06cc\u062a \u062f\u0627\u062e\u0644\u06cc APT \u0627\u0633\u062a\u060c \u0646\u0647 \u062e\u0648\u062f Playbook.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u060c \u0627\u0628\u062a\u062f\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0634 \u067e\u06a9\u06cc\u062c AFT \u0628\u0647\u200c\u0631\u0648\u0632 \u0627\u0633\u062a. \u06a9\u0634 \u0642\u062f\u06cc\u0645\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0634\u0648\u062f APT \u0628\u0647\u200c\u062f\u0646\u0628\u0627\u0644 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0628\u06af\u0631\u062f\u062f \u06a9\u0647 \u062f\u06cc\u06af\u0631 \u062f\u0631 \u0645\u062e\u0632\u0646 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0646\u062f. \u0633\u067e\u0633\u060c \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u062e\u0631\u0627\u0628 \u067e\u06a9\u06cc\u062c\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0627\u0646\u0639 \u0646\u0635\u0628\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0634\u0648\u0646\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt --fix-broken install<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0647\u0631\u06af\u0648\u0646\u0647 \u0646\u0635\u0628 \u0646\u0627\u0642\u0635 \u06cc\u0627 \u062e\u0631\u0627\u0628 \u067e\u06a9\u06cc\u062c \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0646\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0647\u06cc\u0686 \u067e\u0631\u0648\u0633\u0647 \u0645\u062f\u06cc\u0631 \u067e\u06a9\u06cc\u062c \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0646\u06cc\u0633\u062a. \u0627\u06af\u0631 \u067e\u0631\u0648\u0633\u0647 APT \u062f\u06cc\u06af\u0631\u06cc \u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u062f (\u0645\u062b\u0644 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631)\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0631\u0627 \u0642\u0641\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062a\u0648\u0633\u0637 Playbook \u0634\u0645\u0627 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0631\u0648\u0633\u0647\u200c\u0647\u0627\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u067e\u06a9\u06cc\u062c \u0631\u0627 \u0628\u0627 <code>ps aux | grep apt<\/code> \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062e\u0637\u0627\u06cc Permission denied \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a Docker<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c Docker \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u0628\u0627 \u062f\u06cc\u0645\u0646 Docker \u0646\u06cc\u0627\u0632\u0645\u0646\u062f \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627\u06cc root \u0627\u0633\u062a. \u0627\u06af\u0631 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a Docker \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0648 \u0628\u062f\u0648\u0646 sudo \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u00abpermission denied\u00bb \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f. \u062f\u0631\u062d\u0627\u0644\u06cc\u200c\u06a9\u0647 Playbook\u060c Docker \u0631\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 \u06af\u0631\u0648\u0647 docker \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a Docker \u0628\u062f\u0648\u0646 sudo\u060c \u06a9\u0627\u0631\u0628\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 docker \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo usermod -aG docker $USER<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0641\u0639\u0644\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 docker \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u0627\u062c\u0627\u0632\u0647 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u062f\u06cc\u0645\u0646 Docker \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0639\u0636\u0648\u06cc\u062a \u062f\u0631 \u06af\u0631\u0648\u0647 \u062f\u0631 \u0646\u0634\u0633\u062a \u0634\u0644 \u0641\u0639\u0644\u06cc \u0634\u0645\u0627 \u0627\u0639\u0645\u0627\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0628\u0627\u06cc\u062f \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0627\u0631\u062c \u0634\u062f\u0647 \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f \u062a\u0627 \u0639\u0636\u0648\u06cc\u062a \u062c\u062f\u06cc\u062f \u06af\u0631\u0648\u0647 \u062a\u0648\u0633\u0637 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 newgrp docker \u06cc\u06a9 \u0646\u0634\u0633\u062a \u0634\u0644 \u062c\u062f\u06cc\u062f \u0628\u0627 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc \u0628\u0647\u200c\u0631\u0648\u0632 \u0634\u062f\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0646\u0638\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u0650 \u06af\u0631\u0648\u0647 docker \u0639\u0645\u0644\u0627\u064b \u062f\u0633\u062a\u0631\u0633\u06cc \u0633\u0637\u062d root \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u062f\u0627\u0631\u0646\u062f\u061b \u0686\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u0647\u0627\u06cc\u06cc \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0645\u0644 \u0628\u0647 \u0641\u0627\u06cc\u0644\u200c\u0633\u06cc\u0633\u062a\u0645 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f. \u0641\u0642\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0648\u0631\u062f \u0627\u0639\u062a\u0645\u0627\u062f \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u06af\u0631\u0648\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0646\u0634\u062f\u0646 \u0633\u0631\u0648\u06cc\u0633 Docker<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0633\u0631\u0648\u06cc\u0633 Docker \u0628\u0639\u062f \u0627\u0632 \u0646\u0635\u0628 \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0646\u0634\u062f\u060c \u0645\u0634\u06a9\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc systemd\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062a\u0646\u0627\u0642\u0636 \u06cc\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc \u0645\u0646\u0627\u0628\u0639 \u0628\u0627\u0634\u062f. Docker \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 systemd \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u067e\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc systemd \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062a\u062f\u0627\u060c \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0633\u0631\u0648\u06cc\u0633 Docker \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f \u0622\u06cc\u0627 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062e\u0637\u0627\u06cc \u0648\u0627\u0636\u062d\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062e\u0631\u0648\u062c\u06cc \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0641\u0639\u0627\u0644 \u0627\u0633\u062a\u060c \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f\u0647 \u06cc\u0627 \u0645\u062a\u0648\u0642\u0641 \u0634\u062f\u0647\u061b \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627\u06cc \u0644\u0627\u06af \u0627\u062e\u06cc\u0631. \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0634\u062e\u06cc\u0635\u06cc \u062f\u0642\u06cc\u0642\u200c\u062a\u0631\u060c \u0644\u0627\u06af\u200c\u0647\u0627\u06cc \u06a9\u0627\u0645\u0644 \u0633\u0631\u0648\u06cc\u0633 Docker \u0631\u0627 \u0628\u0627 journalctl \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>journalctl -u docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631 \u06a9\u0644 \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0644\u0627\u06af \u0627\u0633\u06a9\u0631\u0648\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0641\u0644\u06af \u200e&#8211;no-pager \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u061b \u06cc\u0627 \u0627\u0632 \u200e-n 50 \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0641\u0642\u0637 \u06f5\u06f0 \u062e\u0637 \u0622\u062e\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627\u06cc\u062c \u0634\u0627\u0645\u0644 \u062a\u062f\u0627\u062e\u0644 \u067e\u0648\u0631\u062a\u200c\u0647\u0627 (\u0627\u06af\u0631 \u0633\u0631\u0648\u06cc\u0633 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0632 \u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 Docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f) \u06cc\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0631\u0627\u06cc\u0648\u0631 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0644\u0627\u06af\u200c\u0647\u0627 \u0645\u0634\u06a9\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0631\u0641\u0639 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646\u062f\u060c \u0633\u0631\u0648\u06cc\u0633 Docker \u0631\u0627 \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 <code>sudo systemctl enable docker<\/code> \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f Docker \u0647\u0646\u06af\u0627\u0645 \u0628\u0648\u062a \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u0627\u0698\u0648\u0644 Python \u06cc\u0627 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627\u0698\u0648\u0644 Python \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Docker (\u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u06a9\u06cc\u062c docker) \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 Collection \u0627\u0646\u0635\u06cc\u0628\u0644\u0650 community.docker \u0628\u0627 API \u062f\u0627\u06a9\u0631 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a. \u0634\u06a9\u0633\u062a \u0646\u0635\u0628 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0646\u0627\u0634\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc pip\u060c \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0646\u0633\u062e\u0647 Python \u06cc\u0627 \u0646\u0628\u0648\u062f \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc Build \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 Playbook \u062f\u0631 \u0648\u0638\u06cc\u0641\u0647 \u00abInstall Docker Module for Python\u00bb \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0646\u0635\u0628 \u0648 \u06a9\u0627\u0631\u06a9\u0631\u062f pip \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f. \u0646\u0635\u0628 Python 3 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0627\u0698\u0648\u0644 Python \u062f\u0627\u06a9\u0631 \u0628\u0647 Python 3.6 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0627\u06af\u0631 \u0646\u0633\u062e\u0647 Python \u0634\u0645\u0627 \u0628\u0647\u200c\u0631\u0648\u0632 \u0627\u0633\u062a \u0627\u0645\u0627 \u0646\u0635\u0628 \u0645\u0627\u0698\u0648\u0644 \u0647\u0645\u0686\u0646\u0627\u0646 \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062e\u0631\u0648\u062c\u06cc \u062e\u0637\u0627\u06cc \u062f\u0642\u06cc\u0642\u200c\u062a\u0631\u06cc \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip3 install -i https:\/\/pypi.parmincloud.ir\/simple\/ docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u0635\u0628 \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0631\u0648\u0628\u0631\u0648 \u0634\u062f\u06cc\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0647\u062f\u0631\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc Build \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c python3-dev \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a \u0631\u0627 \u0631\u0641\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06af\u0631 \u0627\u0632 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc Python \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u062f\u0631\u0633\u062a \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0634\u06a9\u0633\u062a \u0627\u062a\u0635\u0627\u0644 Ansible<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u06a9\u0633\u062a \u0627\u062a\u0635\u0627\u0644 \u0632\u0645\u0627\u0646\u06cc \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 Ansible \u0634\u0645\u0627 \u0646\u062a\u0648\u0627\u0646\u062f \u0627\u062a\u0635\u0627\u0644 SSH \u0628\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0646\u06cc\u0627\u062f\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0646\u06cc\u0627\u0632\u0645\u0646\u062f\u06cc\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631 Ansible \u0627\u0633\u062a\u061b \u067e\u0633 \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 Playbook \u0628\u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u0648\u0638\u06cc\u0641\u0647\u200c\u0627\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f\u060c \u0631\u0641\u0639 \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u062a\u0635\u0627\u0644\u060c \u0627\u0628\u062a\u062f\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0647\u0645\u0627\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a\u06cc \u06a9\u0647 Ansible \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0647 \u0647\u0627\u0633\u062a \u0647\u062f\u0641 SSH \u0628\u0632\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh user@host<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0633\u062a\u06cc SSH \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u0645\u0627 Ansible \u0647\u0645\u0686\u0646\u0627\u0646 \u062f\u0631 \u0627\u062a\u0635\u0627\u0644 \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u062f\u060c \u0645\u0634\u06a9\u0644 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0628\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Inventory \u0627\u0646\u0635\u06cc\u0628\u0644 \u0634\u0645\u0627 \u06cc\u0627 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627 \u06a9\u0644\u06cc\u062f SSH \u0645\u0631\u0628\u0648\u0637 \u0627\u0633\u062a. \u0641\u0627\u06cc\u0644 Inventory \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u06cc\u0627 \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc IP \u062f\u0631\u0633\u062a \u0647\u0633\u062a\u0646\u062f \u0648 \u0647\u0631\u06af\u0648\u0646\u0647 \u067e\u0648\u0631\u062a SSH \u0633\u0641\u0627\u0631\u0634\u06cc \u06cc\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647\u200c\u062f\u0631\u0633\u062a\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647\u200c\u0627\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f SSH \u0634\u0645\u0627 \u062f\u0631 SSH Agent\u062a\u0627\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647: <code>ssh-add -l<\/code>. \u0627\u06af\u0631 \u06a9\u0644\u06cc\u062f \u0634\u0645\u0627 \u0641\u0647\u0631\u0633\u062a \u0646\u0634\u062f\u0647\u060c \u0622\u0646 \u0631\u0627 \u0628\u0627 <code>ssh-add ~\/.ssh\/id_rsa<\/code> \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f (\u06cc\u0627 \u0647\u0631 \u0645\u0633\u06cc\u0631\u06cc \u06a9\u0647 \u0628\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0635\u0648\u0635\u06cc \u0634\u0645\u0627 \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f). \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u062f\u0631 \u0641\u0627\u06cc\u0644 <code>~\/.ssh\/authorized_keys<\/code> \u0631\u0648\u06cc \u0647\u0627\u0633\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0634\u06a9\u0633\u062a \u0627\u062c\u0631\u0627\u06cc Playbook<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0648\u0638\u06cc\u0641\u0647 \u0627\u0632 Playbook \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u062f\u060c Ansible \u0627\u062c\u0631\u0627 \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0631\u062f\u0647 \u0648 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc\u06cc \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u062f\u0627\u0645 \u0648\u0638\u06cc\u0641\u0647 \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f\u0647 \u0648 \u0686\u0631\u0627. \u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062e\u0637\u0627 \u0627\u0628\u0632\u0627\u0631 \u0627\u0635\u0644\u06cc \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u0634\u06a9\u0644\u0627\u062a \u0647\u0633\u062a\u0646\u062f\u061b \u067e\u0633 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u062f\u0642\u062a \u0628\u062e\u0648\u0627\u0646\u06cc\u062f. \u062e\u0631\u0648\u062c\u06cc \u062e\u0637\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0634\u0627\u0645\u0644 \u0646\u0627\u0645 \u0648\u0638\u06cc\u0641\u0647\u060c \u0645\u0627\u0698\u0648\u0644\u0650 \u0634\u06a9\u0633\u062a\u200c\u062e\u0648\u0631\u062f\u0647 \u0648 \u062c\u0632\u0626\u06cc\u0627\u062a \u062e\u0627\u0635 \u062f\u0631\u0628\u0627\u0631\u0647 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0627\u0648\u0644\u06cc\u0647\u060c \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u062f\u0631 \u062e\u0631\u0648\u062c\u06cc Ansible \u0631\u0627 \u0628\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0648\u0638\u06cc\u0641\u0647 \u0634\u06a9\u0633\u062a\u200c\u062e\u0648\u0631\u062f\u0647 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f. \u067e\u06cc\u0627\u0645 \u0627\u063a\u0644\u0628 \u0633\u0631\u0646\u062e\u200c\u0647\u0627\u06cc\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0639\u0644\u062a \u0631\u06cc\u0634\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u062f\u061b \u0645\u0627\u0646\u0646\u062f \u0646\u0628\u0648\u062f\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc\u200c\u0647\u0627\u060c URL\u0647\u0627\u06cc \u063a\u06cc\u0631\u0642\u0627\u0628\u0644\u200c\u062f\u0633\u062a\u0631\u0633 \u06cc\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u0633\u06cc\u0646\u062a\u06a9\u0633 \u062f\u0631 Playbook.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062e\u0631\u0648\u062c\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u062c\u0632\u0626\u06cc\u0627\u062a \u06a9\u0627\u0641\u06cc \u0641\u0631\u0627\u0647\u0645 \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u060c Playbook \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a Verbose \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0628\u06cc\u0646\u06cc\u062f Ansible \u062f\u0631 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ansible-playbook playbook.yml -vvv<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0644\u06af \u200e-vvv \u062d\u062f\u0627\u06a9\u062b\u0631 \u062a\u0641\u0635\u06cc\u0644 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0648\u0627\u0642\u0639\u06cc\u0650 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u060c \u062e\u0631\u0648\u062c\u06cc \u06a9\u0627\u0645\u0644 \u0647\u0631 \u0648\u0638\u06cc\u0641\u0647 \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u06cc\u0628\u0627\u06af \u062f\u0642\u06cc\u0642 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646 \u0628\u0647\u200c\u062e\u0635\u0648\u0635 \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u0634\u06a9\u0644\u0627\u062a \u0634\u0628\u06a9\u0647\u060c \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u06cc\u0627 \u0631\u0641\u062a\u0627\u0631 \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f Playbook\u060c \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0647\u0645\u0647 \u0645\u0646\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f \u062f\u0631 \u062f\u0633\u062a\u0631\u0633\u200c\u0627\u0646\u062f \u2014 URL \u06a9\u0644\u06cc\u062f GPG \u062f\u0627\u06a9\u0631 \u0628\u0627\u06cc\u062f \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0628\u0627\u0634\u062f\u060c \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0644\u0648\u062f \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f \u0648 \u0628\u0627\u06cc\u062f \u0641\u0636\u0627\u06cc \u062f\u06cc\u0633\u06a9 \u06a9\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0686\u0648\u0646 \u0627\u06cc\u0646 Playbook \u062a\u06a9\u0631\u0627\u0631\u067e\u0630\u06cc\u0631 (Idempotent) \u0627\u0633\u062a\u060c \u0628\u0639\u062f \u0627\u0632 \u0631\u0641\u0639 \u0647\u0631 \u0645\u0634\u06a9\u0644\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0627\u06cc\u0645\u0646 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0648\u0638\u0627\u06cc\u0641\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0634\u062f\u0647\u200c\u0627\u0646\u062f \u0628\u0647\u200c\u062c\u0627\u06cc changed \u0628\u0627 \u0639\u0646\u0648\u0627\u0646 ok \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 Ansible \u06a9\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0631\u0648\u06cc \u0648\u0638\u0627\u06cc\u0641\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f\u0647\u200c \u0628\u0648\u062f\u0646\u062f \u0627\u0632 \u0633\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\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. \u0686\u0647 \u0646\u0633\u062e\u0647\u200c\u0627\u06cc \u0627\u0632 Ansible \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 Playbook \u0644\u0627\u0632\u0645 \u0627\u0633\u062a\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f Ansible \u0628\u0627\u06cc\u062f \u06a9\u0627\u0631 \u06a9\u0646\u062f\u061b \u0627\u0645\u0627 Ansible \u0646\u0633\u062e\u0647 2.10 \u0628\u0647 \u0628\u0627\u0644\u0627\u060c \u06cc\u06a9 \u062a\u0648\u0635\u06cc\u0647 \u067e\u0627\u06cc\u0647 \u062e\u0648\u0628 \u0627\u0633\u062a. \u0622\u0646 \u0646\u0633\u062e\u0647 (\u0648 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631) \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0627\u0632 \u0686\u06cc\u062f\u0645\u0627\u0646 Collection\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0645\u0647\u0645 \u0627\u0633\u062a\u061b \u0686\u0648\u0646 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0628\u0631\u0627\u06cc \u0648\u0638\u0627\u06cc\u0641 docker_image \u0648 docker_container \u0627\u0632 Collection \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 community.docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0633\u062e\u0647 \u0646\u0635\u0628\u200c\u0634\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 <code>ansible --version<\/code> \u0631\u0648\u06cc \u0646\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f2. \u0622\u06cc\u0627 Playbook\u060c Docker Compose \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u06a9\u062f\u0627\u0645 \u0646\u0633\u062e\u0647 \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. \u0627\u06cc\u0646 Playbook \u067e\u06a9\u06cc\u062c docker-compose-plugin \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 Docker Compose \u0646\u0633\u062e\u0647 v2 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 Compose v2\u060c \u0634\u0645\u0627 Compose \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0632\u06cc\u0631\u062f\u0633\u062a\u0648\u0631 Docker \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f (docker compose \u0628\u0627 \u0641\u0627\u0635\u0644\u0647)\u061b \u0628\u0647\u200c\u062c\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0645\u0633\u062a\u0642\u0644 \u0642\u062f\u06cc\u0645\u06cc (docker-compose).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f3. \u0686\u0631\u0627 \u0627\u0632 Ansible \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0634\u0644 \u06cc\u0627 cloud-init\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ansible \u062d\u0641\u0638\u0650 \u062a\u06a9\u0631\u0627\u0631\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0645\u0645\u06cc\u0632\u06cc\u200c\u067e\u0630\u06cc\u0631\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0686\u0648\u0646 \u0648\u0638\u0627\u06cc\u0641 Idempotent \u0647\u0633\u062a\u0646\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f Playbook \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a \u0645\u0648\u0631\u062f\u0646\u0638\u0631 \u0647\u0645\u06af\u0631\u0627 \u06a9\u0646\u06cc\u062f (\u0645\u062b\u0644\u0627\u064b \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0628\u0648\u062f\u0646 \u0645\u062e\u0632\u0646 Docker \u0648 \u0646\u0635\u0628\u200c\u0628\u0648\u062f\u0646 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627\u06cc \u062f\u0631\u0633\u062a)\u061b \u0628\u062f\u0648\u0646 \u0622\u0646\u06a9\u0647 \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u0628\u0631\u0631\u0633\u06cc\u200c\u0647\u0627\u06cc \u00ab\u0627\u0632 \u0642\u0628\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647\u061f\u00bb \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f. Playbook\u0647\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc\u060c \u06a9\u0646\u062a\u0631\u0644 \u0646\u0633\u062e\u0647 \u0648 \u06af\u0633\u062a\u0631\u0634 \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0633\u0627\u06cc\u0631 \u0645\u0631\u0627\u062d\u0644 \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u060c \u0631\u0627\u062d\u062a\u200c\u062a\u0631 \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f4. \u062a\u06a9\u0631\u0627\u0631\u067e\u0630\u06cc\u0631\u06cc (Idempotent) \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0627\u06cc\u0646 Playbook \u0628\u0647 \u0686\u0647 \u0645\u0639\u0646\u0627\u0633\u062a\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0645\u0627\u0646 Playbook \u0631\u0627 \u0645\u06a9\u0631\u0631\u0627\u064b \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u0646\u062a\u0627\u06cc\u062c \u0642\u0627\u0628\u0644 \u067e\u06cc\u0634\u200c\u0628\u06cc\u0646\u06cc \u0628\u06af\u06cc\u0631\u06cc\u062f. \u0647\u0631 \u0648\u0638\u06cc\u0641\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0644\u0632\u0648\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062b\u0644\u0627\u064b\u060c \u0627\u06af\u0631 Docker \u0627\u0632 \u0642\u0628\u0644 \u0646\u0635\u0628 \u0628\u0627\u0634\u062f\u060c \u0645\u062e\u0632\u0646 \u0627\u0632 \u0642\u0628\u0644 \u0645\u0648\u062c\u0648\u062f \u0628\u0627\u0634\u062f \u0648 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0628\u0647\u200c\u0631\u0648\u0632 \u0628\u0627\u0634\u0646\u062f\u060c Ansible \u0622\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a ok \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0646\u0635\u0628 \u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f5. \u0622\u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u0627\u0632 \u0627\u06cc\u0646 Playbook \u0628\u0631\u0627\u06cc \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0686\u0646\u062f \u0633\u0631\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u0628\u0647\u200c\u0637\u0648\u0631 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. \u0647\u0645\u0647 \u0647\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0647\u062f\u0641 \u0631\u0627 \u0628\u0647 Inventory \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f (\u0645\u062b\u0644\u0627\u064b \u0632\u06cc\u0631 \u06cc\u06a9 \u06af\u0631\u0648\u0647 \u0645\u0634\u062a\u0631\u06a9) \u0648 \u0633\u067e\u0633 Playbook \u0631\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0622\u0646 \u06af\u0631\u0648\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. Ansible \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0631\u0648\u06cc \u0686\u0646\u062f \u0647\u0627\u0633\u062a \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0632\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0637\u062d \u0645\u0648\u0627\u0632\u06cc\u200c\u06a9\u0627\u0631\u06cc \u0631\u0627 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 forks \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Ansible \u062e\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f6. \u0622\u06cc\u0627 \u0627\u0632 \u0627\u06cc\u0646 Playbook \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645 \u06cc\u0627 Role \u0627\u0646\u0635\u06cc\u0628\u0644 \u06af\u0627\u0644\u06a9\u0633\u06cc\u0650 geerlingguy.docker\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0627\u0647\u062f\u0627\u0641 \u0634\u0645\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u06cc\u06a9 Playbook \u0633\u0641\u0627\u0631\u0634\u06cc \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u062c\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f \u0648 \u062f\u06cc\u062f\u0646\u0650 \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0627\u0639\u0645\u0627\u0644\u200c\u0634\u062f\u0646 \u0627\u0633\u062a \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u06a9\u0647 \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u062f\u0627\u062e\u0644\u06cc \u06cc\u0627 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0627\u0646\u0637\u0628\u0627\u0642 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a). \u06cc\u06a9 Role \u0634\u0646\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u06af\u0627\u0644\u06a9\u0633\u06cc \u0645\u0627\u0646\u0646\u062f geerlingguy.docker \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0648\u0642\u062a \u0634\u0645\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u062f\u061b \u0627\u0645\u0627 \u06cc\u06a9 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062e\u0627\u0631\u062c\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u0648 \u0628\u0647\u200c\u0631\u0648\u0632 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0647 \u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u06f7. \u0686\u0637\u0648\u0631 \u0628\u0639\u062f \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc Playbook \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u0645 \u06a9\u0647 Docker \u062f\u0631\u0633\u062a \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 SSH \u0648\u0627\u0631\u062f \u0646\u0648\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a\u200c\u0634\u062f\u0647 \u0634\u0648\u06cc\u062f \u0648 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f Docker \u067e\u0627\u0633\u062e \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0645\u0648\u062a\u0648\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f: <code>docker --version<\/code><\/li>\n\n\n\n<li>\u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u062f\u06cc\u0645\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a: <code>sudo systemctl status docker<\/code><\/li>\n\n\n\n<li>\u06cc\u06a9 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062a\u0633\u062a \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f: <code>sudo docker run hub.cr.parmincloud.ir\/library\/hello-world<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u06af\u0631\u0648\u0647 docker \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0628\u0639\u062f \u0627\u0632 \u062e\u0631\u0648\u062c \u0648 \u0648\u0631\u0648\u062f \u0645\u062c\u062f\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a Docker \u0631\u0627 \u0628\u062f\u0648\u0646 sudo \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0648\u062f\u0646 Compose v2\u060c \u062f\u0633\u062a\u0648\u0631 <code>docker compose version<\/code> \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/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\">\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0646\u0647\u200c\u062a\u0646\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0648\u0642\u062a\u062a\u0627\u0646 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u062f\u060c \u0628\u0644\u06a9\u0647 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0633\u0631\u0648\u0631\u0647\u0627\u06cc\u062a\u0627\u0646 \u0627\u0632 \u06cc\u06a9 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0637\u0627\u0628\u0642 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc\u062a\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0627\u0634 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0645\u0627\u0647\u06cc\u062a \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0648 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u06cc\u0646 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062aaging\u060c \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646\u06cc \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0628\u0647 \u0628\u062e\u0634\u06cc \u0645\u0631\u06a9\u0632\u06cc \u062f\u0631 \u0641\u0631\u0627\u06cc\u0646\u062f\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062a\u06cc\u0645\u200c\u0647\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Ansible \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0641\u0631\u0627\u06cc\u0646\u062f \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Docker \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0631\u0627\u0647\u200c\u062f\u0648\u0631 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u06cc\u062f\u061b \u0634\u0627\u0645\u0644 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u067e\u0644\u0627\u06af\u06cc\u0646 \u0645\u062f\u0631\u0646 Docker Compose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0633\u0631\u0648\u0631\u0647\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u0627\u0647\u06cc\u062a \u06cc\u06a9\u200c\u0628\u0627\u0631\u0645\u0635\u0631\u0641\u0650 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u062f\u0631\u0646\u060c \u0646\u0642\u0634\u06cc \u0636\u0631\u0648\u0631\u06cc \u062f\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0627\u06cc\u0641\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0627\u0646\u0646\u062f Ansible \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0641\u0631\u0627\u06cc\u0646\u062f \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0631\u0648\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061b \u0628\u0627 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0648\u06cc\u0647\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0648 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u06a9\u0627\u0647\u0634 \u062e\u0637\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u06cc. Ansible \u0645\u0639\u0645\u0627\u0631\u06cc \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632\u0645\u0646\u062f &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7146,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[258,142],"tags":[],"class_list":["post-7145","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ubuntu","category-142"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7145","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=7145"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7145\/revisions"}],"predecessor-version":[{"id":7147,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7145\/revisions\/7147"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7146"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}