{"id":478088,"date":"2026-04-30T09:36:55","date_gmt":"2026-04-30T09:36:55","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=478088"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=478088","title":{"rendered":"\u041c\u0438\u043d\u0438-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u043d\u0430 \u0441\u0442\u0440\u0430\u0436\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0432 Ansible"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0438 \u0438 \u0440\u043e\u043b\u0438 Ansible. \u0414\u0435\u043b\u0430\u043b\u0441\u044f \u043e\u043d \u0434\u043e\u043b\u0433\u043e, \u0441\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u0418 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043b\u0438\u043d\u0442\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0445\u0440\u0443\u043f\u043a\u0443\u044e YAML \u043a\u0440\u0430\u0441\u043e\u0442\u0443 \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u043b\u0438 \u043c\u044b \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u044b, \u0442\u043e \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442 \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439. \u0418 \u0432\u043e\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0430\u0432\u043a\u0430\u043c\u0438 \u0432 Git, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0438\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0437\u0430\u0440\u0430\u043d\u0435\u0435.<\/p>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f \u0431\u0443\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 Gitea, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u043d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<\/blockquote>\n<h2>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f <code>Runner<\/code> &#8212; \u044d\u0442\u043e \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0442\u0440\u0443\u0434\u044f\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0435\u043c\u0443 \u0437\u0430\u0434\u0430\u0434\u0438\u043c. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u043d\u043e\u0434\u0435, \u0433\u0434\u0435 \u0441\u0442\u043e\u0438\u0442 \u0438 Git, \u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u044b\u043b\u0430 \u0431\u044b \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h3>\u0428\u0430\u0433 1<\/h3>\n<p>\u0418 \u0442\u0430\u043a, \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u0430\u0448\u0443 \u043c\u0430\u0448\u0438\u043d\u0443, \u0433\u0434\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u043d\u043d\u0435\u0440 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c dockerfile \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code>FROM docker.gitea.com\/runner-images:ubuntu-latestRUN apt-get update &amp;&amp; \\    apt-get install -y yamllint &amp;&amp; \\    apt-get install -y wget &amp;&amp; \\    wget https:\/\/github.com\/gitleaks\/gitleaks\/releases\/download\/v8.18.4\/gitleaks_8.18.4_linux_x64.tar.gz &amp;&amp; \\    tar -xzf gitleaks_8.18.4_linux_x64.tar.gz &amp;&amp; \\    mv gitleaks \/usr\/local\/bin\/ &amp;&amp; \\    rm gitleaks_8.18.4_linux_x64.tar.gz &amp;&amp; \\    apt-get clean &amp;&amp; \\    rm -rf \/var\/lib\/apt\/lists\/*<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0431\u0435\u0440\u0451\u043c \u043e\u0431\u0440\u0430\u0437 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0441\u0430\u043c\u0438\u043c gitea \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e <code>yamllint<\/code> \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 YAML-\u0444\u0430\u0439\u043b\u0430\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 <code>gitleaks<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0431\u044b\u0442\u044b\u0435 \u043f\u0430\u0440\u043e\u043b\u0438, \u043a\u043b\u044e\u0447\u0438, API \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437:<\/p>\n<pre><code>docker build -t ubuntu-yamllint:latest .<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0428\u0430\u0433 2<\/h3>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b docker-compose.yml \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code>version: '3'services:  act_runner:    image: gitea\/act_runner:latest    privileged: true    volumes:      - \/var\/run\/docker.sock:\/var\/run\/docker.sock      - .\/runner_data:\/data    environment:      - GITEA_INSTANCE_URL=https:\/\/YOUR_GIT      - GITEA_RUNNER_REGISTRATION_TOKEN=YOUR_TOKEN      - GITEA_RUNNER_NAME=my-docker-runner      - GITEA_RUNNER_LABELS=ubuntu-yamllint:docker:\/\/ubuntu-yamllint:latest,ubuntu-latest:docker:\/\/docker.gitea.com\/runner-images:ubuntu-latest,ubuntu-22.04:docker:\/\/docker.gitea.com\/runner-images:ubuntu-22.04    restart: unless-stopped<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 &#8212; <code>GITEA_INSTANCE_URL<\/code> (\u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0430\u0448 Git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439) \u0438 <code>GITEA_RUNNER_REGISTRATION_TOKEN<\/code>. \u0422\u043e\u043a\u0435\u043d \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <code>Actions -&gt; Runners<\/code>, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 <code>Create new Runner<\/code>. \u0412 \u044d\u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u043d\u044e \u0440\u0430\u043d\u043d\u0435\u0440 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/e4\/69\/7e\/e4697eb018e4b3477b8e5c6db0752e7c.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/e4\/69\/7e\/e4697eb018e4b3477b8e5c6db0752e7c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/e4\/69\/7e\/e4697eb018e4b3477b8e5c6db0752e7c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<blockquote>\n<p>\u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>GITEA_RUNNER_LABELS<\/code> \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0439\u0431\u043b\u043e\u0432. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e ubuntu-yamllint:latest. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u043e\u043d\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u043c\u0435\u0448\u0430\u044e\u0442 \u043e\u043d\u0438 \u0442\u043e\u0436\u0435.<\/p>\n<\/blockquote>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c, \u043a\u0430\u043a \u043e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:<\/p>\n<pre><code>docker compose up -ddocker ps<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h2>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d<\/h2>\n<p>\u041c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430.<\/p>\n<h3>\u0428\u0430\u0433 1<\/h3>\n<p>\u0412 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 Ansible \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>.gitea\/workflows<\/code> \u0438 \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>yamllint_and_pass_check.yml<\/code>. \u0417\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:<\/p>\n<pre><code>---name: YAML Linton: [push]jobs:  yamllint:    runs-on: ubuntu-yamllint    steps:      - name: Checkout linting        uses: actions\/checkout@v4      - name: Run yamllint with auto-detected config        run:  yamllint -c .yamllint .  gitleaks:    runs-on: ubuntu-yamllint    steps:      - name: Checkout passwords leaks        uses: actions\/checkout@v4        with:          fetch-depth: 0      - name: Run gitleaks          run: gitleaks detect --source ....<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0443\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0448\u0430\u0433\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 push), \u043a\u0430\u043a\u043e\u0439 \u043e\u0431\u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c (\u0441\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043f\u043e \u0448\u0430\u0433\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442 \u0438\u043c\u0435\u043d\u0430).<\/p>\n<p>\u041d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p><code>uses: actions\/checkout@v4<\/code> &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 action GitHub \u0432\u0435\u0440\u0441\u0438\u0438 4 (Gitea \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0431\u0435\u0440\u0451\u0442 \u043e\u0442\u0442\u0443\u0434\u0430), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u043b\u043e\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u043e \u0441\u0443\u0442\u0438 <code>git clone<\/code>). \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e Actions \u0438 \u043a\u0430\u043a\u0438\u0435 \u043e\u043d\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/actions\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p><code>fetch-depth: 0<\/code> &#8212; \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0451, \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e.<\/p>\n<p><code>yamllint -c .yamllint .<\/code> \u0438 <code>gitleaks detect --source .<\/code> &#8212; \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<h3>\u0428\u0430\u0433 2<\/h3>\n<p>\u0418 \u0447\u0442\u043e\u0431\u044b \u043b\u0438\u043d\u0442\u0435\u0440 \u0438 gitleaks \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u0440\u044f\u0434 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435, \u0430 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d), \u043c\u044b \u0438\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c.<\/p>\n<p>\u0412\u0441\u0451 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 Ansible \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <code>.yamllint<\/code> \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code>---extends: defaultignore: |  roles\/filebeat_install\/files\/fields.yml  .gitea\/workflows\/yamllint.ymlrules:line-length:max: 180...<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0438\u043d\u0442\u0435\u0440 \u043d\u0430\u0447\u043d\u0451\u0442 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043b\u0438\u043d\u0442\u0435\u0440\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e:<\/p>\n<pre><code># yamllint disable-line rule:line-length<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c gitleaks. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b <code>.gitleaks.toml<\/code> \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043d\u0435\u0433\u043e:<\/p>\n<pre><code>[extend]useDefault = true[allowlist]paths = [  '''roles\/logs_settings_on_ptaf\/templates\/filebeat.yml.j2''',]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<h2>\u0417\u0430\u0449\u0438\u0449\u0430\u0435\u043c master-\u0432\u0435\u0442\u043a\u0443<\/h2>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0432\u0438\u0434\u0438\u043c \u0442\u0430\u043c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <code>Branches<\/code><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/de\/6f\/d6\/de6fd678a5dcf7adbe710b671a485b0a.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/de\/6f\/d6\/de6fd678a5dcf7adbe710b671a485b0a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/de\/6f\/d6\/de6fd678a5dcf7adbe710b671a485b0a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0430\u043c \u043c\u043e\u0436\u0435\u043c \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u043b\u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u044e\u0449\u0435\u0435\u0441\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0432\u0435\u0442\u043a\u0438 \u043e\u0442 \u0432\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043d\u0435\u0451 \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>Push<\/code> \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>Disable Push<\/code> \u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>Force Push<\/code> \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>Disable Force Push<\/code>. \u0410 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>Pull Request Merge<\/code> \u0443\u043a\u0430\u0436\u0435\u043c <code>Enable Merge<\/code>. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u043b\u0438\u0448\u043d\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u043d\u0430 \u043f\u0443\u043d\u043a\u0442\u0435 <code>Administrators must follow branch protection rules<\/code>, \u0447\u0442\u043e\u0431\u044b \u0443 \u0430\u0434\u043c\u0438\u043d\u043e\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043e\u0431\u043b\u0430\u0437\u043d\u0430 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u043d\u0430 \u043f\u0443\u043d\u043a\u0442\u0435 <code>Enable Status Check<\/code> \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0451\u0440\u0434\u0436 \u0432 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d. \u041d\u043e \u0432\u044b\u0431\u043e\u0440 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/96\/dd\/56\/96dd567c2f1572e47dbd2d648ab6dad5.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/96\/dd\/56\/96dd567c2f1572e47dbd2d648ab6dad5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/96\/dd\/56\/96dd567c2f1572e47dbd2d648ab6dad5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u0443 \u043c\u0430\u0441\u0442\u0435\u0440-\u0432\u0435\u0442\u043a\u0438 \u043e\u0442 \u0431\u0430\u0440\u0434\u0430\u043a\u0430 \u0438 \u0443\u0442\u0435\u0447\u043a\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432. \u041d\u043e\u0432\u044b\u0435 \u043f\u0443\u0448\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438 \u0438 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u043c\u0451\u0440\u0434\u0436\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e. \u041d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u043e\u0431\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0443\u0436\u043d\u044b. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c dockerfile \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437. \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>ansiblelint<\/code>, \u043d\u043e, \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0436 \u0436\u0451\u0441\u0442\u043a\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043d\u043e \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Ansible, \u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1029976\/\">https:\/\/habr.com\/ru\/articles\/1029976\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0438 \u0438 \u0440\u043e\u043b\u0438 Ansible. \u0414\u0435\u043b\u0430\u043b\u0441\u044f \u043e\u043d \u0434\u043e\u043b\u0433\u043e, \u0441\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u0418 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043b\u0438\u043d\u0442\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0445\u0440\u0443\u043f\u043a\u0443\u044e YAML \u043a\u0440\u0430\u0441\u043e\u0442\u0443 \u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u043b\u0438 \u043c\u044b \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u044b, \u0442\u043e \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442 \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439. \u0418 \u0432\u043e\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0430\u0432\u043a\u0430\u043c\u0438 \u0432 Git, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0438\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0437\u0430\u0440\u0430\u043d\u0435\u0435.\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f \u0431\u0443\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 Gitea, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u043d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0435.\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f Runner &#8212; \u044d\u0442\u043e \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0442\u0440\u0443\u0434\u044f\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437 \u0437\u0430 \u0440\u0430\u0437\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0435\u043c\u0443 \u0437\u0430\u0434\u0430\u0434\u0438\u043c. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u043d\u043e\u0434\u0435, \u0433\u0434\u0435 \u0441\u0442\u043e\u0438\u0442 \u0438 Git, \u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u044b\u043b\u0430 \u0431\u044b \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c.\u0428\u0430\u0433 1\u0418 \u0442\u0430\u043a, \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u0430\u0448\u0443 \u043c\u0430\u0448\u0438\u043d\u0443, \u0433\u0434\u0435 \u0440\u0435\u0448\u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u043d\u043d\u0435\u0440 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c dockerfile \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:FROM docker.gitea.com\/runner-images:ubuntu-latestRUN apt-get update &amp;&amp; \\    apt-get install -y yamllint &amp;&amp; \\    apt-get install -y wget &amp;&amp; \\    wget https:\/\/github.com\/gitleaks\/gitleaks\/releases\/download\/v8.18.4\/gitleaks_8.18.4_linux_x64.tar.gz &amp;&amp; \\    tar -xzf gitleaks_8.18.4_linux_x64.tar.gz &amp;&amp; \\    mv gitleaks \/usr\/local\/bin\/ &amp;&amp; \\    rm gitleaks_8.18.4_linux_x64.tar.gz &amp;&amp; \\    apt-get clean &amp;&amp; \\    rm -rf \/var\/lib\/apt\/lists\/*\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0431\u0435\u0440\u0451\u043c \u043e\u0431\u0440\u0430\u0437 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0441\u0430\u043c\u0438\u043c gitea \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e yamllint \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 YAML-\u0444\u0430\u0439\u043b\u0430\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 gitleaks, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0431\u044b\u0442\u044b\u0435 \u043f\u0430\u0440\u043e\u043b\u0438, \u043a\u043b\u044e\u0447\u0438, API \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437:docker build -t ubuntu-yamllint:latest .\u0428\u0430\u0433 2\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b docker-compose.yml \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:version: &#8216;3&#8217;services:  act_runner:    image: gitea\/act_runner:latest    privileged: true    volumes:      &#8212; \/var\/run\/docker.sock:\/var\/run\/docker.sock      &#8212; .\/runner_data:\/data    environment:      &#8212; GITEA_INSTANCE_URL=https:\/\/YOUR_GIT      &#8212; GITEA_RUNNER_REGISTRATION_TOKEN=YOUR_TOKEN      &#8212; GITEA_RUNNER_NAME=my-docker-runner      &#8212; GITEA_RUNNER_LABELS=ubuntu-yamllint:docker:\/\/ubuntu-yamllint:latest,ubuntu-latest:docker:\/\/docker.gitea.com\/runner-images:ubuntu-latest,ubuntu-22.04:docker:\/\/docker.gitea.com\/runner-images:ubuntu-22.04    restart: unless-stopped\u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 &#8212; GITEA_INSTANCE_URL (\u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0430\u0448 Git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439) \u0438 GITEA_RUNNER_REGISTRATION_TOKEN. \u0422\u043e\u043a\u0435\u043d \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Actions -&gt; Runners, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 Create new Runner. \u0412 \u044d\u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u043d\u044e \u0440\u0430\u043d\u043d\u0435\u0440 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.\u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 GITEA_RUNNER_LABELS \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0439\u0431\u043b\u043e\u0432. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e ubuntu-yamllint:latest. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u043e\u043d\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u043c\u0435\u0448\u0430\u044e\u0442 \u043e\u043d\u0438 \u0442\u043e\u0436\u0435.\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c, \u043a\u0430\u043a \u043e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:docker compose up -ddocker ps\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u041c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430.\u0428\u0430\u0433 1\u0412 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 Ansible \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e .gitea\/workflows \u0438 \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 yamllint_and_pass_check.yml. \u0417\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:&#8212;name: YAML Linton: [push]jobs:  yamllint:    runs-on: ubuntu-yamllint    steps:      &#8212; name: Checkout linting        uses: actions\/checkout@v4      &#8212; name: Run yamllint with auto-detected config        run:  yamllint -c .yamllint .  gitleaks:    runs-on: ubuntu-yamllint    steps:      &#8212; name: Checkout passwords leaks        uses: actions\/checkout@v4        with:          fetch-depth: 0      &#8212; name: Run gitleaks          run: gitleaks detect &#8212;source &#8230;.\u0421\u0443\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0448\u0430\u0433\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 push), \u043a\u0430\u043a\u043e\u0439 \u043e\u0431\u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c (\u0441\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043f\u043e \u0448\u0430\u0433\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442 \u0438\u043c\u0435\u043d\u0430).\u041d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f.uses: actions\/checkout@v4 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 action GitHub \u0432\u0435\u0440\u0441\u0438\u0438 4 (Gitea \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0431\u0435\u0440\u0451\u0442 \u043e\u0442\u0442\u0443\u0434\u0430), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u043b\u043e\u043d \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 (\u043f\u043e \u0441\u0443\u0442\u0438 git clone). \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e Actions \u0438 \u043a\u0430\u043a\u0438\u0435 \u043e\u043d\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0434\u0435\u0441\u044c.fetch-depth: 0 &#8212; \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0451, \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e.yamllint -c .yamllint . \u0438 gitleaks detect &#8212;source . &#8212; \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.\u0428\u0430\u0433 2\u0418 \u0447\u0442\u043e\u0431\u044b \u043b\u0438\u043d\u0442\u0435\u0440 \u0438 gitleaks \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u0440\u044f\u0434 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435, \u0430 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d), \u043c\u044b \u0438\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c.\u0412\u0441\u0451 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 Ansible \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b .yamllint \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:&#8212;extends: defaultignore: |  roles\/filebeat_install\/files\/fields.yml  .gitea\/workflows\/yamllint.ymlrules:line-length:max: 180&#8230;\u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0438\u043d\u0442\u0435\u0440 \u043d\u0430\u0447\u043d\u0451\u0442 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435.\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043b\u0438\u043d\u0442\u0435\u0440\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e:# yamllint disable-line rule:line-length\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c gitleaks. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b .gitleaks.toml \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043d\u0435\u0433\u043e:[extend]useDefault = true[allowlist]paths = [  &#187;&#8217;roles\/logs_settings_on_ptaf\/templates\/filebeat.yml.j2&#187;&#8217;,]\u0417\u0434\u0435\u0441\u044c \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c.\u0417\u0430\u0449\u0438\u0449\u0430\u0435\u043c master-\u0432\u0435\u0442\u043a\u0443\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0432\u0438\u0434\u0438\u043c \u0442\u0430\u043c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Branches\u0422\u0430\u043c \u043c\u043e\u0436\u0435\u043c \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u043b\u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u044e\u0449\u0435\u0435\u0441\u044f.\u0414\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0432\u0435\u0442\u043a\u0438 \u043e\u0442 \u0432\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043d\u0435\u0451 \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Push \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c Disable Push \u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Force Push \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c Disable Force Push. \u0410 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Pull Request Merge \u0443\u043a\u0430\u0436\u0435\u043c Enable Merge. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u043b\u0438\u0448\u043d\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u043d\u0430 \u043f\u0443\u043d\u043a\u0442\u0435 Administrators must follow branch protection rules, \u0447\u0442\u043e\u0431\u044b \u0443 \u0430\u0434\u043c\u0438\u043d\u043e\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043e\u0431\u043b\u0430\u0437\u043d\u0430 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430.\u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u043d\u0430 \u043f\u0443\u043d\u043a\u0442\u0435 Enable Status Check \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0451\u0440\u0434\u0436 \u0432 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d. \u041d\u043e \u0432\u044b\u0431\u043e\u0440 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u0443 \u043c\u0430\u0441\u0442\u0435\u0440-\u0432\u0435\u0442\u043a\u0438 \u043e\u0442 \u0431\u0430\u0440\u0434\u0430\u043a\u0430 \u0438 \u0443\u0442\u0435\u0447\u043a\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432. \u041d\u043e\u0432\u044b\u0435 \u043f\u0443\u0448\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0442\u043a\u0438 \u0438 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u043c\u0451\u0440\u0434\u0436\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e. \u041d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u043e\u0431\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u043d\u0443\u0436\u043d\u044b. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c dockerfile \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437. \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c ansiblelint, \u043d\u043e, \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0436 \u0436\u0451\u0441\u0442\u043a\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043d\u043e \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Ansible, \u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445.\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 https:\/\/habr.com\/ru\/articles\/1029976\/<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-478088","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=478088"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478088\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=478088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=478088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=478088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}