0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: ansible, git, древа директорий для ролей, linux, best-practice, centos 7.5, rolename/vars, rolename/tasks, скопировать раскладку директорий из репозитория, site.yml, role: common, role: nginx, nginx</p>
1
<p>Теги: ansible, git, древа директорий для ролей, linux, best-practice, centos 7.5, rolename/vars, rolename/tasks, скопировать раскладку директорий из репозитория, site.yml, role: common, role: nginx, nginx</p>
2
<p>На просторах сети есть много гайдов на русском вроде "Учим Ansible с нуля". Но ни в одном из них я не видел, чтобы человека сразу же погружали в best-practice. Хотя бы в плане построение<strong>древа директорий для ролей</strong>. Считаю, что сделать это надо хотя бы потому, что переезд на best-practice может оказаться болезненным для новичков. Сейчас я попытаюсь исправить этот недочёт. Используемая в примерах ОС - Centos 7.5.</p>
2
<p>На просторах сети есть много гайдов на русском вроде "Учим Ansible с нуля". Но ни в одном из них я не видел, чтобы человека сразу же погружали в best-practice. Хотя бы в плане построение<strong>древа директорий для ролей</strong>. Считаю, что сделать это надо хотя бы потому, что переезд на best-practice может оказаться болезненным для новичков. Сейчас я попытаюсь исправить этот недочёт. Используемая в примерах ОС - Centos 7.5.</p>
3
<h2>Разберёмся немного, что за best-practice такой</h2>
3
<h2>Разберёмся немного, что за best-practice такой</h2>
4
<p>Идём по<a>ссылке</a>и читаем:</p>
4
<p>Идём по<a>ссылке</a>и читаем:</p>
5
<p><em>These may not use all of the features in the latest release, but are still an excellent reference!</em></p>
5
<p><em>These may not use all of the features in the latest release, but are still an excellent reference!</em></p>
6
<p><strong>Мораль такова</strong>: всё аккуратно разложено по директориям для вашего же удобства в дальнейшем использовании. Сам<strong>Ansible</strong>понимает, для чего нужна каждая директория. Например, из<strong>rolename/vars</strong>он по умолчанию берёт переменные для роли, а из<strong>rolename/tasks</strong>он берёт основные задачи. Что такое роли можно прочитать, например,<a>ТУТ >></a></p>
6
<p><strong>Мораль такова</strong>: всё аккуратно разложено по директориям для вашего же удобства в дальнейшем использовании. Сам<strong>Ansible</strong>понимает, для чего нужна каждая директория. Например, из<strong>rolename/vars</strong>он по умолчанию берёт переменные для роли, а из<strong>rolename/tasks</strong>он берёт основные задачи. Что такое роли можно прочитать, например,<a>ТУТ >></a></p>
7
<h2>Установим Ansbile и GIT</h2>
7
<h2>Установим Ansbile и GIT</h2>
8
<p>Всё есть в стандартных репозиториях:</p>
8
<p>Всё есть в стандартных репозиториях:</p>
9
yum install -y ansible git<p>Проверим установку:</p>
9
yum install -y ansible git<p>Проверим установку:</p>
10
ansible --version && git --version<p>Далее скопируем раскладку директорий из репозитория, чтобы не создавать руками:</p>
10
ansible --version && git --version<p>Далее скопируем раскладку директорий из репозитория, чтобы не создавать руками:</p>
11
git clone https://github.com/mattjbarlow/ansible-directory.git.<p>Хотя первый раз, конечно, советую пройти это всё вручную - для закрепления материала. Обязательно зайдите в директорию и изучите её содержимое.</p>
11
git clone https://github.com/mattjbarlow/ansible-directory.git.<p>Хотя первый раз, конечно, советую пройти это всё вручную - для закрепления материала. Обязательно зайдите в директорию и изучите её содержимое.</p>
12
<p>Далее пропишем хост в тестовый инвентаризационный файл:</p>
12
<p>Далее пропишем хост в тестовый инвентаризационный файл:</p>
13
cd ansible-directory echo "192.168.255.1 ansible_ssh_user=root" >> staging<p>Протестируем соединение с тестовым хостом:</p>
13
cd ansible-directory echo "192.168.255.1 ansible_ssh_user=root" >> staging<p>Протестируем соединение с тестовым хостом:</p>
14
ansible -i staging -m ping all<h2>У нас почти всё настроено</h2>
14
ansible -i staging -m ping all<h2>У нас почти всё настроено</h2>
15
<p>Осталось только попробовать на реальном примере:</p>
15
<p>Осталось только попробовать на реальном примере:</p>
16
git clone https://github.com/geerlingguy/ansible-role-nginx.git roles/nginx<p>Перед запуском зайдите в<strong>site.yml</strong>и поменяйте<strong>role: common</strong>на<strong>role: nginx</strong>. Прелесть ролей как раз в том, что вам нужно просто указать имя директории и Ansible всё поймёт сам.</p>
16
git clone https://github.com/geerlingguy/ansible-role-nginx.git roles/nginx<p>Перед запуском зайдите в<strong>site.yml</strong>и поменяйте<strong>role: common</strong>на<strong>role: nginx</strong>. Прелесть ролей как раз в том, что вам нужно просто указать имя директории и Ansible всё поймёт сам.</p>
17
<p><strong>Ну и запускаем нашу роль:</strong></p>
17
<p><strong>Ну и запускаем нашу роль:</strong></p>
18
ansible-playbook -i staging site.yml<p>В итоге на тестовом сервере успешно установлен и настроен<strong>nginx</strong>.</p>
18
ansible-playbook -i staging site.yml<p>В итоге на тестовом сервере успешно установлен и настроен<strong>nginx</strong>.</p>
19
19