---
# System prepended metadata

title: Alta de centros automáticamente v2

---

# Alta de centros automáticamente v2

## Introducción

A partir de una plantilla crea automáticamente una categoría con grupos, usuarios, escritorios y despliegues.

## Ejecución

Actualmente solamente se encuentra en la rama `yml_tests2`.

Para ejecutar el script hay que ir a la carpeta dentro del repositorio `isarvdi/testing/automate/src` y ejecutar el siguiente comando:

```bash
export HOST=ejemplo.com; export API_ISARDVDI_SECRET=''; python3 execute.py template.yaml
```

- **"HOST"** es el dominio donde crearemos los usuarios y escritorios
- **"API_ISARDVDI_SECRET"** el secret de la API, que se puede encontrar en el archivo 'isardvdi.cfg' o en la página de gestión de usuarios de webapp.
- **"template.yaml"** es el nombre del archivo YAML dónde están los datos necesarios para crear los usuarios y escritorios

`cat isardvdi.cfg | grep API_ISARDVDI_SECRET`

## YAML plantilla

Ha de tener una estructura así:

```yaml
name: institut  # afecta al nombre del CSV donde se guardarán las contraseñas y
                #  de los usuarios nuevos
description: Will create demo items
reset_when_finish: false # si su valor es true, se borrará todo lo que se
                         # haya creado en el script. Ideal para hacer pruebas
private_downloads_code: Test
steps: # se ejecutará cada paso en orden numérico
  1:
    categories: # se especifica que se creará/borrará/editará
      - institut:
          name: institut
          description: institut
          frontend_show: true
          action: add # ahora mismo sólo funciona add
  2:
    groups:
      - grupo01:
          name: grupo01
          description: institut
          parent: institut
          action: add
      - grupo02:
          name: grupo02
          description: institut
          parent: institut
          action: add
  3:
    users:
      - gestor:
          name: manager
          username: manager
          role: manager
          provider: local
          category: institut
          group: grupo01
          password: false # si su valor es false, se crea una contraseña aleatoria.
                          # Ésta se puede comprobar más en el CSV que se creará
                          # y también se imprimirá por pantalla al momento de
                          # crearlo. Si su valor es true se crearán todos los usuarios
                          # con esa contraseña
          increment: 5 # crea usuarios con el nombre y números del 1 al 5
                       # (5 usuarios en total) p. ej. user1, user2, user3...
          action: add
  4:
    desktops:
      - windows10dt:
          name: "Windows 10"
          description: ""
          template_id: _local-default-admin-admin-windows
          action: add
          category: institut
          groups: [grupo01, grupo02] # grupos donde se crearán todos los escritorios.
                                     # También se puede especificar categoría y rol
          username: manager
          direct_viewer: true # si su valor es true, retornará un CSV con la URL
                              # al visor directo de cada escritorio nuevo

   5:
     deployments: # disponible próximamente
       - windows10dp:
           name: "Despliegue Windows 10"
           description: ""
           template_id: _local-default-admin-admin-windows
           user_id: docente # el dueño del despliegue (un profesor)
           category: institut
           desktop_name: Windows 10
           visible: true
           group: grupo01
```

## data_iterator.py

Sirve para generar varios yamls de varias categorías a partir de la misma plantilla. De momento los parámetros se pasan dentro del código.

En estos parámetros se indica un archivo JSON con la lista de categorías a crear y el YAML de plantilla. Estos se guardan en una carpeta aparte.

## out_csv

Es una carpeta que se genera a la hora de crear usuarios o escritorios con visor directo


### users/

Aquí se guardan los CSV dónde se especifica nombre, grupo, categoría y contraseña de cada usuario creado.

En el nombre del archivo se especifica la categoría/centro a la que pertenecen y la hora a la que se ejecutó el script

Estructura del CSV:

| name    | group   | category | password |
| ------- | ------- | -------- | -------- |
| docente | grupo01 | institut | hola123  |
| manager | grupo01 | institut | 1234     |

### viewers/

Aquí se guardan los CSV dódne se especifica el nombre del escritorio, el usuario al que pertenece y un link al visor directo. Sólo se creará si se especifica en el YAML.

Estructura del CSV:


| desktop_id         | desktop_name | user    | category | url                               |
| ------------------ | ------------ | ------- | -------- | --------------------------------- |
| ccb4a517-96ae-451c | Windows10    | docente | institut | https:/ejemplo.com/vw/nNCNm6Lr4zL |
| f68d7a27-e545-476d | ubuntu20.04  | manager | institut | https:/ejemplo.com/vw/4Opva9a9g   |


## Pruebas en un servidor sin certificado

Al hacer pruebas en local es posible que dé un problema de certificado y no deje ejecutar el script.

Para ello hay que arrancar el docker de automate  en la carpeta `opt/isard/src/testing/automate/` y entrar en la terminal del docker:

```bash
docker-compose up -d
docker exec -ti isard-automate /bin/sh
```

Ejecutar el mismo comando:

```bash
export HOST=ejemplo.com; export API_ISARDVDI_SECRET=''; python3 execute.py template.yaml
```

**IMPORTANTE**: No funciona si se escribe 'localhost' o '127.0.0.1' como HOST en el caso de una instalación local, ya que *localhost* es la IP del docker y no de nuestra máquina. En su lugar hay que escribir la IP local de la máquina

## Troubleshooting

#### ERROR: not enough access rights for this template

*Compartir la plantilla deseada con los usuarios dueños del nuevo escritorio
