- Создана структура 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 }}"
 |