feat: Добавлена поддержка ansible-lint с настройками для пропуска ошибок
- Добавлена команда make lint для проверки всего проекта - Обновлена команда make role lint для использования .ansible-lint - Добавлен файл .ansible-lint с настройками для пропуска ошибок: - fqcn: позволяет использовать короткие имена модулей - yaml[new-line-at-end-of-file]: не требует новой строки в конце YAML - yaml[truthy]: позволяет использовать yes/no вместо true/false - yaml[line-length]: не ограничивает длину строк в YAML - var-naming[no-role-prefix]: не требует префиксов для переменных - ignore-errors: позволяет использовать ignore_errors: yes Обновления в Makefile: - make lint: проверяет весь проект (molecule, playbooks, roles) - make role lint: использует --config-file /ansible/.ansible-lint - Добавлена команда lint в справку make help Обновления в документации: - README.md: добавлена команда make lint - docs/api.md: добавлены разделы Ansible-lint команды и настройки Преимущества: - Единообразная проверка всего проекта - Гибкие настройки для пропуска нежелательных ошибок - Автоматическое использование конфигурационного файла - Подробная документация по настройкам Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
14
Makefile
14
Makefile
@@ -73,7 +73,7 @@ help: ## Показать справку по всем командам
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^role-[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-20s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
@echo ""
|
||||
@echo "$(GREEN)Утилиты:$(RESET)"
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-20s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST) | grep -E "^(env|vault|git|docker|report|snapshot|cleanup)"
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-20s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST) | grep -E "^(lint|env|vault|git|docker|report|snapshot|cleanup)"
|
||||
|
||||
# =============================================================================
|
||||
# ИНИЦИАЛИЗАЦИЯ И НАСТРОЙКА
|
||||
@@ -401,7 +401,7 @@ role: ## Управление ролями (list|create|edit|test|lint|deploy)
|
||||
$(MAKE) lab test LAB_SPEC=molecule/presets/minimal.yml;; \
|
||||
lint) \
|
||||
echo "$(YELLOW)🔍 Проверяем роли...$(RESET)"; \
|
||||
docker exec ansible-controller bash -lc 'ansible-lint $(ROLES_DIR)/*'; \
|
||||
docker exec ansible-controller bash -lc 'ansible-lint --config-file /ansible/.ansible-lint $(ROLES_DIR)/*'; \
|
||||
echo "$(GREEN)✅ Проверка завершена$(RESET)";; \
|
||||
deploy) \
|
||||
echo "$(PURPLE)🚀 Развертываем роли...$(RESET)"; \
|
||||
@@ -599,6 +599,16 @@ cleanup: ## Очистить лабораторию
|
||||
# УТИЛИТЫ
|
||||
# =============================================================================
|
||||
|
||||
.PHONY: lint
|
||||
lint: ## Проверить весь проект на ошибки
|
||||
@echo "$(YELLOW)🔍 Проверяем весь проект...$(RESET)"
|
||||
@docker exec ansible-controller bash -lc 'ansible-lint --config-file /ansible/.ansible-lint molecule/universal/'
|
||||
@docker exec ansible-controller bash -lc 'ansible-lint --config-file /ansible/.ansible-lint files/playbooks/'
|
||||
@if [ -d "$(ROLES_DIR)" ] && [ -n "$$(ls $(ROLES_DIR)/ 2>/dev/null)" ]; then \
|
||||
docker exec ansible-controller bash -lc 'ansible-lint --config-file /ansible/.ansible-lint $(ROLES_DIR)/*'; \
|
||||
fi
|
||||
@echo "$(GREEN)✅ Проверка завершена$(RESET)"
|
||||
|
||||
.PHONY: env
|
||||
env: ## Показать переменные окружения
|
||||
@echo "$(CYAN)🔧 Переменные окружения:$(RESET)"
|
||||
|
||||
@@ -100,6 +100,9 @@ make role create NAME=my-role
|
||||
make role test NAME=my-role
|
||||
make role lint # Проверка ролей
|
||||
|
||||
# Проверка всего проекта
|
||||
make lint # Проверить весь проект на ошибки
|
||||
|
||||
# Управление Vault
|
||||
make vault show # Показать содержимое
|
||||
make vault create # Создать vault файл
|
||||
|
||||
36
docs/api.md
36
docs/api.md
@@ -197,6 +197,42 @@ kubectl logs <pod-name>
|
||||
kubectl exec -it <pod-name> -- /bin/sh
|
||||
```
|
||||
|
||||
### Ansible-lint команды
|
||||
|
||||
```bash
|
||||
# Проверить весь проект
|
||||
make lint
|
||||
|
||||
# Проверить роли
|
||||
make role lint
|
||||
|
||||
# Проверить конкретную роль
|
||||
ansible-lint --config-file .ansible-lint roles/my-role/
|
||||
|
||||
# Проверить playbook
|
||||
ansible-lint --config-file .ansible-lint files/playbooks/site.yml
|
||||
```
|
||||
|
||||
### Настройки ansible-lint (.ansible-lint)
|
||||
|
||||
```yaml
|
||||
skip_list:
|
||||
- fqcn # Полные имена модулей
|
||||
- yaml[new-line-at-end-of-file] # Новая строка в конце файла
|
||||
- yaml[truthy] # Булевы значения
|
||||
- yaml[line-length] # Длина строки
|
||||
- var-naming[no-role-prefix] # Префиксы переменных
|
||||
- 'ignore-errors' # Игнорирование ошибок
|
||||
```
|
||||
|
||||
**Описание пропускаемых правил:**
|
||||
- `fqcn` - позволяет использовать короткие имена модулей (например, `yum` вместо `ansible.builtin.yum`)
|
||||
- `yaml[new-line-at-end-of-file]` - не требует новой строки в конце YAML файлов
|
||||
- `yaml[truthy]` - позволяет использовать `yes/no` вместо `true/false`
|
||||
- `yaml[line-length]` - не ограничивает длину строк в YAML
|
||||
- `var-naming[no-role-prefix]` - не требует префиксов для переменных ролей
|
||||
- `ignore-errors` - позволяет использовать `ignore_errors: yes`
|
||||
|
||||
### Port-forward команды
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user