Investigación sobre granjas de dispositivos y automatización completa para levantar un laboratorio Android sobre un chasis de blades Debian. Conclusión que ordena el repositorio: el cuello de botella nunca fue el cómputo sino la identidad. Desde que la atestación de dispositivo pasó de estadística a criptográfica, un servidor no puede hacerse pasar por un teléfono — le falta una clave grabada en fábrica que ningún software produce. Contenido: - 01_investigacion/ — capa de identidad (verificación telefónica, eSIM, reputación de IP, atestación por hardware, correlación entre cuentas), mercado y players, stack técnico, marco legal en la UE - 02_device_lab/ansible/ — Ansible para 16 blades: preflight de solo lectura que identifica el hardware por DMI, despliegue de redroid en Docker y control de flota por adb. Solo ansible.builtin, sin colecciones externas - docs/ — requisitos, costes y repaso de seguridad con 11 hallazgos - 03_charla/ — guion para HackMadrid / Hackmeeting València Estado: la automatización está escrita pero SIN ejecutar contra hardware. YAML validado, plantillas renderizadas en ambos modos de red y fleet.sh comprobado con bash -n. El modelo de blade sigue sin confirmar.
48 lines
1.5 KiB
YAML
48 lines
1.5 KiB
YAML
---
|
|
# DESTRUCTIVO. Para y borra los contenedores Android.
|
|
#
|
|
# ansible-playbook playbooks/destroy.yml -e confirmar=si
|
|
#
|
|
# Por defecto conserva los volúmenes /data (el estado de cada Android).
|
|
# Para borrarlos también — esto no tiene vuelta atrás:
|
|
#
|
|
# ansible-playbook playbooks/destroy.yml -e confirmar=si -e borrar_datos=si
|
|
|
|
- name: Desmontar la flota Android
|
|
hosts: redroid_nodes
|
|
gather_facts: false
|
|
vars:
|
|
confirmar: "no"
|
|
borrar_datos: "no"
|
|
tasks:
|
|
|
|
- name: Exigir confirmación explícita
|
|
ansible.builtin.assert:
|
|
that: confirmar == "si"
|
|
fail_msg: >-
|
|
Esto para y borra los contenedores Android de {{ inventory_hostname }}.
|
|
Si es lo que quieres, relanza con -e confirmar=si
|
|
|
|
- name: Comprobar que hay un compose desplegado
|
|
ansible.builtin.stat:
|
|
path: "{{ redroid_base_dir }}/docker-compose.yml"
|
|
register: destroy_compose
|
|
|
|
- name: Parar y eliminar los contenedores
|
|
ansible.builtin.command:
|
|
cmd: docker compose down
|
|
chdir: "{{ redroid_base_dir }}"
|
|
when: destroy_compose.stat.exists
|
|
changed_when: true
|
|
|
|
- name: Borrar los volúmenes /data
|
|
ansible.builtin.file:
|
|
path: "{{ redroid_base_dir }}/data"
|
|
state: absent
|
|
when: borrar_datos == "si"
|
|
|
|
- name: Qué ha quedado
|
|
ansible.builtin.debug:
|
|
msg: >-
|
|
{{ inventory_hostname }}: contenedores eliminados.
|
|
Datos {{ 'BORRADOS' if borrar_datos == 'si' else 'conservados en ' ~ redroid_base_dir ~ '/data' }}.
|