- Переименован пресет geop.yml в cod.yml - Обновлены все группы с geop на cod - Добавлена поддержка ARM64 для Astra Linux и RedOS - Создан Dockerfile.arm64 для RedOS с исправлением конфликтов пакетов - Улучшены разделители в логах Molecule - Зашифрован файл vault/secrets.yml - Обновлена роль devops с поддержкой vault - Добавлены шаблоны для SSH и sudoers конфигураций
		
			
				
	
	
		
			150 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| # =============================================================================
 | |
| # VERIFY - Проверка тестовых инстансов
 | |
| # =============================================================================
 | |
| - hosts: localhost
 | |
|   gather_facts: false
 | |
|   vars:
 | |
|     # Получаем preset из переменной окружения или используем default
 | |
|     preset_name: "{{ lookup('env', 'MOLECULE_PRESET') | default('default') }}"
 | |
|     preset_file: "/workspace/molecule/presets/{{ preset_name }}.yml"
 | |
|     
 | |
|     # Fallback значения если preset файл не найден
 | |
|     docker_network: labnet
 | |
|     hosts:
 | |
|       - name: u1
 | |
|         family: debian
 | |
|         groups: [test]
 | |
| 
 | |
|   tasks:
 | |
|     # =============================================================================
 | |
|     # НАСТРОЙКА - Загрузка конфигурации
 | |
|     # =============================================================================
 | |
|     - name: Configuration setup
 | |
|       debug:
 | |
|         msg: |
 | |
|           ================================================================================
 | |
|           НАСТРОЙКА - Загрузка конфигурации
 | |
|           ================================================================================
 | |
|           Preset: {{ preset_name }}
 | |
|           ================================================================================
 | |
| 
 | |
|     - name: Load preset configuration
 | |
|       include_vars: "{{ preset_file }}"
 | |
|       when: preset_file is file
 | |
|       ignore_errors: true
 | |
| 
 | |
|     # =============================================================================
 | |
|     # ПРОВЕРКА SYSTEMD УЗЛОВ - Статус systemd контейнеров
 | |
|     # =============================================================================
 | |
|     - name: Systemd nodes verification
 | |
|       debug:
 | |
|         msg: |
 | |
|           ================================================================================
 | |
|           ПРОВЕРКА SYSTEMD УЗЛОВ - Статус systemd контейнеров
 | |
|           ================================================================================
 | |
|           Count: {{ hosts | selectattr('type','undefined') | list | length }}
 | |
|           ================================================================================
 | |
| 
 | |
|     - name: Check systemd nodes status
 | |
|       community.docker.docker_container_exec:
 | |
|         container: "{{ item.name }}"
 | |
|         command: systemctl is-system-running
 | |
|       loop: "{{ hosts | selectattr('type','undefined') | list }}"
 | |
|       loop_control: { label: "{{ item.name }}" }
 | |
|       register: systemd_status
 | |
|       ignore_errors: true
 | |
| 
 | |
|     - name: Display systemd nodes status
 | |
|       debug:
 | |
|         msg: "Systemd node {{ item.0.name }}: {{ item.1.stdout | default('unknown') }}"
 | |
|       loop: "{{ systemd_status.results | default([]) }}"
 | |
|       when: systemd_status is defined
 | |
| 
 | |
|     # Проверка DinD узлов
 | |
|     - name: Check DinD nodes docker daemon
 | |
|       community.docker.docker_container_exec:
 | |
|         container: "{{ item.name }}"
 | |
|         command: docker version --format '{{.Server.Version}}'
 | |
|       loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list }}"
 | |
|       loop_control: { label: "{{ item.name }}" }
 | |
|       register: dind_status
 | |
|       ignore_errors: true
 | |
| 
 | |
|     - name: Display DinD nodes status
 | |
|       debug:
 | |
|         msg: "DinD node {{ item.0.name }}: Docker {{ item.1.stdout | default('not running') }}"
 | |
|       loop: "{{ dind_status.results | default([]) }}"
 | |
|       when: dind_status is defined
 | |
| 
 | |
|     # Проверка DOoD узлов
 | |
|     - name: Check DOoD nodes docker access
 | |
|       community.docker.docker_container_exec:
 | |
|         container: "{{ item.name }}"
 | |
|         command: docker ps --format '{{.Names}}'
 | |
|       loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list }}"
 | |
|       loop_control: { label: "{{ item.name }}" }
 | |
|       register: dood_status
 | |
|       ignore_errors: true
 | |
| 
 | |
|     - name: Display DOoD nodes status
 | |
|       debug:
 | |
|         msg: "DOoD node {{ item.0.name }}: Can access {{ item.1.stdout_lines | length | default(0) }} containers"
 | |
|       loop: "{{ dood_status.results | default([]) }}"
 | |
|       when: dood_status is defined
 | |
| 
 | |
|     # Проверка сетевого подключения
 | |
|     - name: Test network connectivity between nodes
 | |
|       community.docker.docker_container_exec:
 | |
|         container: "{{ item.0.name }}"
 | |
|         command: ping -c 1 {{ item.1.name }}
 | |
|       loop: "{{ hosts | subelements(hosts, 'name') }}"
 | |
|       loop_control: { label: "{{ item.0.name }} -> {{ item.1.name }}" }
 | |
|       when: item.0.name != item.1.name
 | |
|       register: ping_results
 | |
|       ignore_errors: true
 | |
| 
 | |
|     - name: Display network connectivity results
 | |
|       debug:
 | |
|         msg: "Network test {{ item.0.name }} -> {{ item.1.name }}: {{ 'OK' if item.2.rc == 0 else 'FAILED' }}"
 | |
|       loop: "{{ ping_results.results | default([]) }}"
 | |
|       when: ping_results is defined
 | |
| 
 | |
|     # Проверка портов
 | |
|     - name: Check published ports
 | |
|       community.docker.docker_container_exec:
 | |
|         container: "{{ item.name }}"
 | |
|         command: netstat -tlnp
 | |
|       loop: "{{ hosts | selectattr('publish','defined') | list }}"
 | |
|       loop_control: { label: "{{ item.name }}" }
 | |
|       register: port_status
 | |
|       ignore_errors: true
 | |
| 
 | |
|     - name: Display port status
 | |
|       debug:
 | |
|         msg: "Node {{ item.0.name }} ports: {{ item.1.stdout_lines | select('match', 'LISTEN') | list | length }} listening"
 | |
|       loop: "{{ port_status.results | default([]) }}"
 | |
|       when: port_status is defined
 | |
| 
 | |
|     # Проверка групп
 | |
|     - name: Display inventory groups
 | |
|       debug:
 | |
|         msg: |
 | |
|           📋 Inventory Groups:
 | |
|           {% for group, members in (groups_map | default({}) | dictsort) %}
 | |
|           - {{ group }}: {{ members | join(', ') }}
 | |
|           {% endfor %}
 | |
| 
 | |
|     # Финальная сводка
 | |
|     - name: Display verification summary
 | |
|       debug:
 | |
|         msg: |
 | |
|           ✅ Verification Summary:
 | |
|           - Total hosts: {{ hosts | length }}
 | |
|           - Systemd nodes: {{ hosts | selectattr('type','undefined') | list | length }}
 | |
|           - DinD nodes: {{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list | length }}
 | |
|           - DOoD nodes: {{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list | length }}
 | |
|           - Groups: {{ groups_map.keys() | list | join(', ') }}
 | |
|           - Network: {{ docker_network }}
 | |
| 
 |