HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Вспомним команду:</p>
1 <p>Вспомним команду:</p>
2 <p><em>all</em>- зарезервированное ключевое слово в Ansible. Оно обозначает, что команду нужно выполнить для всех серверов, указанных в inventory-файле. Такой способ хорошо работает, когда серверы имеют одинаковую роль, например на них разворачивается код приложения и они обрабатывают входящие запросы. В более сложных ситуациях, серверы выполняют разные роли, где-то запущена база данных, где-то раздается статика (картинки, шрифты и т.п.), где-то выполняются тяжелые асинхронные обработчики. И для такой инфраструктуры требуется разделение из-за различий в настройке. В одном месте нужна база данных, в другом нет. Для решения этой задачи Ansible вводит понятие групп серверов. Пример inventory-файла с двумя группами:</p>
2 <p><em>all</em>- зарезервированное ключевое слово в Ansible. Оно обозначает, что команду нужно выполнить для всех серверов, указанных в inventory-файле. Такой способ хорошо работает, когда серверы имеют одинаковую роль, например на них разворачивается код приложения и они обрабатывают входящие запросы. В более сложных ситуациях, серверы выполняют разные роли, где-то запущена база данных, где-то раздается статика (картинки, шрифты и т.п.), где-то выполняются тяжелые асинхронные обработчики. И для такой инфраструктуры требуется разделение из-за различий в настройке. В одном месте нужна база данных, в другом нет. Для решения этой задачи Ansible вводит понятие групп серверов. Пример inventory-файла с двумя группами:</p>
3 <p>Выполним команду на одной из наших групп:</p>
3 <p>Выполним команду на одной из наших групп:</p>
4 <p>А при указании группы<em>webservers</em>, команда uptime будет выполнена на двух серверах</p>
4 <p>А при указании группы<em>webservers</em>, команда uptime будет выполнена на двух серверах</p>
5 <h2>Настройки серверов</h2>
5 <h2>Настройки серверов</h2>
6 <p>По умолчанию ssh находится на 22 порту, но иногда его меняют в целях безопасности. Тогда его нужно явно прописать:</p>
6 <p>По умолчанию ssh находится на 22 порту, но иногда его меняют в целях безопасности. Тогда его нужно явно прописать:</p>
7 <p>Если у сервера есть IP, но нет доменного имени, его можно задать с помощью специального параметра ansible_host:</p>
7 <p>Если у сервера есть IP, но нет доменного имени, его можно задать с помощью специального параметра ansible_host:</p>
8 <p>Такое имя можно использовать в командах Ansible. Это позволит, например, с помощью специального флага --limit выполнять запросы на конкретном сервере:</p>
8 <p>Такое имя можно использовать в командах Ansible. Это позволит, например, с помощью специального флага --limit выполнять запросы на конкретном сервере:</p>
9 <p>В файле инвентаризации можно настроить различные группировки. Сейчас у нас есть группы [webservers] и [appservers]. Они запускаются и стартуют по-разному, но мы можем объединить их в общую группу с помощью опции children. Пример такого объединения под общим именем servers:</p>
9 <p>В файле инвентаризации можно настроить различные группировки. Сейчас у нас есть группы [webservers] и [appservers]. Они запускаются и стартуют по-разному, но мы можем объединить их в общую группу с помощью опции children. Пример такого объединения под общим именем servers:</p>
10 <p>Это позволит выполнять запросы сразу к двум группам серверов:</p>
10 <p>Это позволит выполнять запросы сразу к двум группам серверов:</p>
11 <p>Ansible позволяет работать и на текущем компьютере пользователя. Для локального соединения создается отдельная запись localhost с указанием того, что это локальная машина. Тогда Ansible пропускает соединение по ssh и выполняет команды напрямую:</p>
11 <p>Ansible позволяет работать и на текущем компьютере пользователя. Для локального соединения создается отдельная запись localhost с указанием того, что это локальная машина. Тогда Ansible пропускает соединение по ssh и выполняет команды напрямую:</p>
12 <p>localhost не входит ни в какую группу, поэтому для выполнения команды понадобится опция --limit, которая ограничивает запуск конкретной машиной:</p>
12 <p>localhost не входит ни в какую группу, поэтому для выполнения команды понадобится опция --limit, которая ограничивает запуск конкретной машиной:</p>
13  
13