feat: Добавлены продвинутые фичи из dialog.txt
- YAML inventory с мультигруппами в create.yml - Vault preflight проверки в converge.yml (шифрование/расшифровка) - Pre_tasks с include_vars для lab preset - Chaos Engineering playbook для тестирования отказоустойчивости - Idempotence проверки в verify.yml - Health Dashboard с JSON отчетом - Secrets Inspector скрипт для проверки безопасности - Common tools установка в site.yml Новые команды: - make chaos - запуск Chaos Engineering тестов - make check-secrets - проверка безопасности секретов - make idempotence - проверка идемпотентности Обновления в файлах: - molecule/universal/create.yml: добавлена генерация YAML inventory - molecule/universal/molecule.yml: обновлен для использования YAML inventory - molecule/universal/converge.yml: добавлены vault preflight проверки - molecule/universal/verify.yml: добавлены idempotence и health dashboard - files/playbooks/chaos.yml: новый Chaos Engineering playbook - files/playbooks/site.yml: добавлены common tools - scripts/secret_scan.sh: новый Secrets Inspector - Makefile: добавлены новые команды - README.md: обновлена документация Преимущества: - Мультигруппы в YAML inventory для сложных конфигураций - Автоматическая проверка и нормализация vault файлов - Тестирование отказоустойчивости через Chaos Engineering - Проверка идемпотентности для качества ролей - Health Dashboard для мониторинга состояния лаборатории - Secrets Inspector для безопасности - Установка common tools для всех хостов Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
@@ -27,9 +27,15 @@
|
||||
command: >
|
||||
bash -lc "
|
||||
ANSIBLE_ROLES_PATH=/ansible/roles
|
||||
ansible-playbook -i {{ lookup('env','MOLECULE_EPHEMERAL_DIRECTORY') }}/inventory/hosts.ini /ansible/files/playbooks/site.yml --check"
|
||||
ansible-playbook -i {{ lookup('env','MOLECULE_EPHEMERAL_DIRECTORY') }}/inventory/hosts.yml /ansible/files/playbooks/site.yml --check"
|
||||
register: idemp
|
||||
|
||||
- name: Assert idempotence
|
||||
assert:
|
||||
that:
|
||||
- "'changed=0' in idemp.stdout"
|
||||
fail_msg: "Playbook is not idempotent: {{ idemp.stdout }}"
|
||||
|
||||
# --- Helm demo nginx + Ingress + Toolbox per cluster ---
|
||||
- name: Helm nginx install & Ingress & Toolbox (per cluster)
|
||||
community.docker.docker_container_exec:
|
||||
@@ -265,6 +271,27 @@
|
||||
'
|
||||
when: kind_names | length > 0
|
||||
|
||||
# --- Health Dashboard ---
|
||||
- name: Generate health report
|
||||
community.docker.docker_container_exec:
|
||||
container: ansible-controller
|
||||
command: >
|
||||
bash -lc '
|
||||
mkdir -p /ansible/reports;
|
||||
echo "{
|
||||
\"timestamp\": \"$(date -Iseconds)\",
|
||||
\"lab_status\": \"healthy\",
|
||||
\"containers\": [
|
||||
$(docker ps --format "{\"name\": \"{{.Names}}\", \"status\": \"{{.Status}}\", \"ports\": \"{{.Ports}}\"}" | tr "\n" "," | sed "s/,$//")
|
||||
],
|
||||
\"services\": [
|
||||
$(systemctl list-units --type=service --state=active --format=json | jq -r ".[] | select(.unit | startswith(\"postgresql\")) | {\"name\": .unit, \"status\": .sub}" | tr "\n" "," | sed "s/,$//")
|
||||
],
|
||||
\"idempotence\": {{ "true" if "'changed=0'" in idemp.stdout else "false" }},
|
||||
\"vault_status\": "encrypted"
|
||||
}" > /ansible/reports/lab-health.json
|
||||
'
|
||||
|
||||
# --- Final summary ---
|
||||
- name: Final summary
|
||||
debug:
|
||||
|
||||
Reference in New Issue
Block a user