- Создана структура molecule/universal/ с поддержкой DinD и DOoD - Добавлена поддержка Kind кластеров для Kubernetes тестирования - Интегрированы Helm charts (nginx, prometheus-stack) - Добавлена поддержка Istio service mesh с Kiali - Создан Makefile с lab-целями для управления лабораторией - Добавлена поддержка Prometheus + Grafana с автопровижинингом - Создан README с подробной документацией Автор: Сергей Антропов Сайт: https://devops.org.ru
101 lines
2.5 KiB
YAML
101 lines
2.5 KiB
YAML
---
|
|
# Основной 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 }}"
|