Utilizamos cookies propias y de terceros para hacer funcionar y mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Puede obtener más información visitando nuestra política de cookies.
ANSIBLE - USO DE ROLES
En esta sesión explicamos el uso de roles en Ansible y su estructura
Cargando video...
NOTA: Solo puedes ver una versión limitada del video a baja resolución, si quieres ver la versión completa por favor regístrate y obtén alguno de nuestros planes!
Descripción del Vídeo
Como una buena práctica se creará un archivo que contendrá un blueprint completo de la infraestructura que se desea, sin embargo al momento surgen dos (2) interrogantes:
¿Cómo hacerlo sin perder el control dentro de tanto código?
¿Cómo hacerlo no solo legible sino capaz de compartirlo con otros?
Para ello se sugiere organizar el código de la manera antigua:
Se crearán los roles para cada aplicación que se necesite configurar
Se instalará lo que se necesite
A medida que sea necesario se irán agregando roles.
De manera que la estructura deberá quedar de la siguiente forma:
── roles
│ └── nginx
│ ├── files
│ │ ├── nginx.conf.debian
│ │ └── nginx.conf.redhat
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ ├── configure.yml
│ │ ├── install.yml
│ │ ├── main.yml
│ │ └── service.yml
│ ├── templates
│ │ ├── index.j2
│ │ ├── main.yml
│ │ └── nginx.conf
│ └── vars
├── site.yml
└── www.yml
De acuerdo con lo antes expuesto el ejercicio permitirá realizar la siguiente acción, siguiendo con la estructura del mapa de funcionamiento de ansible:
Instalar un WebServer
Instalar NGINX a través del uso de la paquetería del sistema existente (apt)
Modificar el archivo de configuración (file)
Configurar el nginx.conf, a través del módulo de archivos
Reiniciar el servicio del servidor web (service)
Reiniciar el servicio de Nginx, a través de los módulos del sistema
Copiar un archivo html (file)
Colocar una página Web, a través del módulo de archivos
Para ello el archivo site.yml deberá contener la siguiente información:
---
# site.yml : Este es el del playbook
- include: www.yml
Creando el www.yml
---
- hosts: all
pre_tasks:
- shell: echo 'NGINX":" Comenzando a configurar el web server..'
roles:
- nginx
post_tasks:
- shell: echo 'NGINX":" Terminando de configurar el nginx web server...'
Ahora se creará el despliegue de directorios que permitirá tener una mejora lectura del proyecto
$ mkdir roles/nginx
$ cd roles/nginx
$ mkdir tasks meta files
$ cd tasks
roles/nginx/tasks/
Posteriormente se crea el service.yml
---
- name: start nginx service
service: name=nginx state=started
Ahora se actualiza el archivo main.yml con los playbook ya construidos y se colocan antes de service.yml:
--- l
- include: install.yml
- include: configure.yml
- include: service.yml
Ahora se crea el archivo de configuración “configure.yml”:
---
- name: create default site configurations
copy: src=nginx.conf.redhat dest=/etc/nginx/nginx.conf mode=0644
when: ansible_os_family == "RedHat"
notify:
- restart nginx
- name: create default site configurations
copy: src=nginx.conf.debian dest=/etc/nginx/nginx.conf mode=0644
when: ansible_os_family == "Debian"
notify:
- restart nginx
- name: create home page for default site
template: src=index.j2 dest=/usr/share/nginx/html/index.html
$> cd roles/nginx/files
Se modifican los “nginx.conf[.debian | .redhat]” , son producto de instalaciones limpias previas:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
roles/nginx/handlers
Seguidamente se configura el handler en main.yml:
---
- name: restart nginx service
service: name=nginx state=restarted
roles/nginx/meta
Ahora se configura el main.yml:
---
dependencies:
- role: nginx
roles/nginx/templates
Posteriormente se configura el index.j2:
<html>
<body>
<h1> Desplagando Ansible en {{ansible_hostname }} </h1>
<p> Bienvenido al Primer Portal Instalado con Ansible en {{ ansible_distribution }}</p>
</body>
</html>
Posteriormente se configura el main.yml:
---
- name: configure nginx
template: src=index.j2 dest=/usr/share/nginx/html/index.html
También se pudo convertir el archivo “nginx.conf” en un template, que solo modificara dependiendo del sistema operativo, en este solo se modificaría la línea referente al usuario y se reemplazaría con que se muestra a continuación:
{% if ansible_os_family == "RedHat" %}
user nginx ;
{% elif ansible_os_family == "Debian" %}
user www-data ;
{% elfi %}
Rating
Global
comments powered by Disqus