0 added
0 removed
Original
2026-01-01
Modified
2026-02-19
1
<ul><li>/</li>
1
<ul><li>/</li>
2
<li>/</li>
2
<li>/</li>
3
</ul><p>Ansible<strong></strong> • 3 мая 2025 • 10 мин чтения</p>
3
</ul><p>Ansible<strong></strong> • 3 мая 2025 • 10 мин чтения</p>
4
<p><strong>Ansible</strong>- инструмент, который избавляет от рутины в работе с серверами. Вместо ручной настройки - чёткие инструкции в виде сценариев. Эти сценарии называются Ansible-playbook. Они задают последовательность шагов, которые система выполнит на удалённых машинах.</p>
4
<p><strong>Ansible</strong>- инструмент, который избавляет от рутины в работе с серверами. Вместо ручной настройки - чёткие инструкции в виде сценариев. Эти сценарии называются Ansible-playbook. Они задают последовательность шагов, которые система выполнит на удалённых машинах.</p>
5
<p><strong>Плейбук</strong>- это не магия. Это обычный YAML-файл, в котором по пунктам описано: что нужно установить, какие сервисы запустить, какие конфигурации применить. Такой подход позволяет автоматизировать всё - от простой установки nginx до настройки сложной кластерной среды.</p>
5
<p><strong>Плейбук</strong>- это не магия. Это обычный YAML-файл, в котором по пунктам описано: что нужно установить, какие сервисы запустить, какие конфигурации применить. Такой подход позволяет автоматизировать всё - от простой установки nginx до настройки сложной кластерной среды.</p>
6
<p>Пример из жизни. Сисадмин настраивает 20 серверов. Без Ansible он подключается по SSH к каждому, вводит команды, следит за логами. С Ansible - он запускает один плейбук, и всё делает автоматом. Ошибок меньше, времени уходит в разы меньше.</p>
6
<p>Пример из жизни. Сисадмин настраивает 20 серверов. Без Ansible он подключается по SSH к каждому, вводит команды, следит за логами. С Ansible - он запускает один плейбук, и всё делает автоматом. Ошибок меньше, времени уходит в разы меньше.</p>
7
<p><strong>Вот базовый пример простого плейбука:</strong></p>
7
<p><strong>Вот базовый пример простого плейбука:</strong></p>
8
<p>- name: Установка Nginx на веб-серверыhosts: webserversbecome: truetasks:- name: Установить Nginxapt:name: nginxstate: present</p>
8
<p>- name: Установка Nginx на веб-серверыhosts: webserversbecome: truetasks:- name: Установить Nginxapt:name: nginxstate: present</p>
9
<p><strong>Что здесь происходит:</strong></p>
9
<p><strong>Что здесь происходит:</strong></p>
10
<ul><li>hosts - на какие машины нацелен сценарий.</li>
10
<ul><li>hosts - на какие машины нацелен сценарий.</li>
11
<li>become: true - нужен доступ суперпользователя.</li>
11
<li>become: true - нужен доступ суперпользователя.</li>
12
<li>tasks - список задач: в этом случае - установка nginx.</li>
12
<li>tasks - список задач: в этом случае - установка nginx.</li>
13
</ul><p>Такой сценарий можно переиспользовать, изменять, хранить в Git и применять в любой момент. А главное - Ansible-playbook не делает лишнего. Он проверяет, нужно ли что-то менять. Если всё уже в нужном состоянии - просто пропускает задачу. Это называется<strong>идемпотентностью</strong>.</p>
13
</ul><p>Такой сценарий можно переиспользовать, изменять, хранить в Git и применять в любой момент. А главное - Ansible-playbook не делает лишнего. Он проверяет, нужно ли что-то менять. Если всё уже в нужном состоянии - просто пропускает задачу. Это называется<strong>идемпотентностью</strong>.</p>
14
<p><strong>В этом и сила Ansible:</strong>управляем серверами так же чётко, как пишем код. Именно это и называют подходом<strong></strong>"<strong>инфраструктура как код</strong>" - понятным, версионируемым, надёжным.</p>
14
<p><strong>В этом и сила Ansible:</strong>управляем серверами так же чётко, как пишем код. Именно это и называют подходом<strong></strong>"<strong>инфраструктура как код</strong>" - понятным, версионируемым, надёжным.</p>
15
<p><em>🔹 Узнайте, с чего начать работу с Ansible на курсе от Слёрм. Вы научитесь создавать, использовать плейбуки и роли, освоите деплой приложений, получите навыки автоматизации процессов управления IT-инфраструктурой. Начать обучение можно с<a>бесплатным доступом</a>.</em></p>
15
<p><em>🔹 Узнайте, с чего начать работу с Ansible на курсе от Слёрм. Вы научитесь создавать, использовать плейбуки и роли, освоите деплой приложений, получите навыки автоматизации процессов управления IT-инфраструктурой. Начать обучение можно с<a>бесплатным доступом</a>.</em></p>
16
<h2>Структура Ansible-playbook: логика и компоненты</h2>
16
<h2>Структура Ansible-playbook: логика и компоненты</h2>
17
<p>Что такое плейбук в Ansible и как им пользоваться? Плейбук - это не набор случайных команд. Это чётко структурированный документ, в котором всё построено по строгим правилам. Его читают сверху вниз, как обычный сценарий. Каждая часть плейбука отвечает за определённый этап настройки.</p>
17
<p>Что такое плейбук в Ansible и как им пользоваться? Плейбук - это не набор случайных команд. Это чётко структурированный документ, в котором всё построено по строгим правилам. Его читают сверху вниз, как обычный сценарий. Каждая часть плейбука отвечает за определённый этап настройки.</p>
18
<p><strong>Вот ключевые элементы Ansible-playbook:</strong></p>
18
<p><strong>Вот ключевые элементы Ansible-playbook:</strong></p>
19
<ul><li>name: человекочитаемое описание цели. Не обязательно, но помогает понять, что делает сценарий.</li>
19
<ul><li>name: человекочитаемое описание цели. Не обязательно, но помогает понять, что делает сценарий.</li>
20
<li>hosts: список целевых серверов или групп. Указывается имя из файла инвентаризации.</li>
20
<li>hosts: список целевых серверов или групп. Указывается имя из файла инвентаризации.</li>
21
<li>become: если нужно выполнять команды от имени root.</li>
21
<li>become: если нужно выполнять команды от имени root.</li>
22
<li>vars: переменные, используемые в задачах.</li>
22
<li>vars: переменные, используемые в задачах.</li>
23
<li>tasks: основная часть, где описываются действия.</li>
23
<li>tasks: основная часть, где описываются действия.</li>
24
<li>handlers: триггеры, которые запускаются только по уведомлению, например, для перезапуска сервисов.</li>
24
<li>handlers: триггеры, которые запускаются только по уведомлению, например, для перезапуска сервисов.</li>
25
<li>roles: подключение предварительно организованных наборов конфигураций.</li>
25
<li>roles: подключение предварительно организованных наборов конфигураций.</li>
26
</ul><p><strong>Пример шаблона плейбука:</strong>- name: Настройка веб-сервераhosts: webbecome: truevars:nginx_port: 8080tasks:- name: Установить Nginxapt:name: nginxstate: present- name: Убедиться, что Nginx запущенservice:name: nginxstate: startedhandlers:- name: Перезапустить Nginxservice:name: nginxstate: restarted</p>
26
</ul><p><strong>Пример шаблона плейбука:</strong>- name: Настройка веб-сервераhosts: webbecome: truevars:nginx_port: 8080tasks:- name: Установить Nginxapt:name: nginxstate: present- name: Убедиться, что Nginx запущенservice:name: nginxstate: startedhandlers:- name: Перезапустить Nginxservice:name: nginxstate: restarted</p>
27
<p><strong>🧩 Что важно:</strong></p>
27
<p><strong>🧩 Что важно:</strong></p>
28
<ul><li>Каждое действие - это<strong>task</strong>. Он вызывает модуль, например apt, service или copy.</li>
28
<ul><li>Каждое действие - это<strong>task</strong>. Он вызывает модуль, например apt, service или copy.</li>
29
<li>Если в задаче указано notify, и задача изменила состояние системы - сработает соответствующий<strong>handler</strong>.</li>
29
<li>Если в задаче указано notify, и задача изменила состояние системы - сработает соответствующий<strong>handler</strong>.</li>
30
<li>Использование переменных ({{ nginx_port }}) делает плейбук гибким и удобным для разных окружений.</li>
30
<li>Использование переменных ({{ nginx_port }}) делает плейбук гибким и удобным для разных окружений.</li>
31
</ul><p>Всё это превращает YAML-файл в мощный инструмент автоматизации, читаемый как текст и исполняемый как код. Такой сценарий легко адаптировать, расширять и применять на новых машинах, не меняя суть конфигурации.</p>
31
</ul><p>Всё это превращает YAML-файл в мощный инструмент автоматизации, читаемый как текст и исполняемый как код. Такой сценарий легко адаптировать, расширять и применять на новых машинах, не меняя суть конфигурации.</p>
32
<p>Приглашаем в наше телеграм-сообщество, где делимся лучшими статьями с Хабра по рекомендациям и практикам работы с Ansible.</p>
32
<p>Приглашаем в наше телеграм-сообщество, где делимся лучшими статьями с Хабра по рекомендациям и практикам работы с Ansible.</p>
33
<p><strong>Все полезные материалы по Ansible в одном месте</strong></p>
33
<p><strong>Все полезные материалы по Ansible в одном месте</strong></p>
34
<p>Дальше - разберём ключевые строительные блоки:<strong>play</strong>,<strong>task</strong>и<strong>модули</strong>, на которых держится вся магия.</p>
34
<p>Дальше - разберём ключевые строительные блоки:<strong>play</strong>,<strong>task</strong>и<strong>модули</strong>, на которых держится вся магия.</p>
35
<h2>Что такое play, task и модули в Ansible?</h2>
35
<h2>Что такое play, task и модули в Ansible?</h2>
36
<p>Ансибл плейбук состоит из одного или нескольких<strong>play</strong>- логических блоков, которые описывают, что делать с группой серверов. А каждый play включает<strong>tasks</strong>- пошаговые действия, которые выполняет Ansible.</p>
36
<p>Ансибл плейбук состоит из одного или нескольких<strong>play</strong>- логических блоков, которые описывают, что делать с группой серверов. А каждый play включает<strong>tasks</strong>- пошаговые действия, которые выполняет Ansible.</p>
37
<p>🔸<strong>Play</strong>- это как глава сценария. Она задаёт:</p>
37
<p>🔸<strong>Play</strong>- это как глава сценария. Она задаёт:</p>
38
<ul><li>на какие машины отправлять команды (hosts);</li>
38
<ul><li>на какие машины отправлять команды (hosts);</li>
39
<li>нужно ли использовать sudo (become);</li>
39
<li>нужно ли использовать sudo (become);</li>
40
<li>какие переменные применить (vars);</li>
40
<li>какие переменные применить (vars);</li>
41
<li>какие роли или задачи подключить.</li>
41
<li>какие роли или задачи подключить.</li>
42
</ul><p>🔸<strong>Task</strong>- это инструкция: "установить пакет", "запустить сервис", "скопировать файл". Ansible выполняет их по порядку.</p>
42
</ul><p>🔸<strong>Task</strong>- это инструкция: "установить пакет", "запустить сервис", "скопировать файл". Ansible выполняет их по порядку.</p>
43
<p>Каждый task вызывает<strong>модуль</strong>- встроенный компонент Ansible, который делает конкретную работу.</p>
43
<p>Каждый task вызывает<strong>модуль</strong>- встроенный компонент Ansible, который делает конкретную работу.</p>
44
<p><strong>Вот пример задачи с модулем</strong><strong>copy</strong><strong>:</strong></p>
44
<p><strong>Вот пример задачи с модулем</strong><strong>copy</strong><strong>:</strong></p>
45
<p>- name: Скопировать конфиг Nginxcopy:src: ./nginx.confdest: /etc/nginx/nginx.confnotify: Перезапустить Nginx</p>
45
<p>- name: Скопировать конфиг Nginxcopy:src: ./nginx.confdest: /etc/nginx/nginx.confnotify: Перезапустить Nginx</p>
46
<p>Если nginx.conf на сервере изменится, будет отправлено уведомление на handler с именем Перезапустить Nginx.</p>
46
<p>Если nginx.conf на сервере изменится, будет отправлено уведомление на handler с именем Перезапустить Nginx.</p>
47
<p><strong>📦 Часто используемые модули:</strong></p>
47
<p><strong>📦 Часто используемые модули:</strong></p>
48
<ul><li>apt, yum - установка пакетов.</li>
48
<ul><li>apt, yum - установка пакетов.</li>
49
<li>copy, template - работа с файлами.</li>
49
<li>copy, template - работа с файлами.</li>
50
<li>service - управление службами.</li>
50
<li>service - управление службами.</li>
51
<li>command, shell - запуск произвольных команд.</li>
51
<li>command, shell - запуск произвольных команд.</li>
52
<li>file - изменение прав, владельцев и атрибутов файлов.</li>
52
<li>file - изменение прав, владельцев и атрибутов файлов.</li>
53
</ul><p>🔁 Все задачи работают<strong>идемпотентно</strong>. Это значит: если сервер уже в нужном состоянии, Ansible не будет ничего менять. Это снижает риски и делает сценарии безопасными для повторного запуска.</p>
53
</ul><p>🔁 Все задачи работают<strong>идемпотентно</strong>. Это значит: если сервер уже в нужном состоянии, Ansible не будет ничего менять. Это снижает риски и делает сценарии безопасными для повторного запуска.</p>
54
<p>Плейбуки заменяют ручную настройку и shell-скрипты. Они точнее, прозрачнее и проще в сопровождении. А если playbook начинает разрастаться - его разбивают на<strong>роли</strong>.</p>
54
<p>Плейбуки заменяют ручную настройку и shell-скрипты. Они точнее, прозрачнее и проще в сопровождении. А если playbook начинает разрастаться - его разбивают на<strong>роли</strong>.</p>
55
<p>Дальше - расскажем, как устроены роли и зачем они нужны.</p>
55
<p>Дальше - расскажем, как устроены роли и зачем они нужны.</p>
56
<h2>Роли в Ansible: как структурировать плейбуки</h2>
56
<h2>Роли в Ansible: как структурировать плейбуки</h2>
57
<p>Когда сценариев становится много, обычный playbook превращается в громоздкий файл. Чтобы навести порядок и переиспользовать код, Ansible предлагает концепцию<strong>ролей</strong>(roles).</p>
57
<p>Когда сценариев становится много, обычный playbook превращается в громоздкий файл. Чтобы навести порядок и переиспользовать код, Ansible предлагает концепцию<strong>ролей</strong>(roles).</p>
58
<p><strong>Роль - это шаблон, в который можно завернуть:</strong></p>
58
<p><strong>Роль - это шаблон, в который можно завернуть:</strong></p>
59
<ul><li>задачи (tasks),</li>
59
<ul><li>задачи (tasks),</li>
60
<li>обработчики (handlers),</li>
60
<li>обработчики (handlers),</li>
61
<li>переменные (vars),</li>
61
<li>переменные (vars),</li>
62
<li>шаблоны (templates),</li>
62
<li>шаблоны (templates),</li>
63
<li>файлы (files).</li>
63
<li>файлы (files).</li>
64
</ul><p>Каждая роль живёт в отдельной папке. В итоге структура становится понятной и логичной:</p>
64
</ul><p>Каждая роль живёт в отдельной папке. В итоге структура становится понятной и логичной:</p>
65
<p>roles/└── webserver/├── tasks/│ └── main.yml├── handlers/│ └── main.yml├── templates/│ └── nginx.conf.j2├── files/│ └── index.html└── vars/└── main.yml</p>
65
<p>roles/└── webserver/├── tasks/│ └── main.yml├── handlers/│ └── main.yml├── templates/│ └── nginx.conf.j2├── files/│ └── index.html└── vars/└── main.yml</p>
66
<p>Это удобно, когда:</p>
66
<p>Это удобно, когда:</p>
67
<ul><li>проект работает с разными окружениями (dev, staging, prod);</li>
67
<ul><li>проект работает с разными окружениями (dev, staging, prod);</li>
68
<li>одни и те же настройки нужно применять на многих машинах;</li>
68
<li>одни и те же настройки нужно применять на многих машинах;</li>
69
<li>команда работает над сценарием совместно.</li>
69
<li>команда работает над сценарием совместно.</li>
70
</ul><p><strong>Пример подключения роли в плейбук:</strong></p>
70
</ul><p><strong>Пример подключения роли в плейбук:</strong></p>
71
<p>- name: Настройка веб-сервера через рольhosts: webbecome: trueroles:- webserver</p>
71
<p>- name: Настройка веб-сервера через рольhosts: webbecome: trueroles:- webserver</p>
72
<p><strong>Зачем всё это? Потому что роли:</strong></p>
72
<p><strong>Зачем всё это? Потому что роли:</strong></p>
73
<ul><li>делают код переиспользуемым;</li>
73
<ul><li>делают код переиспользуемым;</li>
74
<li>упрощают тестирование;</li>
74
<li>упрощают тестирование;</li>
75
<li>повышают читаемость;</li>
75
<li>повышают читаемость;</li>
76
<li>ускоряют работу с CI/CD.</li>
76
<li>ускоряют работу с CI/CD.</li>
77
</ul><p>Когда структура разложена по ролям - вы можете изменить одну часть, не трогая остальное. Это как модули в программировании: компактно, изолированно и понятно.</p>
77
</ul><p>Когда структура разложена по ролям - вы можете изменить одну часть, не трогая остальное. Это как модули в программировании: компактно, изолированно и понятно.</p>
78
<p>Далее - как запускать плейбуки на практике: команды, параметры, проверка.</p>
78
<p>Далее - как запускать плейбуки на практике: команды, параметры, проверка.</p>
79
<p>💡<strong><em>Начните автоматизировать управление вашей IT-инфраструктурой с курсом</em></strong>"<strong><em>Ansible: Infrastructure as Code</em></strong>"<strong><em>!</em></strong><em>Узнайте, как создавать и использовать плейбуки и роли в Ansible. Получите<a>бесплатный доступ</a>к учебным материалам и сделайте шаг к повышению своей квалификации.</em></p>
79
<p>💡<strong><em>Начните автоматизировать управление вашей IT-инфраструктурой с курсом</em></strong>"<strong><em>Ansible: Infrastructure as Code</em></strong>"<strong><em>!</em></strong><em>Узнайте, как создавать и использовать плейбуки и роли в Ansible. Получите<a>бесплатный доступ</a>к учебным материалам и сделайте шаг к повышению своей квалификации.</em></p>
80
<h2>Запуск Ansible playbook: команды и проверка</h2>
80
<h2>Запуск Ansible playbook: команды и проверка</h2>
81
<p>Когда плейбук готов, его нужно правильно запустить. Это делается с помощью команды ansible-playbook. Именно она выполняет сценарий на указанных серверах.</p>
81
<p>Когда плейбук готов, его нужно правильно запустить. Это делается с помощью команды ansible-playbook. Именно она выполняет сценарий на указанных серверах.</p>
82
<p>🔧 Базовая команда:</p>
82
<p>🔧 Базовая команда:</p>
83
<p>ansible-playbook playbook.yml</p>
83
<p>ansible-playbook playbook.yml</p>
84
<p>Если у вас есть свой inventory (список хостов), укажите его:</p>
84
<p>Если у вас есть свой inventory (список хостов), укажите его:</p>
85
<p>ansible-playbook -i inventory.ini playbook.yml</p>
85
<p>ansible-playbook -i inventory.ini playbook.yml</p>
86
<p>📌 Пояснение параметров:</p>
86
<p>📌 Пояснение параметров:</p>
87
<ul><li>-i - путь до файла с хостами.</li>
87
<ul><li>-i - путь до файла с хостами.</li>
88
<li>-u - имя пользователя, от которого выполнять задачи.</li>
88
<li>-u - имя пользователя, от которого выполнять задачи.</li>
89
<li>-k - запрос пароля SSH (если вход по ключу не настроен).</li>
89
<li>-k - запрос пароля SSH (если вход по ключу не настроен).</li>
90
<li>-b - активирует become, то есть выполнение от имени root.</li>
90
<li>-b - активирует become, то есть выполнение от имени root.</li>
91
</ul><p>Пример запуска с конкретным пользователем:</p>
91
</ul><p>Пример запуска с конкретным пользователем:</p>
92
<p>ansible-playbook -i inventory.ini -u deploy -k -b playbook.yml</p>
92
<p>ansible-playbook -i inventory.ini -u deploy -k -b playbook.yml</p>
93
<p>🎯 Чтобы ограничить выполнение только для части серверов:</p>
93
<p>🎯 Чтобы ограничить выполнение только для части серверов:</p>
94
<p>ansible-playbook -l webservers playbook.yml</p>
94
<p>ansible-playbook -l webservers playbook.yml</p>
95
<p>📍 Перед запуском полезно проверить плейбук на синтаксические ошибки:</p>
95
<p>📍 Перед запуском полезно проверить плейбук на синтаксические ошибки:</p>
96
<p>ansible-playbook --syntax-check playbook.yml</p>
96
<p>ansible-playbook --syntax-check playbook.yml</p>
97
<p>Эта команда ничего не выполняет - только проверяет структуру YAML.🔍 А чтобы безопасно протестировать плейбук - запустите его в<strong>режиме dry-run</strong>:</p>
97
<p>Эта команда ничего не выполняет - только проверяет структуру YAML.🔍 А чтобы безопасно протестировать плейбук - запустите его в<strong>режиме dry-run</strong>:</p>
98
<p>ansible-playbook playbook.yml --check</p>
98
<p>ansible-playbook playbook.yml --check</p>
99
<p>В этом случае Ansible покажет,<strong>что бы он сделал</strong>, но<strong>не будет ничего менять</strong>. Особенно полезно для продакшн-серверов.Можно добавить флаг --diff, чтобы увидеть различия между текущим и ожидаемым состоянием:</p>
99
<p>В этом случае Ansible покажет,<strong>что бы он сделал</strong>, но<strong>не будет ничего менять</strong>. Особенно полезно для продакшн-серверов.Можно добавить флаг --diff, чтобы увидеть различия между текущим и ожидаемым состоянием:</p>
100
<p>ansible-playbook playbook.yml --check --diff</p>
100
<p>ansible-playbook playbook.yml --check --diff</p>
101
<p>Такой подход позволяет заранее понять последствия изменений. Это ключевой инструмент в DevOps-практике: никакой импровизации, только предсказуемые действия.</p>
101
<p>Такой подход позволяет заранее понять последствия изменений. Это ключевой инструмент в DevOps-практике: никакой импровизации, только предсказуемые действия.</p>
102
<p>📌<strong><em>На<a>курсе от Слерм</a>вы получите ключевые знания и навыки по Ansible,</em></strong><em>научитесь создавать, использовать плейбуки и роли в Ansible, освоите деплой приложений, освоите навыки автоматизации процессов управления IT-инфраструктурой.</em></p>
102
<p>📌<strong><em>На<a>курсе от Слерм</a>вы получите ключевые знания и навыки по Ansible,</em></strong><em>научитесь создавать, использовать плейбуки и роли в Ansible, освоите деплой приложений, освоите навыки автоматизации процессов управления IT-инфраструктурой.</em></p>
103
<p><strong>Следующая тема - переменные и шаблоны</strong>: как сделать плейбук гибким и удобным для масштабирования.</p>
103
<p><strong>Следующая тема - переменные и шаблоны</strong>: как сделать плейбук гибким и удобным для масштабирования.</p>
104
<h2>Переменные и шаблоны в Ansible playbook</h2>
104
<h2>Переменные и шаблоны в Ansible playbook</h2>
105
<p>Одна из сильных сторон Ansible - гибкость. Вместо того чтобы жёстко прописывать значения в задачах, вы можете использовать<strong>переменные</strong>. Это делает плейбуки универсальными, адаптируемыми под разные окружения и задачи.</p>
105
<p>Одна из сильных сторон Ansible - гибкость. Вместо того чтобы жёстко прописывать значения в задачах, вы можете использовать<strong>переменные</strong>. Это делает плейбуки универсальными, адаптируемыми под разные окружения и задачи.</p>
106
<p><strong>🔹 Где задаются переменные?</strong></p>
106
<p><strong>🔹 Где задаются переменные?</strong></p>
107
<ol><li>Прямо в плейбуке:</li>
107
<ol><li>Прямо в плейбуке:</li>
108
<li>vars:</li>
108
<li>vars:</li>
109
<li>app_port: 3000</li>
109
<li>app_port: 3000</li>
110
<li>Через командную строку:</li>
110
<li>Через командную строку:</li>
111
<li>ansible-playbook site.yml -e "app_port=3000"</li>
111
<li>ansible-playbook site.yml -e "app_port=3000"</li>
112
<li>В inventory-файле:</li>
112
<li>В inventory-файле:</li>
113
<li>[web]</li>
113
<li>[web]</li>
114
<li>server1 ansible_host=192.168.1.10 app_port=3000</li>
114
<li>server1 ansible_host=192.168.1.10 app_port=3000</li>
115
<li>В отдельном YAML-файле и подключаются через vars_files:</li>
115
<li>В отдельном YAML-файле и подключаются через vars_files:</li>
116
<li>vars_files:</li>
116
<li>vars_files:</li>
117
<li>- vars/main.yml</li>
117
<li>- vars/main.yml</li>
118
</ol><p>📌 В Ansible есть<strong>иерархия приоритетов</strong>. Значения из -e в командной строке перекрывают всё остальное.</p>
118
</ol><p>📌 В Ansible есть<strong>иерархия приоритетов</strong>. Значения из -e в командной строке перекрывают всё остальное.</p>
119
<p><strong>🔹 Как использовать переменные в задачах?</strong></p>
119
<p><strong>🔹 Как использовать переменные в задачах?</strong></p>
120
<p>Через двойные фигурные скобки:</p>
120
<p>Через двойные фигурные скобки:</p>
121
<p>- name: Открыть портufw:rule: allowport: "{{ app_port }}"</p>
121
<p>- name: Открыть портufw:rule: allowport: "{{ app_port }}"</p>
122
<p><strong>🔹 Шаблоны Jinja2</strong>Можно создавать конфиги с переменными и использовать шаблоны. Например:</p>
122
<p><strong>🔹 Шаблоны Jinja2</strong>Можно создавать конфиги с переменными и использовать шаблоны. Например:</p>
123
<p><strong>Шаблон конфигурации (nginx.conf.j2):</strong></p>
123
<p><strong>Шаблон конфигурации (nginx.conf.j2):</strong></p>
124
<p>server { listen {{ nginx_port }}; server_name localhost;}</p>
124
<p>server { listen {{ nginx_port }}; server_name localhost;}</p>
125
<p>Подключается в задаче так:</p>
125
<p>Подключается в задаче так:</p>
126
<p>- name: Сгенерировать конфигtemplate:src: nginx.conf.j2dest: /etc/nginx/nginx.conf</p>
126
<p>- name: Сгенерировать конфигtemplate:src: nginx.conf.j2dest: /etc/nginx/nginx.conf</p>
127
<p>Ansible сам подставит значения переменных, и сгенерирует готовый файл.</p>
127
<p>Ansible сам подставит значения переменных, и сгенерирует готовый файл.</p>
128
<p><strong>Получите ключевые знания и навыки по Ansible!</strong>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</p>
128
<p><strong>Получите ключевые знания и навыки по Ansible!</strong>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</p>
129
<p><strong>🔹 Условия и логика</strong></p>
129
<p><strong>🔹 Условия и логика</strong></p>
130
<p>Можно добавить условия:- name: Копировать файл, если приложение активноcopy:src: conf.j2dest: /etc/app/config.yamlwhen: app_enabled</p>
130
<p>Можно добавить условия:- name: Копировать файл, если приложение активноcopy:src: conf.j2dest: /etc/app/config.yamlwhen: app_enabled</p>
131
<p>Это позволяет делать сценарий "умным": выполнять действия только при определённых условиях.</p>
131
<p>Это позволяет делать сценарий "умным": выполнять действия только при определённых условиях.</p>
132
<p>📎 Всё это превращает Ansible playbook в мощный инструмент автоматизации, который работает с десятками серверов так же легко, как с одним.</p>
132
<p>📎 Всё это превращает Ansible playbook в мощный инструмент автоматизации, который работает с десятками серверов так же легко, как с одним.</p>
133
<p>Далее - заключение: коротко о главном.</p>
133
<p>Далее - заключение: коротко о главном.</p>
134
<h2>Заключение: зачем нужен Ansible-playbook</h2>
134
<h2>Заключение: зачем нужен Ansible-playbook</h2>
135
<p>Ansible - это не просто набор команд для автоматизации. Это язык управления инфраструктурой, который легко читается, масштабируется и позволяет точно контролировать каждое изменение.</p>
135
<p>Ansible - это не просто набор команд для автоматизации. Это язык управления инфраструктурой, который легко читается, масштабируется и позволяет точно контролировать каждое изменение.</p>
136
<p><strong>Сценарии в формате Ansible-playbook:</strong></p>
136
<p><strong>Сценарии в формате Ansible-playbook:</strong></p>
137
<ul><li>сокращают время настройки;</li>
137
<ul><li>сокращают время настройки;</li>
138
<li>исключают человеческий фактор;</li>
138
<li>исключают человеческий фактор;</li>
139
<li>упрощают командную работу;</li>
139
<li>упрощают командную работу;</li>
140
<li>легко интегрируются в CI/CD;</li>
140
<li>легко интегрируются в CI/CD;</li>
141
<li>обеспечивают повторяемость действий.</li>
141
<li>обеспечивают повторяемость действий.</li>
142
</ul><p><strong>📌 Вы можете:</strong></p>
142
</ul><p><strong>📌 Вы можете:</strong></p>
143
<ul><li>автоматизировать развёртывание приложений;</li>
143
<ul><li>автоматизировать развёртывание приложений;</li>
144
<li>управлять обновлениями и сервисами;</li>
144
<li>управлять обновлениями и сервисами;</li>
145
<li>конфигурировать целые кластеры;</li>
145
<li>конфигурировать целые кластеры;</li>
146
<li>писать сценарии, которые можно использовать годами.</li>
146
<li>писать сценарии, которые можно использовать годами.</li>
147
</ul><p>Главное - всё прозрачно. YAML читается проще скриптов, а структура playbook'а напоминает хорошо написанный техдок.</p>
147
</ul><p>Главное - всё прозрачно. YAML читается проще скриптов, а структура playbook'а напоминает хорошо написанный техдок.</p>
148
<p>🧠 Если представить инфраструктуру как программный продукт, то<strong>Ansible - это его компилятор. А playbook - это исходный код, который описывает, как всё должно работать</strong>. И вы сами выбираете, где и когда его применить.</p>
148
<p>🧠 Если представить инфраструктуру как программный продукт, то<strong>Ansible - это его компилятор. А playbook - это исходный код, который описывает, как всё должно работать</strong>. И вы сами выбираете, где и когда его применить.</p>
149
<p>Ansible подойдёт как DevOps-инженерам, так и разработчикам, которые хотят ускорить развёртывание и сделать свой стек предсказуемым.</p>
149
<p>Ansible подойдёт как DevOps-инженерам, так и разработчикам, которые хотят ускорить развёртывание и сделать свой стек предсказуемым.</p>
150
<p>🎯 Освоив Ansible-playbook, вы сможете:</p>
150
<p>🎯 Освоив Ansible-playbook, вы сможете:</p>
151
<ul><li>быстро настраивать любые окружения;</li>
151
<ul><li>быстро настраивать любые окружения;</li>
152
<li>не бояться масштабирования;</li>
152
<li>не бояться масштабирования;</li>
153
<li>внедрить практики GitOps и DevOps в ежедневную работу.</li>
153
<li>внедрить практики GitOps и DevOps в ежедневную работу.</li>
154
</ul><p>Теперь, когда вы знаете, как устроен playbook и как с ним работать - вы готовы к следующему шагу: создать свой первый автоматизированный сценарий и сделать инфраструктуру подконтрольной.</p>
154
</ul><p>Теперь, когда вы знаете, как устроен playbook и как с ним работать - вы готовы к следующему шагу: создать свой первый автоматизированный сценарий и сделать инфраструктуру подконтрольной.</p>
155
<p><em>🚀</em><strong><em>Узнайте, как эффективно управлять IT-инфраструктурой с помощью Ansible!</em></strong><em>Запишитесь на курс<a>"Ansible: Infrastructure as Code"</a>и откройте для себя автоматизацию процессов.</em></p>
155
<p><em>🚀</em><strong><em>Узнайте, как эффективно управлять IT-инфраструктурой с помощью Ansible!</em></strong><em>Запишитесь на курс<a>"Ansible: Infrastructure as Code"</a>и откройте для себя автоматизацию процессов.</em></p>
156
<h3><strong>Статью подготовили</strong></h3>
156
<h3><strong>Статью подготовили</strong></h3>
157
<p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
157
<p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
158
<h3><strong>Читайте также:</strong></h3>
158
<h3><strong>Читайте также:</strong></h3>
159
159