Настройка Ansible AWX/Semaphore для управления инвентарём и ролями
Мы часто видим, как команда упирается в проблему: кто запускал playbook в пятницу вечером, под каким пользователем, с каким инвентарём? AWX и Semaphore решают именно это — дают GUI, RBAC, аудит-лог, планировщик и хранилище credentials, чтобы Ansible перестал быть инструментом одного инженера. Наш опыт показывает, что правильно настроенная платформа ускоряет работу команды в 2–3 раза и исключает человеческие ошибки при деплое.
Как выбрать между AWX и Semaphore?
AWX — upstream open-source проект Red Hat Ansible Automation Platform. Полнофункциональный, с API, workflow, динамическими инвентарями, интеграцией с Vault. Требует Kubernetes (официально) или docker-compose (неофициально). Потребляет от 4 ГБ RAM на минимальной инсталляции.
Semaphore — легковесная альтернатива. Один бинарный файл на Go, PostgreSQL или MySQL, поддержка Git-репозиториев, базовый RBAC. Не закрывает workflow и сложные интеграции, зато поднимается за 20 минут на VPS с 2 ГБ RAM.
| Критерий | AWX | Semaphore |
|---|---|---|
| Требования | Kubernetes / 8+ ГБ RAM | 1 бинарник / 2 ГБ RAM |
| RBAC | Детальный (org/team/user) | Базовый (admin/user) |
| Workflow (цепочки JT) | Да | Нет |
| Динамический инвентарь | Встроенный (AWS, GCP, Azure, NetBox...) | Через скрипт |
| Vault-интеграция | Нативная | Через переменные окружения |
| API | Полный REST + WebSocket | Базовый REST |
AWX лучше Semaphore в задачах с многоуровневым RBAC и сложными workflow за счёт встроенной поддержки workflow templates — это сокращает время настройки цепочек плейбуков на 40–60%. Semaphore же выигрывает в простоте и скорости старта. Мы рекомендуем AWX для продакшен-окружений с командой от 5 человек, Semaphore — для небольших команд или экспериментальных проектов.
Развёртывание AWX на K8s через AWX Operator
kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/2.x.x/deploy/awx-operator.yaml
# awx-instance.yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-prod
spec:
service_type: ClusterIP
ingress_type: ingress
hostname: awx.internal
postgres_configuration_secret: awx-postgres-config
admin_user: admin
admin_password_secret: awx-admin-password
replicas: 1
task_replicas: 2
web_resource_requirements:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2000m
memory: 4Gi
kubectl apply -f awx-instance.yaml -n awx kubectl get pods -n awx -w # ждём готовности Semaphore: быстрый старт
# docker-compose.yml services:
semaphore:
image: semaphoreui/semaphore:latest
environment:
SEMAPHORE_DB_HOST: postgres
SEMAPHORE_DB_NAME: semaphore
SEMAPHORE_DB_USER: semaphore
SEMAPHORE_DB_PASS: ${DB_PASS}
SEMAPHORE_ADMIN: admin
SEMAPHORE_ADMIN_PASSWORD: ${ADMIN_PASS}
SEMAPHORE_ADMIN_EMAIL: [email protected]
SEMAPHORE_ACCESS_KEY_ENCRYPTION: ${KEY_ENCRYPTION}
ports:
- "3000:3000"
depends_on:
- postgres
Как организовать инвентарь в AWX?
В AWX инвентарь — это ресурс с поддержкой источников данных. Статический инвентарь импортируется из Git-репозитория. Динамический создаётся через встроенные inventory source:
- NetBox: подключается через плагин, синхронизирует устройства по тегам/статусу
- Amazon EC2: фильтрация по tags, регионам, VPC
- VMware vCenter: инвентаризация всех VM
Настройка NetBox inventory source в AWX:
- Credentials → добавить тип «NetBox» с URL и токеном
- Inventory → Sources → Add → Source: «NetBox»
- Указать Credential, установить «Update on launch»
- Настроить фильтры:
{"status": "active", "tag": "managed-by-ansible"}
При запуске Job Template инвентарь автоматически обновляется из NetBox — не нужно держать статический файл.
RBAC и аудит
AWX поддерживает Organizations → Teams → Users с детальными правами. Типичная схема: команда разработки имеет доступ только к Job Templates своих окружений (dev/staging), не видит production. Команда DevOps управляет всем. Каждый запуск Job Template фиксируется в Activity Stream с указанием пользователя, времени, результата и полного вывода.
Credentials в AWX хранятся в зашифрованном виде (AES-256) и никогда не передаются в открытом виде — пользователь может запускать playbook с SSH-ключом, не видя его содержимого.
Что входит в работу
Мы реализуем развёртывание AWX или Semaphore под ключ. В результате вы получаете:
- Рабочий кластер / сервер с настроенной платформой
- Интеграцию с Git-репозиториями (GitHub, GitLab, Bitbucket)
- Настроенные инвентари (статический или динамический)
- RBAC-роли для ваших команд
- Документацию по администрированию
- Обучение команды (2–3 часа)
- Поддержку в течение месяца после внедрения
Мы гарантируем стабильную работу и бесперебойное обновление. Оценим ваш проект — просто напишите нам.
Сроки ориентировочно
Развёртывание Semaphore с базовым проектом, инвентарём и первыми Job Templates — 1–2 дня. AWX на Kubernetes с динамическим инвентарём и RBAC — 3–5 дней. Интеграция AWX с NetBox/VMware, настройка Workflow Templates, подключение Vault — отдельный блок 2–3 дня. Полный цикл внедрения для среднего проекта занимает до 8 рабочих дней.
Почему стоит автоматизировать Ansible?
Сертифицированные инженеры с 5-летним опытом в DevOps помогут вам избежать типовых ошибок: хранение credentials в открытом виде, отсутствие аудита, хаотичное управление инвентарём. Мы провели более 30 успешных проектов по внедрению AWX и Semaphore. Наши гарантии — отсутствие простоев при деплое и прозрачный процесс. Свяжитесь с нами для консультации — оценим вашу инфраструктуру и подготовим предложение.







