0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Ansible - консольная утилита для<a>настройки серверов</a>и<a>деплоя приложений</a>. Если смотреть в целом, то она просто выполняет запросы на удаленных серверах, автоматизируя различные рутинные операции, например, установку и обновление пакетов, первоначальную подготовку машины для кода приложения и так далее.</p>
1
<p>Ansible - консольная утилита для<a>настройки серверов</a>и<a>деплоя приложений</a>. Если смотреть в целом, то она просто выполняет запросы на удаленных серверах, автоматизируя различные рутинные операции, например, установку и обновление пакетов, первоначальную подготовку машины для кода приложения и так далее.</p>
2
<p>У Ansible несколько режимов работы. Самый простой - ad-hoc, когда запрос к серверу выполняется напрямую из командной строки, без создания дополнительных файлов. Для выполнения такого запроса нам понадобится имя сервера или его ip-адрес. В примерах этого урока используется ip-адрес<em>157.230.82.133</em>, в вашем случае это будет что-то свое. Кроме этого, сервер должен быть доступен для подключения по SSH суперпользователю (root).</p>
2
<p>У Ansible несколько режимов работы. Самый простой - ad-hoc, когда запрос к серверу выполняется напрямую из командной строки, без создания дополнительных файлов. Для выполнения такого запроса нам понадобится имя сервера или его ip-адрес. В примерах этого урока используется ip-адрес<em>157.230.82.133</em>, в вашем случае это будет что-то свое. Кроме этого, сервер должен быть доступен для подключения по SSH суперпользователю (root).</p>
3
<p>После выполнения этой команды, Ansible покажет ответ от сервера:</p>
3
<p>После выполнения этой команды, Ansible покажет ответ от сервера:</p>
4
<p>В примере выше выполняется соединение с сервером по ssh, на котором запускается команда ping. За ее запуск отвечает одноименный модуль<em>ping</em>входящий в состав Ansible. Модули в Ansible выполняют команды на удаленных машинах. На протяжении следующих уроков мы познакомимся с десятком других самых часто используемых модулей для работы. Один из них называется<em>command</em>, он позволяет выполнить произвольную команду на сервере. Проверим с ее помощью сколько времени запущен сервер (время с последней перезагрузки), за это в Ubuntu отвечает команда uptime:</p>
4
<p>В примере выше выполняется соединение с сервером по ssh, на котором запускается команда ping. За ее запуск отвечает одноименный модуль<em>ping</em>входящий в состав Ansible. Модули в Ansible выполняют команды на удаленных машинах. На протяжении следующих уроков мы познакомимся с десятком других самых часто используемых модулей для работы. Один из них называется<em>command</em>, он позволяет выполнить произвольную команду на сервере. Проверим с ее помощью сколько времени запущен сервер (время с последней перезагрузки), за это в Ubuntu отвечает команда uptime:</p>
5
<p>Модуль<em>command</em>в режиме Ad-Hoc подразумевается по умолчанию, то есть его можно пропустить:</p>
5
<p>Модуль<em>command</em>в режиме Ad-Hoc подразумевается по умолчанию, то есть его можно пропустить:</p>
6
<h2>Файл инвентаризации</h2>
6
<h2>Файл инвентаризации</h2>
7
<p>Указание ip-адреса напрямую в командах Ansible - не очень удобный способ управления инфраструктурой. Во-первых, придется запомнить адрес и передавать его всем остальным членам команды. Во-вторых, серверов может быть больше одного. Чтобы не указывать адрес каждый раз, Ansible предлагает создать файл инвентаризации для описания инфраструктуры. В простейшем случае в этом файле указывается список ip адресов, по одному на строчку:</p>
7
<p>Указание ip-адреса напрямую в командах Ansible - не очень удобный способ управления инфраструктурой. Во-первых, придется запомнить адрес и передавать его всем остальным членам команды. Во-вторых, серверов может быть больше одного. Чтобы не указывать адрес каждый раз, Ansible предлагает создать файл инвентаризации для описания инфраструктуры. В простейшем случае в этом файле указывается список ip адресов, по одному на строчку:</p>
8
<p>Сам файл имеет формат ini, но у него нет фиксированного имени. Для удобства назовем его<em>inventory.ini</em>. С этим файлом запуск Ansible в Ad-hoc режиме меняется на:</p>
8
<p>Сам файл имеет формат ini, но у него нет фиксированного имени. Для удобства назовем его<em>inventory.ini</em>. С этим файлом запуск Ansible в Ad-hoc режиме меняется на:</p>
9
<p>Ansible не просто выполняет команды на всех серверах, но и делает это одновременно. Ошибка выполнения команды на одном из серверов не останавливает выполнение. Ansible дойдет до конца и оповестит, о том где команда выполнилась успешно, а где нет.</p>
9
<p>Ansible не просто выполняет команды на всех серверах, но и делает это одновременно. Ошибка выполнения команды на одном из серверов не останавливает выполнение. Ansible дойдет до конца и оповестит, о том где команда выполнилась успешно, а где нет.</p>
10
<p>Файл инвентаризации хранят в git-репозитории. Обычно прямо вместе с проектом. Если проект разделен на разные репозитории, то для управления инфраструктурой создают отдельный git-репозиторий, в котором работают администраторы и возможно разработчики. Здесь уже зависит от того, есть ли в компании культура DevOps.</p>
10
<p>Файл инвентаризации хранят в git-репозитории. Обычно прямо вместе с проектом. Если проект разделен на разные репозитории, то для управления инфраструктурой создают отдельный git-репозиторий, в котором работают администраторы и возможно разработчики. Здесь уже зависит от того, есть ли в компании культура DevOps.</p>