docs: обновлена документация и help для линтинга ролей
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled

- Обновлена основная справка make help с примерами использования
- Добавлена подробная справка по линтингу в make role
- Создана документация docs/linting-guide.md с полным руководством
- Обновлен README.md с примерами команд линтинга
- Добавлена ссылка на новую документацию в секции разработки

Новая документация включает:
- Команды линтинга (все роли и конкретные)
- Профили линтинга (production, basic, min)
- Типы ошибок и способы исправления
- Интеграция с CI/CD
- Лучшие практики и устранение неполадок
This commit is contained in:
Сергей Антропов
2025-10-25 20:44:51 +03:00
parent b315bc6b14
commit 34e0cbd570
3 changed files with 253 additions and 5 deletions

226
docs/linting-guide.md Normal file
View File

@@ -0,0 +1,226 @@
# 🔍 Руководство по линтингу ролей
## Автор
Сергей Антропов
Сайт: https://devops.org.ru
## Обзор
Линтинг ролей - это автоматическая проверка синтаксиса, стиля и соответствия лучшим практикам Ansible. В AnsibleTemplate используется `ansible-lint` для обеспечения качества кода.
## Команды линтинга
### Проверка всех ролей
```bash
make role lint
```
- Проверяет все роли в директории `roles/`
- Использует конфигурацию из `.ansible-lint`
- Показывает все найденные ошибки и предупреждения
### Проверка конкретной роли
```bash
make role lint devops
make role lint ping
```
- Проверяет только указанную роль
- Автоматически валидирует существование роли
- Показывает доступные роли при ошибке
## Профили линтинга
Ansible-lint использует несколько профилей для разных уровней строгости:
### Production (по умолчанию)
- Самый строгий профиль
- Проверяет все правила
- Рекомендуется для продакшн кода
### Basic
- Базовые правила
- Подходит для разработки
- Менее строгий чем production
### Min
- Минимальные правила
- Только критичные ошибки
- Для быстрой проверки
## Конфигурация
Линтинг настраивается через файл `.ansible-lint`:
```yaml
---
# Профиль по умолчанию
profile: production
# Исключения
skip_list:
- yaml[line-length] # Исключить проверку длины строк
# Дополнительные правила
enable_list:
- name[casing] # Включить проверку именования
# Игнорирование файлов
exclude_paths:
- .cache/
- .github/
- tests/
```
## Типы ошибок
### Синтаксические ошибки
- Неправильный YAML синтаксис
- Ошибки в Jinja2 шаблонах
- Неправильная структура playbook
### Стилистические ошибки
- Trailing spaces (лишние пробелы)
- Неправильные комментарии
- Неправильное форматирование
### Лучшие практики
- Использование устаревших модулей
- Неправильное использование become
- Отсутствие changed_when для command
## Примеры исправлений
### Trailing spaces
```yaml
# ❌ Неправильно
groups: ["sudo", "docker"]
# Лишние пробелы в конце строки
# ✅ Правильно
groups: ["sudo", "docker"]
```
### Комментарии
```yaml
# ❌ Неправильно
#Комментарий без пробела
# ✅ Правильно
# Комментарий с пробелом
```
### Changed when
```yaml
# ❌ Неправильно
- name: "Проверка статуса"
command: "systemctl status nginx"
# ✅ Правильно
- name: "Проверка статуса"
command: "systemctl status nginx"
changed_when: false
```
## Автоматическое исправление
Некоторые ошибки можно исправить автоматически:
```bash
# Исправить trailing spaces
sed -i 's/[[:space:]]*$//' roles/*/tasks/*.yml
# Исправить комментарии
sed -i 's/^#\([^ ]\)/# \1/' roles/*/tasks/*.yml
```
## Интеграция с CI/CD
Линтинг автоматически запускается в CI/CD пайплайне:
```yaml
# .github/workflows/lint.yml
name: Lint
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run lint
run: make role lint
```
## Лучшие практики
### 1. Регулярная проверка
```bash
# Проверяйте код перед коммитом
make role lint
# Проверяйте конкретную роль при разработке
make role lint devops
```
### 2. Исправляйте ошибки сразу
- Не накапливайте ошибки
- Исправляйте по мере обнаружения
- Используйте автоматические исправления
### 3. Настройте IDE
- Включите поддержку YAML
- Настройте автоформатирование
- Используйте расширения для Ansible
### 4. Используйте pre-commit hooks
```yaml
# .pre-commit-config.yaml
repos:
- repo: https://github.com/ansible/ansible-lint
rev: v6.0.0
hooks:
- id: ansible-lint
```
## Устранение неполадок
### Ошибка "Role not found"
```bash
❌ Роль 'nonexistent' не найдена в roles/
📋 Доступные роли:
- devops
- ping
```
**Решение**: Проверьте правильность имени роли
### Ошибка "Docker image not found"
```bash
Unable to find image 'ansible-controller:latest' locally
```
**Решение**: Соберите Docker образы:
```bash
make docker build
```
### Ошибка "Permission denied"
```bash
Permission denied: /workspace/roles/
```
**Решение**: Проверьте права доступа к файлам
## Дополнительные ресурсы
- [Ansible Lint Documentation](https://ansible.readthedocs.io/projects/lint/)
- [Ansible Best Practices](https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html)
- [YAML Style Guide](https://yaml.org/spec/1.2/spec.html)
## Поддержка
Если у вас возникли вопросы или проблемы с линтингом:
1. Проверьте документацию выше
2. Запустите `make role lint` для диагностики
3. Обратитесь к команде разработки
---
**Последнее обновление**: $(date)
**Версия**: 1.0.0