Ansible для начинающих в стиле best-practice
Теги: ansible, git, древа директорий для ролей, linux, best-practice, centos 7.5, rolename/vars, rolename/tasks, скопировать раскладку директорий из репозитория, site.yml, role: common, role: nginx, nginx
На просторах сети есть много гайдов на русском вроде «Учим Ansible с нуля». Но ни в одном из них я не видел, чтобы человека сразу же погружали в best-practice. Хотя бы в плане построение древа директорий для ролей. Считаю, что сделать это надо хотя бы потому, что переезд на best-practice может оказаться болезненным для новичков. Сейчас я попытаюсь исправить этот недочёт. Используемая в примерах ОС – Centos 7.5.
Разберёмся немного, что за best-practice такой
Идём по ссылке и читаем:
These may not use all of the features in the latest release, but are still an excellent reference!
Мораль такова: всё аккуратно разложено по директориям для вашего же удобства в дальнейшем использовании. Сам Ansible понимает, для чего нужна каждая директория. Например, из rolename/vars он по умолчанию берёт переменные для роли, а из rolename/tasks он берёт основные задачи. Что такое роли можно прочитать, например, ТУТ >>
Установим Ansbile и GIT
Всё есть в стандартных репозиториях:
yum install -y ansible git
Проверим установку:
ansible --version && git --version
Далее скопируем раскладку директорий из репозитория, чтобы не создавать руками:
git clone https://github.com/mattjbarlow/ansible-directory.git.
Хотя первый раз, конечно, советую пройти это всё вручную – для закрепления материала. Обязательно зайдите в директорию и изучите её содержимое.
Далее пропишем хост в тестовый инвентаризационный файл:
cd ansible-directory
echo "192.168.255.1 ansible_ssh_user=root" >> staging
Протестируем соединение с тестовым хостом:
ansible -i staging -m ping all
У нас почти всё настроено
Осталось только попробовать на реальном примере:
git clone https://github.com/geerlingguy/ansible-role-nginx.git roles/nginx
Перед запуском зайдите в site.yml и поменяйте role: common на role: nginx. Прелесть ролей как раз в том, что вам нужно просто указать имя директории и Ansible всё поймёт сам.
Ну и запускаем нашу роль:
ansible-playbook -i staging site.yml
В итоге на тестовом сервере успешно установлен и настроен nginx.
Есть вопрос? Напишите в комментариях!