feat: Добавлена универсальная лаборатория для тестирования Ansible ролей

- Создана структура molecule/universal/ с поддержкой DinD и DOoD
- Добавлена поддержка Kind кластеров для Kubernetes тестирования
- Интегрированы Helm charts (nginx, prometheus-stack)
- Добавлена поддержка Istio service mesh с Kiali
- Создан Makefile с lab-целями для управления лабораторией
- Добавлена поддержка Prometheus + Grafana с автопровижинингом
- Создан README с подробной документацией

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 13:01:53 +03:00
parent deebf78047
commit b4881da7c5
14 changed files with 1051 additions and 12 deletions

100
files/playbooks/site.yml Normal file
View File

@@ -0,0 +1,100 @@
---
# Основной playbook для универсальной лаборатории
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
- name: Base deps
hosts: all
become: true
tasks:
- name: Update apt cache (Debian)
apt:
update_cache: true
when: ansible_os_family == 'Debian'
changed_when: false
- name: Update yum cache (RHEL)
yum:
update_cache: true
when: ansible_os_family == 'RedHat'
changed_when: false
- name: Common tools
package:
name:
- curl
- jq
- ca-certificates
- iproute2
- iputils-ping
- procps
- net-tools
- sudo
- vim
- wget
- unzip
state: present
# Под каждую группу — свои роли. Подставь свои имена.
- name: ETCD
hosts: etcd
become: true
roles:
# - role: your_role_etcd
tasks:
- name: ETCD placeholder
debug:
msg: "ETCD группа готова для настройки"
- name: Patroni
hosts: patroni
become: true
roles:
# - role: your_role_patroni
tasks:
- name: Patroni placeholder
debug:
msg: "Patroni группа готова для настройки"
- name: HAProxy
hosts: haproxy
become: true
roles:
# - role: your_role_haproxy
tasks:
- name: HAProxy placeholder
debug:
msg: "HAProxy группа готова для настройки"
# Пример: развернуть docker-compose прямо внутри DinD хоста(ов)
- name: DinD stack deploy
hosts: apps
gather_facts: false
vars:
docker_host: "tcp://{{ inventory_hostname }}:2375"
stack_dir: /root/stack
tasks:
- name: Create stack directory
file:
path: "{{ stack_dir }}"
state: directory
- name: Copy demo docker-compose.yml
copy:
dest: "{{ stack_dir }}/docker-compose.yml"
content: |
version: "3.9"
services:
web:
image: nginx:alpine
ports: ["8080:80"]
cache:
image: redis:7-alpine
- name: Deploy stack on DinD
community.docker.docker_compose_v2:
project_src: "{{ stack_dir }}"
state: present
docker_host: "{{ docker_host }}"
when: item.type is defined and item.type == 'dind'
loop: "{{ groups['apps'] | map('extract', hostvars) | list }}"

8
files/requirements.yml Normal file
View File

@@ -0,0 +1,8 @@
---
# Коллекции Ansible для универсальной лаборатории
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
collections:
- name: community.docker
- name: community.general