|
|
## Estructura de variables utilizadas
|
|
## Estructura de variables utilizadas
|
|
|
|
|
|
|
|
|
### Preámbulo: las variables en Ansible
|
|
|
|
|
|
|
|
Para entender el funcionamiento de las variables en Ansible, conviene entender que estamos en un entorno más declarativo que procedural. La definición de una variable es más una "fórmula" que una "función": cada variable se calcula al momento de ser llamada en un playbook, tomando los valores de variables de las cuales depende, tal cual definidas en el "lugar" más cercano en [orden de precedencia](https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#ansible-variable-precedence).
|
|
|
|
|
|
|
|
Al declarar una variable, no es que ésta tome un valor cuando "el programa pasa por ahí", que lo conserve y que eventualmente luego pueda ser modificado. Es al momento de usar una variable que se le calcula su valor para esa utilización. (Una consecuencia importante es que no se puede a definir una variable en función de sí misma, directa o indirectamente. Da siempre una referencia circular inválida).
|
|
|
|
|
|
|
|
Este funcionamiento tuvo particular incidencia en el diseño de las variables de gestión de usuarixs, que surgió progresivamente. Y por ende conviene empezar por recordarlo a la hora de documentarlo para entendimiento.
|
|
|
|
|
|
|
### Usuarios "físicos"
|
|
### Usuarios "físicos"
|
|
|
|
|
|
|
|
Las variables que describen absolutamente (*nickname*, nombre completo, contraseña, llaves SSH) los usuarios "físicos" que se manejan y los grupos que integran, se definen globalmente en [group_vars/all/vars/10_usuarios_y_grupos.yml](https://git.interior.edu.uy/adminsys/config/blob/master/group_vars/all/vars/10_usuarios_y_grupos.yml)
|
|
Las variables que describen absolutamente (*nickname*, nombre completo, contraseña, llaves SSH) los usuarios "físicos" que se manejan y los grupos que integran, se definen globalmente en [group_vars/all/vars/10_usuarios_y_grupos.yml](https://git.interior.edu.uy/adminsys/config/blob/master/group_vars/all/vars/10_usuarios_y_grupos.yml)
|
| ... | @@ -75,7 +83,7 @@ cielito_all_usuarios_deploy: |
... | @@ -75,7 +83,7 @@ cielito_all_usuarios_deploy: |
|
|
|
|
|
|
|
### lista_de_usuarios_para_claves_deploy
|
|
### lista_de_usuarios_para_claves_deploy
|
|
|
|
|
|
|
|
Es una lista simple donde se indica solamente el `username` (referenciando a `cielito_all_usuarios`) de los usuarios que tendrán sus llaves SSH en las *authorized_keys* de los `cielito_all_usuarios_deploy`:
|
|
Es una lista simple donde se indica solamente el `username` (referenciando a `cielito_all_usuarios`) de cada usuario que tendrá sus llaves SSH en las *authorized_keys* de los `cielito_all_usuarios_deploy`:
|
|
|
```yaml
|
|
```yaml
|
|
|
lista_de_usuarios:
|
|
lista_de_usuarios:
|
|
|
- user1
|
|
- user1
|
| ... | @@ -86,12 +94,12 @@ lista_de_usuarios: |
... | @@ -86,12 +94,12 @@ lista_de_usuarios: |
|
|
|
|
|
|
|
### lista_de_usuarios_deploy
|
|
### lista_de_usuarios_deploy
|
|
|
|
|
|
|
|
Es una lista simple donde se indica solamente el `username` (referenciando a `cielito_all_usuarios_deploy`) de los usuarios que finalmente se "pasarán" al role `acceso_deploy`:
|
|
Es una lista simple donde se indica solamente el `username` (referenciando a `cielito_all_usuarios_deploy`) de cada usuario que finalmente se "pasará" al role `acceso_deploy`:
|
|
|
```yaml
|
|
```yaml
|
|
|
lista_de_usuarios_deploy:
|
|
lista_de_usuarios_deploy:
|
|
|
- deploy
|
|
- deploy
|
|
|
```
|
|
```
|
|
|
> Por defecto es solo el usuario `deploy`
|
|
> Por omisión es sólo el usuario `deploy`
|
|
|
|
|
|
|
|
Sobre la base de `lista_de_usuarios_deploy` se determinará el subconjunto de usuarios que efectivamente utilizará el role `acceso_deploy`
|
|
Sobre la base de `lista_de_usuarios_deploy` se determinará el subconjunto de usuarios que efectivamente utilizará el role `acceso_deploy`
|
|
|
```yaml
|
|
```yaml
|
| ... | @@ -101,15 +109,15 @@ usuarios_deploy: "{{ cielito_all_usuarios_deploy | json_query( query_usuarios_de |
... | @@ -101,15 +109,15 @@ usuarios_deploy: "{{ cielito_all_usuarios_deploy | json_query( query_usuarios_de |
|
|
|
|
|
|
|
### lista_de_usuarios
|
|
### lista_de_usuarios
|
|
|
|
|
|
|
|
Es una lista simple donde se indica solamente el `username` (referenciando a `cielito_all_usuarios`) de los usuarios a los que se le creará una cuenta *unix* en el sistema
|
|
Es una lista simple donde se indica solamente el `username` (referenciando a `cielito_all_usuarios`) de cada usuario al que se le creará una cuenta *unix* en el sistema
|
|
|
```yaml
|
|
```yaml
|
|
|
lista_de_usuarios:
|
|
lista_de_usuarios:
|
|
|
- user1
|
|
- user1
|
|
|
- user2
|
|
- user2
|
|
|
```
|
|
```
|
|
|
> Por defecto será la lista de miembros del grupo *adminsys* definida globalmente en `cielito_all_os_grupos`
|
|
> Por omisión será la lista de miembros del grupo *adminsys* definida globalmente en `cielito_all_os_grupos`
|
|
|
|
|
|
|
|
Sobre la base de `lista_de_usuarios`, se filtrán los usuarios con todos sus datos de referencia (*username*, *name*, *authorized_keys*, *password*) y se definirá la variable `usuarios`, que es la que finalmente se "pasa" al role `users`
|
|
Sobre la base de `lista_de_usuarios`, se filtrarán los usuarios con todos sus datos de referencia (*username*, *name*, *authorized_keys*, *password*) y se definirá la variable `usuarios`, que es la que finalmente se "pasa" al role `users`
|
|
|
```yaml
|
|
```yaml
|
|
|
query_usuarios: '[?contains(`{{ lista_de_usuarios | flatten | to_json }}`, username)]'
|
|
query_usuarios: '[?contains(`{{ lista_de_usuarios | flatten | to_json }}`, username)]'
|
|
|
usuarios: "{{ cielito_all_usuarios | json_query( query_usuarios ) }}"
|
|
usuarios: "{{ cielito_all_usuarios | json_query( query_usuarios ) }}"
|
| ... | @@ -123,7 +131,7 @@ Es una lista compleja que define el nombre del grupo *unix* a crear, el modo de |
... | @@ -123,7 +131,7 @@ Es una lista compleja que define el nombre del grupo *unix* a crear, el modo de |
|
|
os_grupos: "{{ cielito_all_os_grupos }}"
|
|
os_grupos: "{{ cielito_all_os_grupos }}"
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
> Por defecto contendrá `cielito_all_os_grupos` tal cual
|
|
> Por omisión contendrá `cielito_all_os_grupos` tal cual
|
|
|
|
|
|
|
|
Pero naturalmente, se puede sobreescrir indicando un subconjunto:
|
|
Pero naturalmente, se puede sobreescrir indicando un subconjunto:
|
|
|
```yaml
|
|
```yaml
|
| ... | @@ -139,4 +147,3 @@ os_grupos: |
... | @@ -139,4 +147,3 @@ os_grupos: |
|
|
- user3
|
|
- user3
|
|
|
sodoers: with-password
|
|
sodoers: with-password
|
|
|
``` |
|
``` |
|
|
|
|
|