informatica:ciberseguridad:cursos:curso_ansible_automatizacion_it:conceptos_avanzados
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:ciberseguridad:cursos:curso_ansible_automatizacion_it:conceptos_avanzados [2023/05/08 20:31] – tempwin | informatica:ciberseguridad:cursos:curso_ansible_automatizacion_it:conceptos_avanzados [2023/05/08 21:32] (actual) – [Templates I] tempwin | ||
|---|---|---|---|
| Línea 630: | Línea 630: | ||
| </ | </ | ||
| - | Lo ejecutamos añadiendo la opción '' | + | Lo ejecutamos añadiendo la opción '' |
| < | < | ||
| Línea 721: | Línea 721: | ||
| <WRAP center round info 60%> | <WRAP center round info 60%> | ||
| - | Se puede probar jinga online por ejemplo desde este [[http:// | + | Se puede probar jinga online por ejemplo desde este [[http:// |
| </ | </ | ||
| Línea 1492: | Línea 1492: | ||
| Si vamos al equipo/s destino, se habrían creado los usuarios '' | Si vamos al equipo/s destino, se habrían creado los usuarios '' | ||
| + | Si quisiéramos eliminar los usarios, cambiaríamos el valor de '' | ||
| + | |||
| + | <code yaml> | ||
| + | (...) | ||
| + | - name: crear usuarios | ||
| + | user: | ||
| + | name: "{{ item.name }}" | ||
| + | state: absent | ||
| + | groups: "{{ item.groups }}" | ||
| + | loop: | ||
| + | - { name: ' | ||
| + | - { name: ' | ||
| + | (...) | ||
| + | </ | ||
| ===== Qué son los Roles en Ansible ===== | ===== Qué son los Roles en Ansible ===== | ||
| + | Los roles permiten organizar, paquetizar y reusar nuestro código de forma más práctica. | ||
| + | |||
| + | Tendríamos una estructura de carpetas donde incluiremos los roles que queramos. | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| ===== Creando nuestro primer Rol ===== | ===== Creando nuestro primer Rol ===== | ||
| + | |||
| + | Crearemos la carpeta principal '' | ||
| + | |||
| + | < | ||
| + | mkdir roles | ||
| + | </ | ||
| + | |||
| + | Dentro de ella, vamos a crear el rol '' | ||
| + | |||
| + | < | ||
| + | mkdir nginx | ||
| + | </ | ||
| + | |||
| + | Dentro de '' | ||
| + | |||
| + | < | ||
| + | mkdir defaults files handlers tasks templates | ||
| + | </ | ||
| + | |||
| + | Por tanto, si nos vamos al directorio padre, tendríamos la siguiente estructura de carpetas: | ||
| + | |||
| + | < | ||
| + | ├── roles | ||
| + | │ └── nginx | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | </ | ||
| + | |||
| + | Partimos del siguiente playbook: | ||
| + | <code yaml> | ||
| + | # Este es nuestro primer playbook | ||
| + | - name: primera play | ||
| + | become: yes | ||
| + | hosts: servidor_web | ||
| + | tags: primera_play | ||
| + | gather_facts: | ||
| + | vars: | ||
| + | state: present | ||
| + | | ||
| + | tasks: | ||
| + | |||
| + | - name: instalar nginx | ||
| + | apt: name=nginx state=" | ||
| + | notify: reiniciar nginx # Mismo nombre que el handler | ||
| + | | ||
| + | - name: crear index | ||
| + | template: | ||
| + | src: template_ejemplo_3.j2 | ||
| + | dest: / | ||
| + | mode: 0755 | ||
| + | |||
| + | - name: copiar script | ||
| + | copy: | ||
| + | src: simple_script.sh | ||
| + | dest: / | ||
| + | |||
| + | | ||
| + | - name: reiniciar nginx | ||
| + | | ||
| + | name: nginx | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Vamos a mover los distintos elemenos de ese playbooks a donde deben estar. Por ejemplo, las tareas irán a '' | ||
| + | |||
| + | <code yaml> | ||
| + | --- | ||
| + | - name: instalar nginx | ||
| + | apt: name=nginx state=" | ||
| + | notify: reiniciar nginx # Mismo nombre que el handler | ||
| + | | ||
| + | - name: crear index | ||
| + | template: | ||
| + | src: template_ejemplo_3.j2 | ||
| + | dest: / | ||
| + | mode: 0755 | ||
| + | |||
| + | - name: copiar script | ||
| + | copy: | ||
| + | src: simple_script.sh | ||
| + | dest: / | ||
| + | </ | ||
| + | |||
| + | Colocaremos ahora el template que usamos en el Playbook ('' | ||
| + | |||
| + | Hacemos lo mismo con el script '' | ||
| + | |||
| + | Ahora es el turno de los handlers. Añadiremos un fichero '' | ||
| + | |||
| + | <code yaml> | ||
| + | --- | ||
| + | - name: reiniciar nginx | ||
| + | service: | ||
| + | name: nginx | ||
| + | state: restarted | ||
| + | </ | ||
| + | |||
| + | Nos quedan las variables, crearemos el fichero '' | ||
| + | |||
| + | <code yaml> | ||
| + | --- | ||
| + | state: present | ||
| + | </ | ||
| + | |||
| + | Nos falta incluir este nuevo rol en algún sitio. En la carpeta raíz, creamos uno llamado, por ejemplo, '' | ||
| + | |||
| + | <code yaml> | ||
| + | --- | ||
| + | - hosts: web # Solo aplicamos a uno de los hosts | ||
| + | become: yes | ||
| + | roles: | ||
| + | - nginx # Rol que vamos a incluir | ||
| + | </ | ||
| + | |||
| + | Algo tarde, pero no es mal momento para comentar que podemos crear un fichero de configuración de Ansible: '' | ||
| + | |||
| + | < | ||
| + | [defaults] | ||
| + | inventory = / | ||
| + | remote_user = ansible | ||
| + | private_key_file = / | ||
| + | </ | ||
| + | |||
| + | Ahora es más cómodo lanzar el playbook de la siguiente manera: | ||
| + | |||
| + | < | ||
| + | ansible-playbook nginx_role.yaml -vv | ||
| + | </ | ||
| ===== Recursos ===== | ===== Recursos ===== | ||
informatica/ciberseguridad/cursos/curso_ansible_automatizacion_it/conceptos_avanzados.1683570714.txt.gz · Última modificación: por tempwin
