{"id":34454,"date":"2023-01-04T10:02:00","date_gmt":"2023-01-04T08:02:00","guid":{"rendered":"https:\/\/itedu.center\/ua\/blog\/?p=34454"},"modified":"2023-01-03T16:04:00","modified_gmt":"2023-01-03T14:04:00","slug":"30-ansible-modules-for-senior-devops-engineers-part-1","status":"publish","type":"post","link":"https:\/\/itedu.center\/ua\/blog\/guides\/30-ansible-modules-for-senior-devops-engineers-part-1\/","title":{"rendered":"Ansible: 30 \u043c\u043e\u0434\u0443\u043b\u0456\u0432 \u0434\u043b\u044f Senior DevOps \u0456\u043d\u0436\u0435\u043d\u0435\u0440\u0456\u0432 (\u0427\u0430\u0441\u0442\u0438\u043d\u0430 1)"},"content":{"rendered":"\n<p>\u041e\u0434\u043d\u0430 \u0456\u0437 \u0437\u0430\u0434\u0430\u0447 DevOps \u0456\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0456\u044f \u0432\u0441\u044c\u043e\u0433\u043e, \u0449\u043e \u043c\u043e\u0436\u043d\u0430. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0443\u0432\u0430\u0442\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0442\u0430 \u0440\u043e\u0437\u0433\u043e\u0440\u0442\u0430\u043d\u043d\u044f \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0456\u0432 \u043c\u043e\u0436\u043d\u0430 \u0437 Ansible. \u0426\u0435 \u041f\u0417, \u0449\u043e \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u0438 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0454\u044e, \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0443\u0432\u0430\u0442\u0438, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0456\u0437\u043e\u0432\u0430\u043d\u043e \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0432\u0430\u0442\u0438 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0438 \u0442\u0430 \u043f\u0430\u0440\u0430\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u0438\u043a\u043e\u043d\u0443\u0432\u0430\u0442\u0438 \u0442\u0438\u043f\u043e\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043d\u043d\u044f \u043d\u0430 \u0433\u0440\u0443\u043f\u0456 \u0441\u0438\u0441\u0442\u0435\u043c.&nbsp;&nbsp;<\/p>\n\n\n\n<p>\u0429\u043e\u0431 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0439\u043e\u0433\u043e \u043d\u0430 \u043f\u043e\u0432\u043d\u0443 \u043f\u043e\u0442\u0443\u0436\u043d\u0456\u0441\u0442\u044c, \u0432\u0430\u0440\u0442\u043e \u043e\u0437\u043d\u0430\u0439\u043e\u043c\u0438\u0442\u0438\u0441\u044f \u0437 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0442\u0430 \u0457\u0445 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\u043c. \u0417\u043d\u0430\u0439\u0448\u043b\u0438 \u0442\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u043b\u0438 \u043a\u043e\u0440\u0438\u0441\u043d\u0438\u0439 <a href=\"https:\/\/faun.pub\/ansible-30-most-important-modules-for-devops-professional-part-1-fdd536b0790d\" title=\"\" data-wpel-link=\"external\" rel=\"nofollow\">\u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b<\/a>, \u0449\u043e \u0434\u043e\u043f\u043e\u043c\u043e\u0436\u0435 \u0440\u043e\u0437\u0456\u0431\u0440\u0430\u0442\u0438\u0441\u044f \u0443 \u0442\u0435\u043c\u0456.<\/p>\n\n\n\n<p><strong>\u041c\u043e\u0434\u0443\u043b\u0456 <\/strong>\u2014 \u043e\u043a\u0440\u0435\u043c\u0456 \u043e\u0434\u0438\u043d\u0438\u0446\u0456 \u043a\u043e\u0434\u0443, \u044f\u043a\u0456 \u043c\u043e\u0436\u043d\u0430 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u043a\u0430 \u0430\u0431\u043e \u0432 \u043f\u043b\u0435\u0439\u0431\u0443\u0446\u0456, \u0449\u043e\u0431 \u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0446\u0456\u043b\u044c\u043e\u0432\u0438\u0439 \u0432\u0443\u0437\u043e\u043b \u0430\u0431\u043e \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0437 \u043d\u044c\u043e\u0433\u043e \u043f\u0435\u0432\u043d\u0443 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044e. Ansible \u0432\u0438\u043a\u043e\u043d\u0443\u0454 \u043a\u043e\u0436\u0435\u043d \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0430 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u0456\u0439 \u043d\u043e\u0434\u0456 \u0442\u0430 \u043f\u043e\u0432\u0435\u0440\u0442\u0430\u0454 \u043d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f. \u041c\u043e\u0434\u0443\u043b\u0456 \u0442\u0430\u043a\u043e\u0436 \u043d\u0430\u0437\u0438\u0432\u0430\u044e\u0442\u044c \u043f\u043b\u0430\u0433\u0456\u043d\u0430\u043c\u0438 \u0437\u0430\u0432\u0434\u0430\u043d\u044c \u0430\u0431\u043e \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a.<\/p>\n\n\n\n<p>\u0404 \u043a\u0456\u043b\u044c\u043a\u0430 \u043d\u0430\u0439\u0432\u0430\u0436\u043b\u0438\u0432\u0456\u0448\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0456\u0432 Ansible, \u044f\u043a\u0456 \u0447\u0430\u0441\u0442\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0456\u0457 \u0440\u0456\u0437\u043d\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043d\u044c. \u0407\u0445 \u0434\u043e\u0441\u0438\u0442\u044c \u0431\u0430\u0433\u0430\u0442\u043e, \u0442\u043e\u0436 \u0446\u044e \u0442\u0435\u043c\u0443 \u043c\u0438 \u0440\u043e\u0437\u0434\u0456\u043b\u0438\u043c\u043e \u043d\u0430 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438\u043d\u0438.&nbsp;<\/p>\n\n\n\n<p>\u0417\u0430\u0440\u0430\u0437 \u043c\u0438 \u0440\u043e\u0437\u0433\u043b\u044f\u043d\u0435\u043c\u043e \u043c\u043e\u0434\u0443\u043b\u0456 \u0434\u043b\u044f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0445\u043e\u0441\u0442\u0443 \u0442\u0430 \u0446\u0456\u043b\u044c\u043e\u0432\u043e\u0433\u043e \u0432\u0443\u0437\u043b\u0430,&nbsp;<\/li>\n\n\n\n<li>\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u0457 \u0437 \u043d\u043e\u0434\u0438,&nbsp;<\/li>\n\n\n\n<li>\u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0442\u0430 \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438,<\/li>\n\n\n\n<li>\u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u0432\u0443\u0437\u043b\u0430\u0445 \u0431\u0430\u0437\u043e\u0432\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0442\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0456\u0457\u0432.<\/li>\n<\/ul>\n\n\n\n<p>\u041d\u0443\u043c\u043e \u0434\u043e\u0441\u043b\u0456\u0434\u0436\u0443\u0432\u0430\u0442\u0438!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ping<\/h2>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0434\u043e \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0443 \u0442\u0430 \u0447\u0430\u0441\u0442\u043e, \u0449\u043e\u0431\u0438 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 python \u043d\u0430 \u043d\u044c\u043e\u043c\u0443. \u0422\u0430\u043a\u043e\u0436 \u043f\u0456\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0432\u0445\u043e\u0434\u0456\u0432 \u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0430 \u043f\u0440\u0430\u0432 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: ping module \n  hosts: all\n  become: false\n  tasks:\n    - name: test connection\n      ping:\n<\/code><\/pre>\n\n\n\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0456 \u043e\u0442\u0440\u0438\u043c\u0430\u0454\u0442\u0435:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>host-1 | SUCCESS =&gt; {<\/em>\n\u201cansible_facts\u201d: {\n\u201cdiscovered_interpreter_python\u201d: \u201c\/usr\/bin\/python\u201d\n},\n\u201cchanged\u201d: false,\n\u201cping\u201d: \u201cpong\u201d\n}\n<\/code><\/pre>\n\n\n\n<p>\u0429\u043e \u0432\u0430\u0436\u043b\u0438\u0432\u043e \u0437\u043d\u0430\u0442\u0438 \u043f\u0440\u043e \u043c\u043e\u0434\u0443\u043b\u044c ping:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0412\u0456\u043d \u043d\u0435 \u043f\u0456\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u043b\u044f ICMP, \u043f\u0440\u043e\u0442\u0435 \u043f\u0440\u0430\u0446\u044e\u0454 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u043d\u0430 SSH \u0430\u0431\u043e \u0431\u0443\u0434\u044c-\u044f\u043a\u043e\u043c\u0443 \u0456\u043d\u0448\u043e\u043c\u0443 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0456 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f.<\/li>\n\n\n\n<li>Ping \u043f\u0440\u0438\u0439\u043c\u0430\u0454 \u0434\u0430\u043d\u0456 \u0442\u0430 \u0432\u0438\u0434\u0430\u0454 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f pong, crash \u0430\u0431\u043e \u0456\u043d\u0448\u0438\u0439 \u0440\u044f\u0434\u043e\u043a.<\/li>\n\n\n\n<li>\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u2014 pong. \u0426\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0454, \u0449\u043e \u0432\u0441\u0435 \u0434\u043e\u0431\u0440\u0435.<\/li>\n\n\n\n<li>\u0423 \u0432\u0438\u043f\u0430\u0434\u043a\u0443 \u043d\u0435\u0432\u0434\u0430\u0447\u0456, \u0434\u0430\u043d\u0456 \u043e\u0442\u0440\u0438\u043c\u0430\u044e\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f crash, \u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0438\u0434\u0430\u0441\u0442\u044c \u0432\u0438\u043d\u044f\u0442\u043e\u043a.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">setup<\/h2>\n\n\n\n<p>Setup \u0434\u043e\u043f\u043e\u043c\u0430\u0433\u0430\u0454 \u0437\u0456\u0431\u0440\u0430\u0442\u0438 \u0434\u0430\u043d\u0456 \u043f\u0440\u043e \u043d\u043e\u0434\u0438 \u2014 \u0456\u043c\u2019\u044f \u0445\u043e\u0441\u0442\u0443, ip-\u0430\u0434\u0440\u0435\u0441\u0443, \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044e \u043f\u0440\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0456\u0439\u043d\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0430 \u0456\u043d\u0448\u0456.<\/p>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0454 \u043f\u043b\u0435\u0439\u0431\u0443\u043a, \u0449\u043e\u0431 \u0437\u0456\u0431\u0440\u0430\u0442\u0438 \u043a\u043e\u0440\u0438\u0441\u043d\u0456 \u0437\u043c\u0456\u043d\u043d\u0456 \u043f\u0440\u043e \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u0438\u0439 \u0445\u043e\u0441\u0442. \u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 \u043e\u0442\u0440\u0438\u043c\u0443\u0454 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044e \u0443 \u0437\u0440\u0443\u0447\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0456 JSON, \u0434\u0435 \u0432\u0441\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043f\u043e\u0447\u0438\u043d\u0430\u044e\u0442\u044c\u0441\u044f \u0437 \u00abansible_\u00bb.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>ansible host-1 -m setup -u ec2-user<\/em><\/code><\/pre>\n\n\n\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435 \u0434\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/QiV2KVgzdSOVfW7AUcBJ7q7t98IvspxHwQARWeHDOlSh_ecDr1SVp6p9LURZ0-q0igP5py5lAKSyCbK7wuySBio5eLESL79YzgMpq6P8QmcKN0rpQnNom0_m8FnzHQer7DTmnXF6uAfmyFWUoSeVmQ0FSpk4UU8onnvoZmpu9ykv8ZmlH-15gzdUI89ocA\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u0412\u0438 \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435\u0442\u0435 \u0444\u0456\u043b\u044c\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <strong>filter<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>ansible all -m setup -u ec2-user -a 'filter=ansible_os_family'<\/em><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/ndRjk5kdTXY8ayHkPvGCvGNAP7zmkWMxaNzhSRcyoLCwB-z_IfrDpQtqLw8OfHVxfO6qKfA6iHcHaWy_Y0qlwbKGQUnAAmS_66YzfgY_UocmWy2SepDrEcWZa1J5KiB0zeCVGuxFk_l30vMdm1d2ScPNUDq4FE5ewnpStaE4963mRXURoc7Tf8kxneUOtQ\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">yum<\/h2>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0437\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u0449\u043e\u0431 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0432\u0430\u0442\u0438 \u0440\u0456\u0437\u043d\u0456 \u043f\u0430\u043a\u0443\u043d\u043a\u0438 \u0430\u0431\u043e \u041f\u0417 \u043d\u0430 \u0432\u0435\u0440\u0441\u0456\u044f\u0445 Linux, \u0437\u0430\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0445 \u043d\u0430 Red Hat.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: Update Package on linux system\n  hosts: all\n  become: yes\n  tasks:\n  - name: Uninstall Apache\n    yum:\n      name: nginx\n      state: absent\n  - name: Install a list of packages with a list variable\n    yum:\n      name: \"{{ packages }}\"\n    vars:\n      packages:\n      - httpd\n      - httpd-tools\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">apt<\/h2>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043d\u0438\u043c \u0437\u0430\u0431\u0435\u0437\u043f\u0435\u0447\u0435\u043d\u043d\u044f\u043c \u0432 Linux \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 Debian.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: Update Package on debian system\n  hosts: all\n  become: yes\n  tasks:\n  - name: Run the equivalent of \"apt-get update\" as a separate step\n    apt:\n      update_cache: yes\n  - name: Install latest version of \"openjdk-6-jdk\" \n    apt:\n      name: openjdk-6-jdk\n      state: latest\n      install_recommends: no\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">package<\/h2>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c package \u043a\u0435\u0440\u0443\u0454 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u043d\u0430 \u0446\u0456\u043b\u044c\u043e\u0432\u0456\u0439 \u043d\u043e\u0434\u0456. \u041f\u0440\u0438 \u0446\u044c\u043e\u043c\u0443 \u0432\u0456\u043d \u043d\u0435 \u0432\u043a\u0430\u0437\u0443\u0454 \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0443\u043d\u043a\u0456\u0432 \u2014 lyum, apt \u0430\u0431\u043e \u0456\u043d\u0448\u0438\u0439. \u0419\u043e\u0433\u043e \u0437\u0440\u0443\u0447\u043d\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0443 \u0440\u0456\u0437\u043d\u043e\u0440\u0456\u0434\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0435\u0434\u043e\u0432\u0438\u0449\u0456 \u043c\u0430\u0448\u0438\u043d, \u0430\u0434\u0436\u0435 \u0432\u0430\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0430 \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0435 \u0437\u0430\u0432\u0434\u0430\u043d\u043d\u044f \u0434\u043b\u044f \u043a\u043e\u0436\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u0456\u0432. \u0412\u0456\u043d \u0434\u0456\u0454 \u044f\u043a \u043f\u0440\u043e\u043a\u0441\u0456 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u0456\u0432.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: Update Packages on target system\n  hosts: all\n  become: yes\n  tasks:\n  - name: Install ntpdate\n    ansible.builtin.package:\n      name: ntpdate\n      state: present\n   \n  - name: Install the latest version of Apache and MariaDB\n    ansible.builtin.package:\n      name:\n        - httpd\n        - mariadb-server\n      state: latest\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"533\" src=\"https:\/\/itedu.center\/ua\/blog\/wp-content\/uploads\/2023\/01\/blog_ansible_2.png\" alt=\"\" class=\"wp-image-34455\" srcset=\"https:\/\/itedu.center\/ua\/blog\/wp-content\/uploads\/2023\/01\/blog_ansible_2.png 940w, https:\/\/itedu.center\/ua\/blog\/wp-content\/uploads\/2023\/01\/blog_ansible_2-300x170.png 300w, https:\/\/itedu.center\/ua\/blog\/wp-content\/uploads\/2023\/01\/blog_ansible_2-768x435.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">pip<\/h2>\n\n\n\n<p>\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c \u0434\u043b\u044f \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0430\u043a\u0443\u043d\u043a\u0430\u043c\u0438 python \u0443 \u0446\u0456\u043b\u044c\u043e\u0432\u0456\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0456.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: Update python packages\n  hosts: all\n  become: yes\n  tasks:\n  - name: Install multi python packages with version specifiers\n    pip:\n      name:\n        - django&gt;1.11.0,&lt;1.12.0\n        - bottle&gt;0.10,&lt;0.20,!=0.11\n  - name: Install specified python requirements\n    pip:\n      requirements: \/my_app\/requirements.txt\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">npm<\/h2>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c \u0434\u043b\u044f \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 node.js. \u0412\u0456\u043d \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u043e \u0431\u0430\u0437\u043e\u0432\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0456\u0432 Ansible. \u0429\u043e\u0431 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0442\u0438 \u0439\u043e\u0433\u043e \u0443 \u043f\u043b\u0435\u0439\u0431\u0443\u0446\u0456, \u0432\u043a\u0430\u0436\u0456\u0442\u044c <strong>community.general.npm.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: npm module\n  hosts: all\n  tasks:\n  - name: Install \"coffee-script\" node.js package.\n    community.general.npm:\n      name: coffee-script\n      path: \/app\/location\n  - name: Install packages based on package.json.\n    community.general.npm:\n      path: \/app\/location\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">raw<\/h2>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u0432\u0438\u043a\u043e\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 SSH \u0456\u0437 \u043d\u0438\u0437\u044c\u043a\u0438\u043c \u0440\u0456\u0432\u043d\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0443. \u0426\u0435 \u043a\u043e\u0440\u0438\u0441\u043d\u043e \u0443 \u0434\u0435\u043a\u0456\u043b\u044c\u043a\u043e\u0445 \u0432\u0438\u043f\u0430\u0434\u043a\u0430\u0445. \u041d\u0430\u0439\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0456\u0448\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442 \u2014 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f python \u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0456, \u0443 \u044f\u043a\u0456\u0439 \u0439\u043e\u0433\u043e \u043d\u0435\u043c\u0430\u0454. \u0406\u043d\u0448\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f: \u0434\u043b\u044f \u0441\u043f\u0456\u043b\u043a\u0443\u0432\u0430\u043d\u043d\u044f \u0437 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044f\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u043d\u0430 \u044f\u043a\u0438\u0445 \u043d\u0435 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e python.<\/p>\n\n\n\n<p>\u0412 \u0456\u043d\u0448\u0438\u0445 \u0432\u0438\u043f\u0430\u0434\u043a\u0430\u0445 \u043a\u0440\u0430\u0449\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0456 shell \u0430\u0431\u043e command. \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0438, \u044f\u043a\u0456 \u043e\u0442\u0440\u0438\u043c\u0443\u0454 raw, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u044c\u0441\u044f \u0431\u0435\u0437\u043f\u043e\u0441\u0435\u0440\u0435\u0434\u043d\u044c\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u0443 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u0443 \u043e\u0431\u043e\u043b\u043e\u043d\u043a\u0443.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: raw module usage\n  hosts: all\n  become: yes\n  tasks:\n  - name: Bootstrap a host without python2 installed\n    raw: dnf install -y python2 python2-dnf libselinux-python\n  \n  - name: Run a command that uses non-posix shell-isms (in this example \/bin\/sh doesn't handle redirection and wildcards together but bash does)\n    raw: cat &lt; \/tmp\/*txt\n    args:\n      executable: \/bin\/bash\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">command<\/h2>\n\n\n\n<p>\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0446\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0449\u043e\u0431 \u0432\u0438\u043a\u043e\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0438 \u043d\u0430 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u043e\u043c\u0443 \u0432\u0443\u0437\u043b\u0456. \u0417\u0434\u0435\u0431\u0456\u043b\u044c\u0448\u043e\u0433\u043e \u043c\u043e\u0432\u0430 \u043f\u0440\u043e \u043f\u0440\u043e\u0441\u0442\u0456 \u043a\u043e\u043c\u0430\u043d\u0434\u0438 Linux. \u0422\u0443\u0442 \u0432\u043e\u043d\u0438 \u043d\u0435 \u043e\u0431\u0440\u043e\u0431\u043b\u044f\u044e\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u043e\u043b\u043e\u043d\u043a\u0443, \u0442\u043e\u0436 \u0437\u043c\u0456\u043d\u043d\u0456, \u044f\u043a $HOSTNAME, \u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0456\u0457&nbsp; \u00ab*\u00bb, \u00ab&lt;\u00bb, \u00ab&gt;\u00bb, \u00ab|\u00bb, \u00ab;\u00bb \u0456 \u00ab&amp;\u00bb \u043d\u0435 \u043f\u0440\u0430\u0446\u044e\u0432\u0430\u0442\u0438\u043c\u0443\u0442\u044c.&nbsp;<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0446\u0456\u043b\u0435\u0439 \u0443 Windows \u043f\u0456\u0434\u0456\u0439\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u044c win_command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: command module\n  hosts: all\n  tasks:\n  - name: Run command if \/path\/to\/database does not exist (without 'args')\n    command: \/usr\/bin\/make_database.sh db_user db_name creates=\/path\/to\/database\n  - name: Run command if \/path\/to\/database does not exist (with 'args' keyword)\n    ansible.builtin.command: \/usr\/bin\/make_database.sh db_user db_name\n    args:\n      creates: \/path\/to\/database\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">shell<\/h2>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u0438\u0439, \u0449\u043e\u0431 \u0432\u0438\u043a\u043e\u043d\u0443\u0432\u0430\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0438 \u043e\u0431\u043e\u043b\u043e\u043d\u043a\u0438 \u043d\u0430 \u0446\u0456\u043b\u044c\u043e\u0432\u0438\u0445 \u0445\u043e\u0441\u0442\u0430\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 Unix. \u041d\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u0430\u0433\u0443 \u043c\u043e\u0434\u0443\u043b\u044e command, shell \u043f\u0440\u0438\u0439\u043c\u0430\u0454 \u0434\u0443\u0436\u0435 \u0441\u043a\u043b\u0430\u0434\u043d\u0456 \u043a\u043e\u043c\u0430\u043d\u0434\u0438 \u0437 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438 \u0442\u0430 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430\u043c\u0438.&nbsp;<\/p>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0456\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u043b\u0438\u0448\u0435 \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d \u043d\u0430 \u0431\u0430\u0437\u0456 Linux. \u0414\u043b\u044f Windows \u0454 win_powershell.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: shell module\n  hosts: all\n  tasks:\n  - name: This command will change the working directory to somedir\/ and will only run when somedir\/somelog.txt doesn't exist\n    shell: somescript.sh &gt;&gt; somelog.txt\n    args:\n      chdir: somedir\/\n      creates: somelog.txt\n  \n  - name: This command will change the working directory to somedir\/\n    shell:\n      cmd: ls -l | grep log\n      chdir: somedir\/\n  \n  - name: Run a command that uses non-posix shell-isms (in this example \/bin\/sh doesn't handle redirection and wildcards together but bash does)\n    shell: cat &lt; \/tmp\/*txt\n    args:\n      executable: \/bin\/bash\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">script<\/h2>\n\n\n\n<p>Script \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c, \u0449\u043e\u0431 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0456\u0439 \u043d\u0430 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u0456\u0439 \u043d\u043e\u0434\u0456. \u041a\u043e\u043b\u0438 \u043c\u0438 \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0454\u043c\u043e \u043c\u043e\u0434\u0443\u043b\u044c shell \u0456 \u043d\u0430\u0434\u0430\u0454\u043c\u043e \u0439\u043e\u043c\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0456\u0439 \u043e\u0431\u043e\u043b\u043e\u043d\u043a\u0438, \u0441\u043f\u0435\u0440\u0448\u0443 \u0432\u0456\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0454 \u0439\u043e\u0433\u043e \u043d\u043e\u0434\u0456, \u0430 \u043f\u043e\u0442\u0456\u043c \u0432\u0438\u043a\u043e\u043d\u0443\u0454. \u041c\u043e\u0434\u0443\u043b\u044e script \u043d\u0435 \u043f\u043e\u0442\u0440\u0456\u0431\u0435\u043d python \u043d\u0430 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u043e\u043c\u0443 \u0432\u0443\u0437\u043b\u0456, \u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0456\u0439 \u0432\u0438\u043a\u043e\u043d\u0443\u0454\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u043e\u043b\u043e\u043d\u043a\u0443.&nbsp;<\/p>\n\n\n\n<p>\u0412\u0443\u0437\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 Windows \u0442\u0435\u0436 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u044e\u0442\u044c \u0446\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><em>---<\/em>\n- name: script module\n  hosts: all\n  tasks:\n  -  name: Run a script with arguments (free form)\n     ansible.builtin.script: \/some\/local\/script.sh --some-argument 1234\n   \n  -  name: Run a script with arguments (using 'cmd' parameter)\n     ansible.builtin.script:\n       cmd: \/some\/local\/script.sh --some-argument 1234\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0412\u0438\u0441\u043d\u043e\u0432\u043e\u043a<\/h2>\n\n\n\n<p>\u0422\u0435\u043f\u0435\u0440 \u0432\u0438 \u0437\u043d\u0430\u0454\u0442\u0435 11 \u043c\u043e\u0434\u0443\u043b\u0456\u0432 Ansible, \u0449\u043e \u0434\u043e\u043f\u043e\u043c\u043e\u0436\u0443\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0443\u0432\u0430\u0442\u0438 \u0440\u0456\u0437\u043d\u0456 \u0437\u0430\u0432\u0434\u0430\u043d\u043d\u044f. \u0406\u043d\u0448\u0456 29 \u0440\u043e\u0437\u0433\u043b\u044f\u043d\u0435\u043c\u043e \u0443 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0445 \u043f\u0443\u0431\u043b\u0456\u043a\u0430\u0446\u0456\u044f\u0445. \u042f\u043a\u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u0434\u0456\u0437\u043d\u0430\u0442\u0438\u0441\u044c \u0431\u0456\u043b\u044c\u0448\u0435 \u043f\u0440\u043e \u0446\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043d\u0435 \u0437\u0430\u0431\u0435\u0437\u043f\u0435\u0447\u0435\u043d\u043d\u044f \u0430\u0431\u043e \u043f\u043e\u043a\u0440\u0430\u0449\u0438\u0442\u0438 \u0441\u0432\u043e\u0457 \u043d\u0430\u0432\u0438\u0447\u043a\u0438 \u0432\u0436\u0435 \u0437\u0430\u0440\u0430\u0437 \u2014 \u0440\u0430\u0434\u0438\u043c\u043e \u0437\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u0443\u0432\u0430\u0433\u0443 \u043d\u0430 \u043d\u0430\u0448 \u043a\u0443\u0440\u0441 \u00ab\u0410\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0456\u044f \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e <a href=\"https:\/\/itedu.center\/ua\/courses\/administruvannia-ta-avtomatyzaciia-za-dopomogoyu-ansible\/\" data-wpel-link=\"internal\">Ansible<\/a>\u00bb.<\/p>\n\n\n\n<p>\u0417\u0430 \u0442\u0440\u0438 \u0442\u0438\u0436\u043d\u0456 \u043d\u0430\u0432\u0447\u0438\u043c\u043e \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0432\u0430\u0442\u0438 \u0442\u0430 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0442\u043e\u0447\u0435\u043d\u043d\u044f Ansible, \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u0442\u0438 \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0438 \u0437 \u043d\u0443\u043b\u044f \u0442\u0430 \u0437\u0430\u0441\u0442\u043e\u0441\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0457\u0445 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0446\u0456, \u043f\u0440\u0430\u0446\u044e\u0432\u0430\u0442\u0438 \u0437 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0439 Ansible Galaxy, \u043f\u0438\u0441\u0430\u0442\u0438 \u0440\u043e\u043b\u0456, \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0457\u0445 \u0437\u043c\u0456\u043d\u043d\u0456, \u0430 \u0442\u0430\u043a\u043e\u0436 \u0437\u0430\u0441\u0442\u043e\u0441\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0432 \u0440\u043e\u0431\u043e\u0442\u0456 Ansible AWX.<\/p>\n\n\n\n<p>\u041c\u0435\u0440\u0449\u0456\u0439 \u0434\u043e \u043d\u043e\u0432\u0438\u0445 \u043d\u0430\u0432\u0438\u0447\u043e\u043a! \ud83d\ude0e<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041e\u0434\u043d\u0430 \u0456\u0437 \u0437\u0430\u0434\u0430\u0447 DevOps \u0456\u043d\u0436\u0435\u043d\u0435\u0440\u0430 \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0456\u044f \u0432\u0441\u044c\u043e\u0433\u043e, \u0449\u043e \u043c\u043e\u0436\u043d\u0430. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0443\u0432\u0430\u0442\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0442\u0430 \u0440\u043e\u0437\u0433\u043e\u0440\u0442\u0430\u043d\u043d\u044f \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0456\u0432 \u043c\u043e\u0436\u043d\u0430 \u0437 Ansible. \u0426\u0435 \u041f\u0417, \u0449\u043e \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u0438 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0454\u044e, \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0443\u0432\u0430\u0442\u0438, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0456\u0437\u043e\u0432\u0430\u043d\u043e \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0432\u0430\u0442\u0438 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0438 \u0442\u0430 \u043f\u0430\u0440\u0430\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u0438\u043a\u043e\u043d\u0443\u0432\u0430\u0442\u0438 \u0442\u0438\u043f\u043e\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043d\u043d\u044f \u043d\u0430 \u0433\u0440\u0443\u043f\u0456 \u0441\u0438\u0441\u0442\u0435\u043c.&nbsp;&nbsp; \u0429\u043e\u0431 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0439\u043e\u0433\u043e \u043d\u0430 \u043f\u043e\u0432\u043d\u0443 \u043f\u043e\u0442\u0443\u0436\u043d\u0456\u0441\u0442\u044c, \u0432\u0430\u0440\u0442\u043e \u043e\u0437\u043d\u0430\u0439\u043e\u043c\u0438\u0442\u0438\u0441\u044f \u0437 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0442\u0430 \u0457\u0445 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\u043c. \u0417\u043d\u0430\u0439\u0448\u043b\u0438 \u0442\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u043b\u0438 \u043a\u043e\u0440\u0438\u0441\u043d\u0438\u0439 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b, \u0449\u043e \u0434\u043e\u043f\u043e\u043c\u043e\u0436\u0435 \u0440\u043e\u0437\u0456\u0431\u0440\u0430\u0442\u0438\u0441\u044f \u0443 \u0442\u0435\u043c\u0456.&hellip;<\/p>\n","protected":false},"author":4,"featured_media":34456,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[352],"tags":[256,532],"class_list":["post-34454","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides","tag-ansible","tag-automation"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"uk","enabled_languages":["uk"],"languages":{"uk":{"title":true,"content":true,"excerpt":false}}},"acf":[],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/posts\/34454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/comments?post=34454"}],"version-history":[{"count":5,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/posts\/34454\/revisions"}],"predecessor-version":[{"id":35573,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/posts\/34454\/revisions\/35573"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/media\/34456"}],"wp:attachment":[{"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/media?parent=34454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/categories?post=34454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/tags?post=34454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}