{"id":34473,"date":"2023-01-11T10:52:35","date_gmt":"2023-01-11T08:52:35","guid":{"rendered":"https:\/\/itedu.center\/ua\/blog\/?p=34473"},"modified":"2024-04-29T16:02:08","modified_gmt":"2024-04-29T13:02:08","slug":"30-ansible-modules-for-senior-devops-engineers-part-2","status":"publish","type":"post","link":"https:\/\/itedu.center\/ua\/blog\/guides\/30-ansible-modules-for-senior-devops-engineers-part-2\/","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 2)"},"content":{"rendered":"\n<p>\u0410 \u0449\u043e \u044f\u043a \u043c\u0438 \u0441\u043a\u0430\u0436\u0435\u043c\u043e, \u0449\u043e \u0432\u0430\u0448\u0430 DeLorean \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u043b\u0430 \u0431 \u0432\u0430\u043c \u043c\u0435\u043d\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u044f\u043a\u0431\u0438 \u0432\u0441\u0456 \u043f\u0440\u043e\u0446\u0435\u0441\u0438 \u0431\u0443\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0456? \u041f\u043e\u0434\u043e\u0440\u043e\u0436\u0456 \u0432 \u0447\u0430\u0441\u0456 \u0441\u0442\u0430\u043b\u0438 \u0431 \u043f\u0440\u0438\u0454\u043c\u043d\u0456\u0448\u0438\u043c\u0438 \u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0443\u0432\u0430\u043d\u0456\u0448\u0438\u043c\u0438 \ud83e\udd14<\/p>\n\n\n\n<p>\u041f\u0440\u043e\u0434\u043e\u0432\u0436\u0443\u0454\u043c\u043e \u0441\u0435\u0440\u0456\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0456\u044e \u0437 Ansible. \u041f\u0435\u0440\u0435\u043a\u043b\u0430\u043b\u0438 <a href=\"https:\/\/faun.pub\/ansible-30-most-important-modules-for-devops-professional-part-2-bb3f9739898e\" data-wpel-link=\"external\" rel=\"nofollow\">\u0434\u0440\u0443\u0433\u0443 \u0447\u0430\u0441\u0442\u0438\u043d\u0443 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0443<\/a> \u0437 \u0446\u0456\u0454\u0457 \u0442\u0435\u043c\u0438, \u0449\u043e\u0431 \u0432\u0438 \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043a\u0440\u0430\u0449\u0438\u0442\u0438 \u0441\u0432\u043e\u0457 \u043d\u0430\u0432\u0438\u0447\u043a\u0438.&nbsp;<\/p>\n\n\n\n<p>\u0427\u0430\u0441\u0442\u0438\u043d\u0443 \u043c\u043e\u0434\u0443\u043b\u0456\u0432 \u043c\u0438 \u0440\u043e\u0437\u0433\u043b\u044f\u043d\u0443\u043b\u0438 <a href=\"https:\/\/itedu.center\/ua\/blog\/guides\/30-ansible-modules-for-senior-devops-engineers-part-1\/\" title=\"\" data-wpel-link=\"internal\">\u0443 \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e\u043c\u0443 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0456<\/a>. \u0422\u0435\u043f\u0435\u0440 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c\u043e \u0434\u043e \u0442\u0438\u0445 \u0437 \u043d\u0438\u0445, \u0449\u043e \u043f\u043e\u0432\u2019\u044f\u0437\u0430\u043d\u0456 \u0437 \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0440\u0456\u0437\u043d\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0442\u0430 \u0457\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438.<\/p>\n\n\n\n<p>\u0426\u0435 \u043c\u043e\u0434\u0443\u043b\u0456 \u0434\u043b\u044f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u043a\u043e\u043f\u0456\u044e\u0432\u0430\u043d\u043d\u044f \u0430\u0431\u043e \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0444\u0430\u0439\u043b\u0456\u0432,\u00a0<\/li>\n\n\n\n<li>\u0441\u0442\u0438\u0441\u043d\u0435\u043d\u043d\u044f \u0442\u0430 \u0440\u043e\u0437\u043f\u0430\u043a\u0443\u0432\u0430\u043d\u043d\u044f \u0444\u0430\u0439\u043b\u0456\u0432,<\/li>\n\n\n\n<li>\u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0442\u0430 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f,<\/li>\n\n\n\n<li>\u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043e\u0437\u0432\u043e\u043b\u0430\u043c\u0438 \u043d\u0430 \u0444\u0430\u0439\u043b \u0430\u0431\u043e \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0454\u044e \u0443 \u043d\u0438\u0445,<\/li>\n\n\n\n<li>\u043f\u043e\u0448\u0443\u043a\u0443 \u0444\u0430\u0439\u043b\u0443 \u0442\u0430 \u0437\u0430\u043c\u0456\u043d\u0438 \u0442\u0435\u043a\u0441\u0442\u0443 \u0432\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0456.<\/li>\n<\/ul>\n\n\n\n<p>\u041f\u043e\u0447\u043d\u0456\u043c\u043e!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">copy<\/h2>\n\n\n\n<p>\u0414\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u043a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0444\u0430\u0439\u043b \u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0457 \u0430\u0431\u043e \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u043e\u0457 \u043c\u0430\u0448\u0438\u043d\u0438 \u043d\u0430 \u0456\u043d\u0448\u0443. \u0414\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u0438 \u0437 Windows \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c win_copy. \u041e\u0441\u044c \u044f\u043a \u0446\u0435 \u043f\u0440\u0430\u0446\u044e\u0454:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: copy module\n  hosts: localhost\n  tasks:\n  - name: copy a file from local machine to local machine\n    copy:\n      src: files\/src.txt\n      dest: files\/dest.txt\n---\n- name: copy module\n  hosts: all\n  tasks:\n  - name: copy a file from remote machine to remote machine\n    copy:\n      src: \/etc\/src.txt\n      dest: \/etc\/dest.txt\n\n  - name: copy a file from local machine to remote machine with owner and permissions\n    copy:\n      src: files\/src.txt\n      dest: \/etc\/dest.txt\n      owner: foo\n      group: foo\n      mode: '0644'\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">fetch<\/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, \u043a\u043e\u043b\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0444\u0430\u0439\u043b \u0437 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u043e\u0457 \u043c\u0430\u0448\u0438\u043d\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443. \u0417\u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0446\u0456 \u0444\u0430\u0439\u043b\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0456\u0439 \u043c\u0430\u0448\u0438\u043d\u0456 \u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0456\u0457 \u0437 \u0456\u043c\u0435\u043d\u0435\u043c \u0445\u043e\u0441\u0442\u0430.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: fetch module\n  hosts: all\n  tasks:\n  - name: copy a file from remote machine to local machine\n    fetch:\n      src: \/var\/log\/access.log\n      dest: \/var\/log\/fetched\n\n  - name: copy a file from local machine to remote machine with owner and permissions\n    copy:\n      src: files\/src.txt\n      dest: \/etc\/dest.txt\n      owner: foo\n      group: foo\n      mode: '0644'\n<\/code><\/pre>\n\n\n\n<p>\u0412\u0438 \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0443. \u0414\u043b\u044f \u0446\u044c\u043e\u0433\u043e&nbsp; \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f true \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0456 flat.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n\n- name: fetch module\n  hosts: all\n  tasks:\n  - name: copy a file from remote machine to local machine without parent folder structure.\n    fetch:\n      src: \/var\/log\/access.log\n      dest: \/var\/{{ inventory_hostname }}\/\n      flat: true\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">get_url<\/h2>\n\n\n\n<p>get_url \u043f\u0456\u0434\u0456\u0439\u0434\u0435, \u043a\u043e\u043b\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0444\u0430\u0439\u043b\u0438 \u0437 HTTPS, HTTP \u0447\u0438 FTP \u0441\u0435\u0440\u0432\u0435\u0440\u0456\u0432. \u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0437\u0430\u0437\u0432\u0438\u0447\u0430\u0439 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454 \u043f\u0440\u043e\u043a\u0441\u0456, \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u043d\u043e\u0434\u0438. \u0412\u0438 \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0441\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043a\u0441\u0456. \u0414\u043b\u044f \u0446\u044c\u043e\u0433\u043e \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u0437\u043c\u0456\u043d\u043d\u0443 \u0441\u0435\u0440\u0435\u0434\u043e\u0432\u0438\u0449\u0430 \u0430\u0431\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 use_proxy.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: get_url module\n  hosts: all\n  tasks:\n  - name: download tomcat from apache \n    get_url:\n      url: https:\/\/downloads.apache.org\/tomcat\/tomcat-8\/v8.5.81\/bin\/apache-tomcat-8.5.81-deployer.tar.gz\n      dest: \/tmp\/download\/tomcat\n      mode: 0755\n      owner: tomcat\n      group: tomcat\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">archive<\/h2>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0430\u0440\u0445\u0456\u0432\u0443\u0432\u0430\u043d\u043d\u044f: \u0441\u0442\u0432\u043e\u0440\u044e\u0454 \u0441\u0442\u0438\u0441\u043d\u0435\u043d\u0456 \u043f\u0430\u043a\u0443\u043d\u043a\u0438 \u0444\u0430\u0439\u043b\u0456\u0432 \u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 zip, tar, gz, bz2 \u0442\u0430 xz. \u0417\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0432\u0456\u043d \u043f\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0430\u0454, \u0449\u043e \u0444\u0430\u0439\u043b, \u044f\u043a\u0438\u0439 \u0432\u0438 \u043d\u0430\u043c\u0430\u0433\u0430\u0454\u0442\u0435\u0441\u044c \u0441\u0442\u0438\u0441\u043d\u0443\u0442\u0438, \u0456\u0441\u043d\u0443\u0454 \u0442\u0430 \u043d\u0435 \u043a\u043e\u043f\u0456\u044e\u0454 \u043f\u0435\u0440\u0435\u0434 \u0446\u0438\u043c \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 \u0446\u0456\u043b\u044c\u043e\u0432\u0438\u0439 \u0432\u0443\u0437\u043e\u043b.<\/p>\n\n\n\n<p>\u041f\u0440\u043e\u0442\u0435 \u0432\u0430\u0440\u0442\u043e \u043f\u0430\u043c\u2019\u044f\u0442\u0430\u0442\u0438, \u0449\u043e \u0442\u0438\u043f \u043f\u0430\u043a\u0443\u043d\u043a\u0430, \u044f\u043a\u0438\u0439 \u043c\u0438 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454\u043c\u043e \u0434\u043b\u044f \u0430\u0440\u0445\u0456\u0432\u0443, \u043c\u0430\u0454 \u0431\u0443\u0442\u0438 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u0446\u0456\u043b\u044c\u043e\u0432\u0456\u0439 \u043c\u0430\u0448\u0438\u043d\u0456.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: archive module\n  hosts: all\n  tasks:\n  - name: Compress directory \/path\/to\/foo\/ into \/path\/to\/foo.tgz\n    archive:\n      path: \/path\/to\/foo\n      dest: \/path\/to\/foo.tgz\n  - name: Compress regular file \/path\/to\/foo into \/path\/to\/foo.gz and remove it\n    archive:\n      path: \/path\/to\/foo\n      remove: yes\n  - name: Create a bz2 archive of multiple files, rooted at \/path\n    archive:\n      path:\n      - \/path\/to\/foo\n      - \/path\/wong\/foo\n      dest: \/path\/file.tar.bz2\n      format: bz2\n  - name: Create a gz archive of a globbed path, while excluding specific dirnames\n    archive:\n      path:\n      - \/path\/to\/foo\/*\n      dest: \/path\/file.tar.bz2\n      exclude_path:\n      - \/path\/to\/foo\/bar\n      - \/path\/to\/foo\/baz\n      format: gz\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">unarchive<\/h2>\n\n\n\n<p>unarchive \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c, \u0449\u043e\u0431 \u0440\u043e\u0437\u043f\u0430\u043a\u0443\u0432\u0430\u0442\u0438 \u0442\u0435, \u0449\u043e \u043c\u0438 \u0437\u0430\u043f\u0430\u043a\u0443\u0432\u0430\u043b\u0438 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0412\u0456\u043d \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435 \u0441\u043a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0444\u0430\u0439\u043b \u043d\u0430 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0435\u0440\u0435\u0434 \u0442\u0438\u043c, \u044f\u043a \u0440\u043e\u0437\u043f\u0430\u043a\u0443\u0432\u0430\u0442\u0438 \u0439\u043e\u0433\u043e.&nbsp;<\/p>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454 \u043a\u043e\u043c\u0430\u043d\u0434\u0438 unzip \u0442\u0430 tar -xzf, \u0442\u043e\u0436 \u0457\u0445 \u0442\u0440\u0435\u0431\u0430 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u043d\u0430 \u0446\u0456\u043b\u044c\u043e\u0432\u0438\u0445 \u043d\u043e\u0434\u0430\u0445. \u0414\u043b\u044f \u0432\u0443\u0437\u043b\u0430 Windows \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0439\u0442\u0435 win_unzip.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: unarchive module\n  hosts: all\n  tasks:\n  - name: Extract foo.tgz into \/var\/lib\/foo\n    unarchive:\n      src: foo.tgz\n      dest: \/var\/lib\/foo\n\n  - name: Unarchive a file that is already on the remote machine\n    unarchive:\n      src: \/tmp\/foo.zip\n      dest: \/usr\/local\/bin\n      remote_src: yes\n\n  - name: Unarchive a file that needs to be downloaded \n    unarchive:\n      src: https:\/\/example.com\/example.zip\n      dest: \/usr\/local\/bin\n      remote_src: yes\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">file<\/h2>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454 \u0437\u0430 \u0442\u0430\u043a\u0456 \u0437\u0430\u0434\u0430\u0447\u0456, \u044f\u043a \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0430\u0431\u043e \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f \u0444\u0430\u0439\u043b\u0456\u0432 \u0442\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0456\u0439, \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u0438\u0445 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c, \u0434\u043e\u0434\u0430\u0432\u0430\u043d\u043d\u044f \u0442\u0430 \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043e\u0437\u0432\u043e\u043b\u0456\u0432 \u043d\u0430 \u0444\u0430\u0439\u043b\u0438 \u0442\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0442\u0430 \u0456\u043d\u0448\u0435.&nbsp;<\/p>\n\n\n\n<p>\u0414\u043b\u044f \u043c\u0430\u0448\u0438\u043d \u043d\u0430 Windows \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c win_file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: file module\n  hosts: all\n  tasks:\n  - name: Create a file\n    file:\n      path: \/etc\/foo.conf\n      state: touch\n      mode: u=rw,g=r,o=r\n  - name: Create a directory if it does not exist\n    file:\n      path: \/etc\/some_directory\n      state: directory\n      mode: '0755'\n  - name: Remove file (delete file)\n    file:\n      path: \/etc\/foo.txt\n      state: absent\n  - name: Change file ownership, group and permissions\n    file:\n      path: \/etc\/foo.conf\n      owner: foo\n      group: foo\n      mode: '0644'\n  - name: Create a symbolic link\n    file:\n      src: \/file\/to\/link\/to\n      dest: \/path\/to\/symlink\n      owner: foo\n      group: foo\n      state: link\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\/\u2568\u255d\u2568\u255b\u2568\u2524\u2564a\u2568\u2557\u2564u.png\" alt=\"\" class=\"wp-image-34474\" srcset=\"https:\/\/itedu.center\/ua\/blog\/wp-content\/uploads\/2023\/01\/\u2568\u255d\u2568\u255b\u2568\u2524\u2564a\u2568\u2557\u2564u.png 940w, https:\/\/itedu.center\/ua\/blog\/wp-content\/uploads\/2023\/01\/\u2568\u255d\u2568\u255b\u2568\u2524\u2564a\u2568\u2557\u2564u-300x170.png 300w, https:\/\/itedu.center\/ua\/blog\/wp-content\/uploads\/2023\/01\/\u2568\u255d\u2568\u255b\u2568\u2524\u2564a\u2568\u2557\u2564u-768x435.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">acl<\/h2>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c, \u0449\u043e\u0431 \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u0442\u0438 \u0442\u0430 \u0437\u043c\u0456\u043d\u044e\u0432\u0430\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u043f\u0438\u0441\u043a\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u0443. \u0414\u043b\u044f \u0446\u044c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e, \u0449\u043e\u0431 \u0443 \u0446\u0456\u043b\u044c\u043e\u0432\u0456\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u0456\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0456 \u0431\u0443\u043b\u043e \u0443\u0432\u0456\u043c\u043a\u043d\u0435\u043d\u043e acl \u0442\u0430 \u0449\u043e\u0431 \u0431\u0443\u043b\u0438 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0456 \u0434\u0432\u0456\u0439\u043a\u043e\u0432\u0456 \u0444\u0430\u0439\u043b\u0438 getfacl \u0442\u0430 setfacl.<\/p>\n\n\n\n<p>\u0414\u043b\u044f Windows \u043f\u0456\u0434\u0456\u0439\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u044c win_acl.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: acl module\n  hosts: all\n  tasks:\n  - name: Grant user Joe read access to a file\n    acl:\n      path: \/etc\/foo.conf\n      entity: joe\n      etype: user\n      permissions: r\n      state: present\n\n  - name: Removes the acl for Joe on a specific file\n    acl:\n      path: \/etc\/foo.conf\n      entity: joe\n      etype: user\n      state: absent\n\n  - name: Sets default acl for joe on foo.d\n    acl:\n      path: \/etc\/foo.d\n      entity: joe\n      etype: user\n      permissions: rw\n      default: yes\n      state: present\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">template<\/h2>\n\n\n\n<p>Template \u0430\u0431\u043e \u0448\u0430\u0431\u043b\u043e\u043d \u0432 Ansible \u2014 \u0446\u0435 \u0444\u0430\u0439\u043b \u0437 \u0443\u0441\u0456\u043c\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457, \u0449\u043e \u043d\u0430\u0434\u0430\u0454 \u0434\u0438\u043d\u0430\u043c\u0456\u0447\u043d\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u044f\u043a \u0437\u043c\u0456\u043d\u043d\u0456. \u041a\u043e\u043b\u0438 \u0432\u0438\u043a\u043e\u043d\u0443\u0454\u0442\u044c\u0441\u044f \u043f\u043b\u0435\u0439\u0431\u0443\u043a, \u0443 \u0437\u0430\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0456 \u0432\u0456\u0434 \u0443\u043c\u043e\u0432, \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043c\u0435\u0445\u0430\u043d\u0456\u0437\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0456\u0432 <a href=\"https:\/\/jinja.palletsprojects.com\/en\/3.1.x\/\" data-wpel-link=\"external\" rel=\"nofollow\">Jinja2<\/a>, \u0437\u043c\u0456\u043d\u043d\u0456 \u043e\u0442\u0440\u0438\u043c\u0443\u044e\u0442\u044c \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u043d\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f.<\/p>\n\n\n\n<p>\u0422\u0430\u043a\u043e\u044e \u0443\u043c\u043e\u0432\u043e\u044e \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, \u044f\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u0438 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454\u0442\u0435.&nbsp;<\/p>\n\n\n\n<p>\u0424\u0430\u0439\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0456\u0432 \u0437\u0430\u0437\u0432\u0438\u0447\u0430\u0439 \u043c\u0430\u044e\u0442\u044c \u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u043d\u044f .j2.<\/p>\n\n\n\n<p>\u0426\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u043e\u0431\u0438\u0442\u044c \u0434\u0432\u0456 \u0440\u0435\u0447\u0456: \u0441\u043f\u0435\u0440\u0448\u0443 \u0437\u0430\u043c\u0456\u043d\u044e\u0454 \u0443 \u0444\u0430\u0439\u043b\u0456 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u043d\u0456 \u0437\u043c\u0456\u043d\u043d\u0456 \u0456\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0456\u0457 Jinja2 \u043d\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u043d\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f, \u0430 \u043f\u043e\u0442\u0456\u043c \u043a\u043e\u043f\u0456\u044e\u0454 (scp) \u0444\u0430\u0439\u043b \u043d\u0430 \u0432\u0456\u0434\u0434\u0430\u043b\u0435\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: template module\n  hosts: all\n  tasks:\n  - name: Template a file to \/etc\/file.conf\n    template:\n      src: \/mytemplates\/foo.j2\n      dest: \/etc\/file.conf\n      owner: bin\n      group: wheel\n      mode: '0644'\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">find<\/h2>\n\n\n\n<p>\u041f\u0440\u0430\u0446\u044e\u0454 \u0442\u0430\u043a \u0441\u0430\u043c\u043e \u044f\u043a \u0456 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 Linux find \u2014 \u0434\u043e\u043f\u043e\u043c\u0430\u0433\u0430\u0454 \u0437\u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b\u0438 \u0442\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0437\u0430 \u0440\u0456\u0437\u043d\u0438\u043c\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0456\u044f\u043c\u0438 \u043f\u043e\u0448\u0443\u043a\u0443. \u0414\u043b\u044f Windows \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 win_find.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: find module\n  hosts: all\n  tasks:\n  - name: Recursively find \/tmp files older than 2 days\n    find:\n      paths: \/tmp\n      age: 2d\n      recurse: yes\n\n  - name: Recursively find \/tmp files older than 4 weeks and equal or greater than 1 megabyte\n    find:\n      paths: \/tmp\n      age: 4w\n      size: 1m\n      recurse: yes\n\n  - name: Recursively find \/var\/tmp files with last access time greater than 3600 seconds\n    find:\n      paths: \/var\/tmp\n      age: 3600\n      age_stamp: atime\n      recurse: yes\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">replace<\/h2>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043c\u0456\u043d\u0438 \u0432\u0441\u0456\u0445 \u0435\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0456\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0443 \u0444\u0430\u0439\u043b\u0456. \u0412\u0456\u043d \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0456 \u0432\u0438\u0440\u0430\u0437\u0438, \u0430 \u0442\u0430\u043a\u043e\u0436 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043c\u0456\u043d\u043e\u044e \u043c\u043e\u0436\u0435 \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443 \u043a\u043e\u043f\u0456\u044e \u0444\u0430\u0439\u043b\u0443.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: replace module\n  hosts: all\n  tasks:\n  - name: Ansible replace Unix with Linux\n    replace:\n      path: \/etc\/ansible\/sample.txt\n      regexp: 'Unix'\n      replace: 'Linux'\n  - name: Replace before the expression till the begin of the file\n    replace:\n      path: \/etc\/apache2\/sites-available\/default.conf\n      before: '# live site config'\n      regexp: 'Unix'\n      replace: 'Linux'\n  - name: Replace between the expressions and create a backup\n    replace:\n      path: \/etc\/hosts\n      after: '&lt;VirtualHost &#91;*]&gt;'\n      before: '&lt;\/VirtualHost&gt;'\n      regexp: 'Unix'\n      replace: 'Linux'\n      backup: yes\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">lineinfile<\/h2>\n\n\n\n<p>\u041c\u043e\u0434\u0443\u043b\u044c lineinfile \u0441\u0442\u0430\u043d\u0435 \u0432 \u043f\u0440\u0438\u0433\u043e\u0434\u0456, \u043a\u043e\u043b\u0438 \u0432\u0438 \u0445\u043e\u0447\u0435\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438, \u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0430\u0431\u043e \u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043e\u0434\u0438\u043d \u0440\u044f\u0434\u043e\u043a \u0443 \u0444\u0430\u0439\u043b\u0456. \u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0456 \u0432\u0438\u0440\u0430\u0437\u0438, \u0449\u043e\u0431 \u0442\u043e\u0447\u043d\u043e \u0432\u0438\u0437\u043d\u0430\u0447\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434 \u0437\u043c\u0456\u043d\u043e\u044e \u0430\u0431\u043e \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f\u043c.<\/p>\n\n\n\n<p>\u0412\u0438 \u0437\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0442\u0430 \u0437\u043c\u0456\u043d\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a. \u0426\u0435 \u043c\u043e\u0436\u043d\u0430 \u0437\u0440\u043e\u0431\u0438\u0442\u0438 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u0438\u0440\u0430\u0437\u0443 \u0437\u0456 \u0437\u0432\u043e\u0440\u043e\u0442\u043d\u0438\u043c \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c. \u0410 \u0449\u043e\u0431 \u0432\u043d\u0435\u0441\u0442\u0438 \u0437\u043c\u0456\u043d\u0438 \u0443 \u043f\u0435\u0432\u043d\u0443 \u0447\u0430\u0441\u0442\u0438\u043d\u0443 \u0444\u0430\u0439\u043b\u0443, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438 insertafter \u0456 insertbefore.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: lineinfile module\n  hosts: all\n  tasks:\n  - name: adding a line\n    lineinfile:\n      path: \/etc\/selinux\/config\n      regexp: '^SELINUX='\n      line: SELINUX=enforcing\n\n  - name: deleting a line\n    lineinfile:\n      path: \/etc\/sudoers\n      state: absent\n      regexp: '^%wheel'\n\n  - name: Replacing a line\n    lineinfile:\n      path: \/etc\/hosts\n      regexp: '^127\\.0\\.0\\.1'\n      line: 127.0.0.1 localhost\n  - name: replace a line only after a specified string \n    lineinfile:\n      path: \/etc\/httpd\/conf\/httpd.conf\n      regexp: '^Listen '\n      insertafter: '^#Listen '\n      line: Listen 8080\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">blockinfile<\/h2>\n\n\n\n<p>blockinfile \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0454, \u043e\u043d\u043e\u0432\u043b\u044e\u0454 \u0430\u0431\u043e \u0432\u0438\u043b\u0443\u0447\u0430\u0454 \u0431\u043b\u043e\u043a \u0443 \u0431\u0430\u0433\u0430\u0442\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0442\u0456. \u0411\u043b\u043e\u043a \u043c\u0430\u0442\u0438\u043c\u0435 \u043c\u0430\u0440\u043a\u0435\u0440, \u0449\u043e \u043f\u043e\u0437\u043d\u0430\u0447\u0430\u0454 \u0439\u043e\u0433\u043e \u043f\u043e\u0447\u0430\u0442\u043e\u043a \u0442\u0430 \u043a\u0456\u043d\u0435\u0446\u044c, \u0449\u043e\u0431 \u0437\u0440\u043e\u0431\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043d\u043d\u044f \u0456\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u0438\u043c. \u0426\u0435 \u0442\u0430\u043a\u0435 \u0437\u0430\u0432\u0434\u0430\u043d\u043d\u044f, \u044f\u043a\u0435 \u043c\u043e\u0436\u043d\u0430 \u0432\u0438\u043a\u043e\u043d\u0430\u0442\u0438 \u043a\u0456\u043b\u044c\u043a\u0430 \u0440\u0430\u0437\u0456\u0432 \u0431\u0435\u0437 \u0437\u043c\u0456\u043d\u0438 \u043a\u0456\u043d\u0446\u0435\u0432\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043f\u0456\u0441\u043b\u044f \u043f\u0435\u0440\u0448\u043e\u0457 \u0456\u0442\u0435\u0440\u0430\u0446\u0456\u0457.<\/p>\n\n\n\n<p>\u0417\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043e\u0434\u0430\u0441\u0442\u044c \u0431\u043b\u043e\u043a \u0443 \u043a\u0456\u043d\u0446\u0456 \u0444\u0430\u0439\u043b\u0443.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\n- name: blockinfile module\n  hosts: all\n  tasks:\n  - name: insert a block into a file\n    blockinfile:\n      path: \/etc\/ssh\/sshd_config\n      block: |\n        Match User ansible-agent\n        PasswordAuthentication no\n  - name: Insert\/Update HTML surrounded by custom markers after &lt;body&gt; line\n    blockinfile:\n      path: \/var\/www\/html\/index.html\n      marker: \"&lt;!-- {mark} ANSIBLE MANAGED BLOCK --&gt;\"\n      insertafter: \"&lt;body&gt;\"\n      block: |\n        &lt;h1&gt;Welcome to {{ ansible_hostname }}&lt;\/h1&gt;\n        &lt;p&gt;Last updated on {{ ansible_date_time.iso8601 }}&lt;\/p&gt;\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>\u0412\u0456\u0442\u0430\u0454\u043c\u043e, \u0432\u0438 \u0449\u043e\u0439\u043d\u043e \u0441\u0442\u0430\u043b\u0438 \u0432\u043f\u0440\u0430\u0432\u043d\u0456\u0448\u0435 \u043d\u0430 12 \u043c\u043e\u0434\u0443\u043b\u0456\u0432 Ansible! \u0423 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u043c\u0443 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0456 \u0440\u043e\u0437\u0433\u043b\u044f\u043d\u0435\u043c\u043e \u0449\u0435 7 \u043c\u043e\u0434\u0443\u043b\u0456\u0432, \u0449\u043e\u0431 \u0432\u0438 \u0449\u0435 \u0431\u0456\u043b\u044c\u0448\u0435 \u0440\u043e\u0437\u0443\u043c\u0456\u043b\u0438\u0441\u044f \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0456\u0457.<\/p>\n\n\n\n<p>\u042f\u043a\u0449\u043e \u0436 \u0445\u043e\u0447\u0435\u0442\u0435 \u0441\u043c\u0456\u043b\u0438\u0432\u043e \u0434\u043e\u0434\u0430\u0442\u0438 \u043d\u0430\u0432\u0438\u0447\u043a\u0438 \u0440\u043e\u0431\u043e\u0442\u0438 \u0437 Ansible \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u0440\u0435\u0437\u044e\u043c\u0435 \u2014 \u0440\u0435\u0454\u0441\u0442\u0440\u0443\u0439\u0442\u0435\u0441\u044c \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. \u0422\u0430\u043c \u0432\u0438 \u043e\u0442\u0440\u0438\u043c\u0430\u0454\u0442\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u0456 \u0437\u043d\u0430\u043d\u043d\u044f, \u044f\u043a\u0456 \u043e\u0434\u0440\u0430\u0437\u0443 \u0437\u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438 \u043d\u0430 \u0441\u0432\u043e\u0454\u043c\u0443 \u043f\u0440\u043e\u0454\u043a\u0442\u0456.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0410 \u0449\u043e \u044f\u043a \u043c\u0438 \u0441\u043a\u0430\u0436\u0435\u043c\u043e, \u0449\u043e \u0432\u0430\u0448\u0430 DeLorean \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u043b\u0430 \u0431 \u0432\u0430\u043c \u043c\u0435\u043d\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u044f\u043a\u0431\u0438 \u0432\u0441\u0456 \u043f\u0440\u043e\u0446\u0435\u0441\u0438 \u0431\u0443\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0456? \u041f\u043e\u0434\u043e\u0440\u043e\u0436\u0456 \u0432 \u0447\u0430\u0441\u0456 \u0441\u0442\u0430\u043b\u0438 \u0431 \u043f\u0440\u0438\u0454\u043c\u043d\u0456\u0448\u0438\u043c\u0438 \u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0443\u0432\u0430\u043d\u0456\u0448\u0438\u043c\u0438 \ud83e\udd14 \u041f\u0440\u043e\u0434\u043e\u0432\u0436\u0443\u0454\u043c\u043e \u0441\u0435\u0440\u0456\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0456\u044e \u0437 Ansible. \u041f\u0435\u0440\u0435\u043a\u043b\u0430\u043b\u0438 \u0434\u0440\u0443\u0433\u0443 \u0447\u0430\u0441\u0442\u0438\u043d\u0443 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0443 \u0437 \u0446\u0456\u0454\u0457 \u0442\u0435\u043c\u0438, \u0449\u043e\u0431 \u0432\u0438 \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043a\u0440\u0430\u0449\u0438\u0442\u0438 \u0441\u0432\u043e\u0457 \u043d\u0430\u0432\u0438\u0447\u043a\u0438.&nbsp; \u0427\u0430\u0441\u0442\u0438\u043d\u0443 \u043c\u043e\u0434\u0443\u043b\u0456\u0432 \u043c\u0438 \u0440\u043e\u0437\u0433\u043b\u044f\u043d\u0443\u043b\u0438 \u0443 \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e\u043c\u0443 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0456. \u0422\u0435\u043f\u0435\u0440 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c\u043e \u0434\u043e \u0442\u0438\u0445 \u0437 \u043d\u0438\u0445,&hellip;<\/p>\n","protected":false},"author":4,"featured_media":34475,"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-34473","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\/34473","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=34473"}],"version-history":[{"count":4,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/posts\/34473\/revisions"}],"predecessor-version":[{"id":36090,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/posts\/34473\/revisions\/36090"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/media\/34475"}],"wp:attachment":[{"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/media?parent=34473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/categories?post=34473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itedu.center\/ua\/blog\/wp-json\/wp\/v2\/tags?post=34473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}