1 added
1 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> • 10 мая 2025 • 10 мин чтения</p>
3
</ul><p>Ansible<strong></strong> • 10 мая 2025 • 10 мин чтения</p>
4
<p>Terraform и Ansible - два мощных инструмента в арсенале DevOps-инженера. Они часто соседствуют в одном проекте, но выполняют разные задачи. Terraform отвечает за создание и изменение инфраструктуры - от облачных машин до сетевых настроек. Ansible - за конфигурацию, установку ПО и оркестрацию. Многие путают эти инструменты, считая их взаимозаменяемыми, но это не так.</p>
4
<p>Terraform и Ansible - два мощных инструмента в арсенале DevOps-инженера. Они часто соседствуют в одном проекте, но выполняют разные задачи. Terraform отвечает за создание и изменение инфраструктуры - от облачных машин до сетевых настроек. Ansible - за конфигурацию, установку ПО и оркестрацию. Многие путают эти инструменты, считая их взаимозаменяемыми, но это не так.</p>
5
<p>В статье разберёмся, в чём разница между Terraform и Ansible, как они могут дополнять друг друга и как их совместное использование ускоряет и упрощает управление инфраструктурой. Кстати научиться создавать, использовать плейбуки и роли, освоить деплой приложений, получить навыки автоматизации процессов управления IT-инфраструктурой можно на курсе<a>"Ansible: Infrastructure as Code"</a>.</p>
5
<p>В статье разберёмся, в чём разница между Terraform и Ansible, как они могут дополнять друг друга и как их совместное использование ускоряет и упрощает управление инфраструктурой. Кстати научиться создавать, использовать плейбуки и роли, освоить деплой приложений, получить навыки автоматизации процессов управления IT-инфраструктурой можно на курсе<a>"Ansible: Infrastructure as Code"</a>.</p>
6
<h2>Terraform vs Ansible: в чем разница</h2>
6
<h2>Terraform vs Ansible: в чем разница</h2>
7
<p>Terraform и Ansible - это инструменты автоматизации, но цели у них разные. Чтобы понять разницу между ними, представьте, что вы строите дом. Terraform управляет инфраструктурой, - это архитектор и строитель, который закладывает фундамент, возводит стены и проводит коммуникации. Ansible отвечает за конфигурации - это тот, кто приходит после и расставляет мебель, подключает технику и настраивает бытовую технику.</p>
7
<p>Terraform и Ansible - это инструменты автоматизации, но цели у них разные. Чтобы понять разницу между ними, представьте, что вы строите дом. Terraform управляет инфраструктурой, - это архитектор и строитель, который закладывает фундамент, возводит стены и проводит коммуникации. Ansible отвечает за конфигурации - это тот, кто приходит после и расставляет мебель, подключает технику и настраивает бытовую технику.</p>
8
<h3><strong>Terraform - декларативная модель и управление инфраструктурой</strong></h3>
8
<h3><strong>Terraform - декларативная модель и управление инфраструктурой</strong></h3>
9
-
<p>Terraform работает по декларативному принципу: вы описываете, что должно быть, а не как это сделать. Сценарии здесь называются манифестами, написанными на HashiCorp Configuration Language (HCL). Основная задача - создать и поддерживать инфраструктуру в нужном состоянии. Пример: вы указываете, что нужен сервер в AWS с определёнными параметрами - Terraform сам создаёт его с помощью провайдера (например, AWS, Azure, GCP и др.).</p>
9
+
<p>Terraform работает по декларативному принципу: в�� описываете, что должно быть, а не как это сделать. Сценарии здесь называются манифестами, написанными на HashiCorp Configuration Language (HCL). Основная задача - создать и поддерживать инфраструктуру в нужном состоянии. Пример: вы указываете, что нужен сервер в AWS с определёнными параметрами - Terraform сам создаёт его с помощью провайдера (например, AWS, Azure, GCP и др.).</p>
10
<p><strong>Ключевая особенность</strong><strong>- идемпотентность:</strong>повторный запуск terraform apply не приводит к повторному созданию ресурсов, если они уже соответствуют описанию. Это повышает надёжность и предсказуемость процесса.</p>
10
<p><strong>Ключевая особенность</strong><strong>- идемпотентность:</strong>повторный запуск terraform apply не приводит к повторному созданию ресурсов, если они уже соответствуют описанию. Это повышает надёжность и предсказуемость процесса.</p>
11
<p><strong>На курсе от Слёрма<a>"</a><a>Terraform База</a><a>"</a>вы научитесь пользоваться Terraform и поддерживать код.</strong></p>
11
<p><strong>На курсе от Слёрма<a>"</a><a>Terraform База</a><a>"</a>вы научитесь пользоваться Terraform и поддерживать код.</strong></p>
12
<h3><strong>Ansible - императивная модель и управление конфигурацией</strong></h3>
12
<h3><strong>Ansible - императивная модель и управление конфигурацией</strong></h3>
13
<p>Ansible - это инструмент управления конфигурациями. Он использует императивный подход: вы указываете пошагово, что нужно сделать. Для этого применяются playbooks, которые содержат инструкции: установить пакеты, запустить сервис, изменить конфигурационный файл. Ansible подключается к целевым серверам по SSH, использует YAML-файлы и не требует установки агентов.</p>
13
<p>Ansible - это инструмент управления конфигурациями. Он использует императивный подход: вы указываете пошагово, что нужно сделать. Для этого применяются playbooks, которые содержат инструкции: установить пакеты, запустить сервис, изменить конфигурационный файл. Ansible подключается к целевым серверам по SSH, использует YAML-файлы и не требует установки агентов.</p>
14
<p>В отличие от Terraform, Ansible отлично работает с уже существующими машинами. Его сценарии гибче, но могут быть менее предсказуемыми, особенно если не настроены корректно проверки текущего состояния.</p>
14
<p>В отличие от Terraform, Ansible отлично работает с уже существующими машинами. Его сценарии гибче, но могут быть менее предсказуемыми, особенно если не настроены корректно проверки текущего состояния.</p>
15
<h3>Сравнение подходов</h3>
15
<h3>Сравнение подходов</h3>
16
<p><strong>Характеристика</strong></p>
16
<p><strong>Характеристика</strong></p>
17
<p><strong>Terraform</strong></p>
17
<p><strong>Terraform</strong></p>
18
<p><strong>Ansible</strong></p>
18
<p><strong>Ansible</strong></p>
19
<p>Подход</p>
19
<p>Подход</p>
20
<p>Декларативный</p>
20
<p>Декларативный</p>
21
<p>Императивный</p>
21
<p>Императивный</p>
22
<p>Язык</p>
22
<p>Язык</p>
23
<p>HCL</p>
23
<p>HCL</p>
24
<p>YAML</p>
24
<p>YAML</p>
25
<p>Область применения</p>
25
<p>Область применения</p>
26
<p>Инфраструктура (IaaS, PaaS)</p>
26
<p>Инфраструктура (IaaS, PaaS)</p>
27
<p>Конфигурация ПО, оркестрация</p>
27
<p>Конфигурация ПО, оркестрация</p>
28
<p>Идемпотентность</p>
28
<p>Идемпотентность</p>
29
<p>Встроена</p>
29
<p>Встроена</p>
30
<p>Требует ручной настройки</p>
30
<p>Требует ручной настройки</p>
31
<p>Подключение к хостам</p>
31
<p>Подключение к хостам</p>
32
<p>Нет (работает с API облаков)</p>
32
<p>Нет (работает с API облаков)</p>
33
<p>Через SSH</p>
33
<p>Через SSH</p>
34
<p>Состояние системы</p>
34
<p>Состояние системы</p>
35
<p>Отслеживает (terraform state)</p>
35
<p>Отслеживает (terraform state)</p>
36
<p>Не сохраняет (если не настроено)</p>
36
<p>Не сохраняет (если не настроено)</p>
37
<p>Провайдеры (terraform ansible provider)</p>
37
<p>Провайдеры (terraform ansible provider)</p>
38
<p>Поддерживаются из коробки</p>
38
<p>Поддерживаются из коробки</p>
39
<p>Требует плагинов и скриптов</p>
39
<p>Требует плагинов и скриптов</p>
40
<h3>Зачем понимать различие?</h3>
40
<h3>Зачем понимать различие?</h3>
41
<p>Если вы планируете автоматизировать развертывание серверов в облаке, Terraform будет первым инструментом в цепочке. А если вам нужно накатить настройки и приложения - Ansible. Инструменты решают разные задачи, и понимание их различий позволяет выстраивать более стабильные и предсказуемые CI/CD-пайплайны.</p>
41
<p>Если вы планируете автоматизировать развертывание серверов в облаке, Terraform будет первым инструментом в цепочке. А если вам нужно накатить настройки и приложения - Ansible. Инструменты решают разные задачи, и понимание их различий позволяет выстраивать более стабильные и предсказуемые CI/CD-пайплайны.</p>
42
<p>Они не конкурируют, а дополняют друг друга. Вместо спора "Terraform vs Ansible", лучше спросить: как их грамотно объединить, чтобы ускорить рабочие процессы?</p>
42
<p>Они не конкурируют, а дополняют друг друга. Вместо спора "Terraform vs Ansible", лучше спросить: как их грамотно объединить, чтобы ускорить рабочие процессы?</p>
43
<p>Приглашаем в наше телеграм-сообщество, где делимся лучшими статьями с Хабра по рекомендациям и практикам работы с Ansible.</p>
43
<p>Приглашаем в наше телеграм-сообщество, где делимся лучшими статьями с Хабра по рекомендациям и практикам работы с Ansible.</p>
44
<p><strong>Все полезные материалы по Ansible в одном месте</strong></p>
44
<p><strong>Все полезные материалы по Ansible в одном месте</strong></p>
45
<h2>Интеграция Terraform и Ansible</h2>
45
<h2>Интеграция Terraform и Ansible</h2>
46
<p>Чтобы получить максимум от автоматизации, эти инструменты стоит использовать совместно. Один создаёт ресурсы, второй настраивает их. Вместе они позволяют выстроить полный CI/CD-конвейер - от развёртывания до конфигурации. Рассмотрим, как связать их на практике.</p>
46
<p>Чтобы получить максимум от автоматизации, эти инструменты стоит использовать совместно. Один создаёт ресурсы, второй настраивает их. Вместе они позволяют выстроить полный CI/CD-конвейер - от развёртывания до конфигурации. Рассмотрим, как связать их на практике.</p>
47
<h3>Сценарий взаимодействия</h3>
47
<h3>Сценарий взаимодействия</h3>
48
<p>Один из распространённых кейсов - Terraform разворачивает виртуальные машины, а Ansible подключается к ним по SSH для настройки окружения. Для этого Terraform должен передать Ansible информацию о созданных хостах: IP-адреса, ключи доступа и т. д.В Terraform можно использовать провиженеры. Один из них - local-exec, который запускает локальные команды после применения изменений:</p>
48
<p>Один из распространённых кейсов - Terraform разворачивает виртуальные машины, а Ansible подключается к ним по SSH для настройки окружения. Для этого Terraform должен передать Ansible информацию о созданных хостах: IP-адреса, ключи доступа и т. д.В Terraform можно использовать провиженеры. Один из них - local-exec, который запускает локальные команды после применения изменений:</p>
49
<p>provisioner "local-exec" { command = "ansible-playbook -i ${self.public_ip}, playbook.yml --private-key ~/.ssh/id_rsa"}</p>
49
<p>provisioner "local-exec" { command = "ansible-playbook -i ${self.public_ip}, playbook.yml --private-key ~/.ssh/id_rsa"}</p>
50
<p>Здесь ${self.public_ip} - это IP-адрес созданной машины. После завершения terraform apply запускается ansible-playbook, который подключается к новому серверу и разворачивает нужные компоненты.</p>
50
<p>Здесь ${self.public_ip} - это IP-адрес созданной машины. После завершения terraform apply запускается ansible-playbook, который подключается к новому серверу и разворачивает нужные компоненты.</p>
51
<h3>Пример рабочей схемы</h3>
51
<h3>Пример рабочей схемы</h3>
52
<ol><li><strong>Terraform</strong>создаёт виртуальные машины в облаке (например, AWS, Yandex Cloud или DigitalOcean).</li>
52
<ol><li><strong>Terraform</strong>создаёт виртуальные машины в облаке (например, AWS, Yandex Cloud или DigitalOcean).</li>
53
<li>Через terraform output извлекаются нужные переменные (IP-адреса, пути к ключам).</li>
53
<li>Через terraform output извлекаются нужные переменные (IP-адреса, пути к ключам).</li>
54
</ol><p>Эти данные передаются в<strong>Ansible inventory:</strong></p>
54
</ol><p>Эти данные передаются в<strong>Ansible inventory:</strong></p>
55
<p>terraform output -json > tf_output.json./generate_inventory.py tf_output.json > inventory.ini</p>
55
<p>terraform output -json > tf_output.json./generate_inventory.py tf_output.json > inventory.ini</p>
56
<ol><li><strong>Ansible</strong>с этим inventory.ini запускает ansible-playbook и настраивает серверы.</li>
56
<ol><li><strong>Ansible</strong>с этим inventory.ini запускает ansible-playbook и настраивает серверы.</li>
57
</ol><p>Это можно автоматизировать в одном пайплайне, добавив local-exec в Terraform или написав обёртку-скрипт.</p>
57
</ol><p>Это можно автоматизировать в одном пайплайне, добавив local-exec в Terraform или написав обёртку-скрипт.</p>
58
<h3>Передача переменных и ключей</h3>
58
<h3>Передача переменных и ключей</h3>
59
<p>Чтобы Ansible получил доступ, нужно передать private key и задать пользователя. Это делается через параметры команды:</p>
59
<p>Чтобы Ansible получил доступ, нужно передать private key и задать пользователя. Это делается через параметры команды:</p>
60
<p>ansible-playbook -i inventory.ini playbook.yml \--private-key ~/.ssh/id_rsa \-u ubuntu</p>
60
<p>ansible-playbook -i inventory.ini playbook.yml \--private-key ~/.ssh/id_rsa \-u ubuntu</p>
61
<p>Или прописывается в ansible.cfg.</p>
61
<p>Или прописывается в ansible.cfg.</p>
62
<h3>Пример из практики</h3>
62
<h3>Пример из практики</h3>
63
<p>В проектах с Kubernetes часто используют Terraform для развёртывания кластеров, а Ansible - для установки компонентов: kubelet, контейнерных рантаймов, ingress-контроллеров. Такой подход упрощает поддержку: инфраструктура создаётся один раз, а плейбуки можно переиспользовать и дорабатывать без пересоздания хостов.</p>
63
<p>В проектах с Kubernetes часто используют Terraform для развёртывания кластеров, а Ansible - для установки компонентов: kubelet, контейнерных рантаймов, ingress-контроллеров. Такой подход упрощает поддержку: инфраструктура создаётся один раз, а плейбуки можно переиспользовать и дорабатывать без пересоздания хостов.</p>
64
<p>Совместное применение Terraform и Ansible делает инфраструктуру управляемой, масштабируемой и более надёжной. И что важно - такой подход легко автоматизируется, что снижает вероятность ошибок и повышает скорость поставки. Узнайте, как грамотно использовать этот тандем - на курсе<a>"Ansible: Infrastructure as Code"</a>.</p>
64
<p>Совместное применение Terraform и Ansible делает инфраструктуру управляемой, масштабируемой и более надёжной. И что важно - такой подход легко автоматизируется, что снижает вероятность ошибок и повышает скорость поставки. Узнайте, как грамотно использовать этот тандем - на курсе<a>"Ansible: Infrastructure as Code"</a>.</p>
65
<h2>Преимущества совместного использования + примеры</h2>
65
<h2>Преимущества совместного использования + примеры</h2>
66
<p>Когда Terraform и Ansible работают в связке, DevOps-команды получают мощный инструмент управления: от создания серверов до их полной настройки. Это не просто удобство - это ускорение процессов, сокращение числа ошибок и упрощение масштабирования.</p>
66
<p>Когда Terraform и Ansible работают в связке, DevOps-команды получают мощный инструмент управления: от создания серверов до их полной настройки. Это не просто удобство - это ускорение процессов, сокращение числа ошибок и упрощение масштабирования.</p>
67
<h3>Преимущества интеграции</h3>
67
<h3>Преимущества интеграции</h3>
68
<ol><li><strong>Автоматизация от начала до конца.</strong>Terraform создаёт инфраструктуру, Ansible настраивает её. Всё в одном пайплайне, без ручного вмешательства.</li>
68
<ol><li><strong>Автоматизация от начала до конца.</strong>Terraform создаёт инфраструктуру, Ansible настраивает её. Всё в одном пайплайне, без ручного вмешательства.</li>
69
<li><strong>Гибкость и масштабируемость.</strong>Нужно добавить 10 серверов? Обновить nginx на всех? Пара команд - и всё готово.</li>
69
<li><strong>Гибкость и масштабируемость.</strong>Нужно добавить 10 серверов? Обновить nginx на всех? Пара команд - и всё готово.</li>
70
<li><strong>Повышение надёжности.</strong>Меньше ручных действий - меньше человеческих ошибок.</li>
70
<li><strong>Повышение надёжности.</strong>Меньше ручных действий - меньше человеческих ошибок.</li>
71
<li><strong>Чёткое разделение обязанностей.</strong>Один инструмент - одна задача. Это делает код чище, а поддержку - проще.</li>
71
<li><strong>Чёткое разделение обязанностей.</strong>Один инструмент - одна задача. Это делает код чище, а поддержку - проще.</li>
72
<li><strong>Универсальность</strong>. Можно комбинировать любые облака и платформы, от AWS до Proxmox.</li>
72
<li><strong>Универсальность</strong>. Можно комбинировать любые облака и платформы, от AWS до Proxmox.</li>
73
</ol><h3>Практический кейс: развёртывание веб-сервиса</h3>
73
</ol><h3>Практический кейс: развёртывание веб-сервиса</h3>
74
<p><strong>Сценарий</strong>: необходимо развернуть веб-приложение на базе Ubuntu, с Nginx, Docker и PostgreSQL.</p>
74
<p><strong>Сценарий</strong>: необходимо развернуть веб-приложение на базе Ubuntu, с Nginx, Docker и PostgreSQL.</p>
75
<p><strong>Решение</strong>:</p>
75
<p><strong>Решение</strong>:</p>
76
<ol><li><strong>Terraform</strong>:</li>
76
<ol><li><strong>Terraform</strong>:</li>
77
</ol><ul><li>создаёт виртуальную машину,</li>
77
</ol><ul><li>создаёт виртуальную машину,</li>
78
<li>настраивает сеть и фаервол,</li>
78
<li>настраивает сеть и фаервол,</li>
79
<li>отдаёт публичный IP и ключи.</li>
79
<li>отдаёт публичный IP и ключи.</li>
80
</ul><p>output "web_ip" { value = aws_instance.web.public_ip}</p>
80
</ul><p>output "web_ip" { value = aws_instance.web.public_ip}</p>
81
<ol><li><strong>Ansible</strong>:</li>
81
<ol><li><strong>Ansible</strong>:</li>
82
</ol><ul><li>подключается к машине,</li>
82
</ol><ul><li>подключается к машине,</li>
83
<li>устанавливает Docker, Nginx, PostgreSQL,</li>
83
<li>устанавливает Docker, Nginx, PostgreSQL,</li>
84
<li>разворачивает контейнер с приложением.</li>
84
<li>разворачивает контейнер с приложением.</li>
85
</ul><p>- hosts: all become: true tasks: - name: Install Docker apt: name: docker.io state: present - name: Deploy app container docker_container: name: myapp image: myrepo/app:latest ports: - "80:80"</p>
85
</ul><p>- hosts: all become: true tasks: - name: Install Docker apt: name: docker.io state: present - name: Deploy app container docker_container: name: myapp image: myrepo/app:latest ports: - "80:80"</p>
86
<p>В результате - рабочее приложение, развёрнутое полностью автоматически.</p>
86
<p>В результате - рабочее приложение, развёрнутое полностью автоматически.</p>
87
<p><strong>Получите ключевые знания и навыки по Ansible!</strong>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</p>
87
<p><strong>Получите ключевые знания и навыки по Ansible!</strong>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса.</p>
88
<h3><strong>Пример для Kubernetes</strong></h3>
88
<h3><strong>Пример для Kubernetes</strong></h3>
89
<p>Многие компании используют связку Terraform + Ansible при построении кластеров Kubernetes:</p>
89
<p>Многие компании используют связку Terraform + Ansible при построении кластеров Kubernetes:</p>
90
<ul><li><strong>Terraform</strong>разворачивает хосты и задаёт параметры виртуализации.</li>
90
<ul><li><strong>Terraform</strong>разворачивает хосты и задаёт параметры виртуализации.</li>
91
<li><strong>Ansible</strong>устанавливает kubeadm, Docker и конфигурирует кластер с помощью ansible playbook.</li>
91
<li><strong>Ansible</strong>устанавливает kubeadm, Docker и конфигурирует кластер с помощью ansible playbook.</li>
92
</ul><p>Такой подход масштабируется, легко воспроизводим и понятен другим специалистам.</p>
92
</ul><p>Такой подход масштабируется, легко воспроизводим и понятен другим специалистам.</p>
93
<h3><strong>Переход от экспериментов к продакшену</strong></h3>
93
<h3><strong>Переход от экспериментов к продакшену</strong></h3>
94
<p>Совместное использование Terraform и Ansible позволяет превратить "игрушечные" инфраструктуры в надёжные продакшн-окружения. Вместо "крутил руками - всё сломалось", появляется стабильная автоматизация: изменил один YAML или HCL - получил предсказуемый результат.</p>
94
<p>Совместное использование Terraform и Ansible позволяет превратить "игрушечные" инфраструктуры в надёжные продакшн-окружения. Вместо "крутил руками - всё сломалось", появляется стабильная автоматизация: изменил один YAML или HCL - получил предсказуемый результат.</p>
95
<p>В середине этого пути - обучение.</p>
95
<p>В середине этого пути - обучение.</p>
96
<h2>Вывод</h2>
96
<h2>Вывод</h2>
97
<p>Terraform и Ansible - не конкуренты, а союзники. Вместе они закрывают все задачи DevOps: от создания инфраструктуры до детальной настройки приложений. Terraform даёт предсказуемость, Ansible - гибкость. Их интеграция помогает минимизировать ручной труд, ускорить релизы и снизить количество ошибок.</p>
97
<p>Terraform и Ansible - не конкуренты, а союзники. Вместе они закрывают все задачи DevOps: от создания инфраструктуры до детальной настройки приложений. Terraform даёт предсказуемость, Ansible - гибкость. Их интеграция помогает минимизировать ручной труд, ускорить релизы и снизить количество ошибок.</p>
98
<p>Если вы только начинаете автоматизировать инфраструктуру, начните с понимания ключевой разницы между Terraform и Ansible, а затем объедините их.</p>
98
<p>Если вы только начинаете автоматизировать инфраструктуру, начните с понимания ключевой разницы между Terraform и Ansible, а затем объедините их.</p>
99
<p>Для этого не нужно быть архитектором облаков. Достаточно освоить базовые принципы и потренироваться на небольших проектах. Дальше всё пойдёт быстрее.</p>
99
<p>Для этого не нужно быть архитектором облаков. Достаточно освоить базовые принципы и потренироваться на небольших проектах. Дальше всё пойдёт быстрее.</p>
100
<p><strong>Если вы хотите перейти от ручного администрирования к полноценной IaC-практике, начните с курса<a>"Ansible: Infrastructure as Code"</a>, а затем прокачайте навыки на практике.</strong></p>
100
<p><strong>Если вы хотите перейти от ручного администрирования к полноценной IaC-практике, начните с курса<a>"Ansible: Infrastructure as Code"</a>, а затем прокачайте навыки на практике.</strong></p>
101
<p>Это инвестиция, которая окупается быстро. Даже одна автоматизированная задача экономит часы. А в масштабе проекта - дни и недели. Терраформируйте инфраструктуру и настраивайте её Ansible - просто, логично, эффективно.</p>
101
<p>Это инвестиция, которая окупается быстро. Даже одна автоматизированная задача экономит часы. А в масштабе проекта - дни и недели. Терраформируйте инфраструктуру и настраивайте её Ansible - просто, логично, эффективно.</p>
102
<h3><strong>Статью подготовили</strong></h3>
102
<h3><strong>Статью подготовили</strong></h3>
103
<p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
103
<p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
104
<h3><strong>Читайте также:</strong></h3>
104
<h3><strong>Читайте также:</strong></h3>
105
105