¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Ansible
  3. Administración en Windows
Extrait - Ansible Administre la configuración de sus servidores y el despliegue de sus aplicaciones
Extractos del libro
Ansible Administre la configuración de sus servidores y el despliegue de sus aplicaciones Volver a la página de compra del libro

Administración en Windows

Objetivos del capítulo y requisitos

1. Contexto y requisitos

En este capítulo se tratará la administración y la gestión de máquinas Windows usando Ansible.

Verá cómo poner en práctica la comunicación en una máquina. También estudiará la instalación de paquetes usando Chocolatey, la implementación de servicios y la gestión de reglas del firewall.

Los ejemplos que se tratarán en este capítulo partirán de la base de que usted tiene permisos de administrador en las máquinas Windows.

2. Archivos para descargar

Puede encontrar los ejemplos en el archivo comprimido capitulo-05.tar.gz que se encuentra en la página del libro en el sitio de Ediciones ENI.

Ansible y las máquinas Windows

1. Contexto

Cuando empezó a concebirse Ansible, la vocación principal del software era administrar servidores Unix/Linux. Para ello, el protocolo utilizado esencialmente para la comunicación era SSH.

Sin embargo, en la versión 1.7 de Ansible se incorporó un principio de soporte de máquinas Windows. Desde aquel momento, el soporte ha ido mejorando versión tras versión.

Los ejemplos que se mostrarán se desarrollarán en un servidor Windows Server 2016 cuyo nombre de host será windows1.

2. Requisitos

Para asegurar la gestión de las máquinas Windows con Ansible se necesita la dependencia Python pywinrm. Esta se instala con el comando siguiente:

pip3 install pywinrm 

No tendrá que instalar ninguna dependencia en el servidor Windows (el intérprete de Python no será necesario). De hecho, Ansible utiliza el lenguaje PowerShell para gestionar las máquinas Windows. Para ello, es necesario disponer de, al menos, la versión 3 de PowerShell.

Necesitará una cuenta de usuario técnico para poder conectarse a las máquinas Windows.

3. Configuración de la máquina

Tendrá que realizar algunas operaciones para configurar la máquina antes de administrarla con Ansible.

Debe descargar el script (ConfigureRemotingForAnsible.ps1) que está disponible en la ubicación siguiente: https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

Puede obtener este archivo creando un script PowerShell.

He aquí un ejemplo de script que realizará estas operaciones:

$url = "https://raw.githubusercontent.com/ansible/ansible/devel/  
examples/scripts/ConfigureRemotingForAnsible.ps1" 
$file = "$env:temp\ConfigureRemotingForAnsible.ps1" ...

Gestión de servicio Windows

1. Contexto

Ya se ha estudiado la gestión de las máquinas anteriormente así como la instalación de paquetes. Ahora, el lector va a enfrentarse a la gestión completa de un servicio (instalación y gestión del inicio).

El ejemplo se basa en la instalación de dos componentes: Prometheus y Grafana. Esos programas sirven para monitorear el sistema y las aplicaciones, y están disponibles bajo la forma de un paquete Chocolatey.

2. Instalación de Prometheus

Prometheus es un programa de software libre que permite monitorear un conjunto de elementos y avisar en el caso de un fallo en función de la normas establecidas. Su funcionamiento se basa en la consulta a intervalos regulares de puntos de entrada dedicados. Estos puntos de entrada ponen a disposición indicadores del estado de salud de una aplicación o de un componente material, y se pueden consultar desde el motor de base de datos de Prometheus.

Este motor de base de datos se basa en la noción de series temporales y se le puede interrogar usando un lenguaje específico: PromQL.

El proyecto está escrito en Go y su código está disponible en GitHub bajo licencia Apache 2. Se trata también de un proyecto mantenido por la organización CNCF (Cloud Native Computing Foundation) responsable, entre otros proyectos, del desarrollo de Kubernetes.

3. Creación del playbook

Con el objetivo de proceder a la instalación de Prometheus, el playbook Ansible va a tener que gestionar las operaciones siguientes:

  • Instalación del paquete Chocolatey prometheus.

  • Apertura del puerto TCP/9090 en el firewall de la máquina.

  • Inicio y activación del servicio en la máquina.

Otro detalle: la recogida de información de las características de la máquina no es necesaria. La opción gather_facts tendrá el valor no.

Desde el punto de vista de la instalación, no habrá ningún cambio con respecto a la instalación anterior, aparte del nombre del paquete (la opción name llevará el valor prometheus).

La modificación del firewall se hará gracias al módulo win_firewall_rule y a las opciones siguientes:

  • Campo name seguido del nombre de la regla (Prometheus server)

  • Campo localport seguido del número de puerto que corresponde a Prometheus ("9090")

  • Campo action con el valor allow

  • Campo direction con el valor in

  • Campo protocol con el valor tcp

  • Campo state con el valor present

  • Campo enabled con el valor yes

He aquí la declaración correspondiente:

 name: "Configure firewall for prometheus" 
 win_firewall_rule: 
   name:      "Prometheus server" 
   localport: "9090" 
   action:    allow 
   direction: in 
   protocol:  tcp 
   state:     present 
   enabled:   yes 

La activación del servicio se hará gracias al módulo win_service y las opciones siguientes:

  • Campo name seguido del nombre de servicio (prometheus-service)

  • Campo state con el valor started

  • Campo start_mode con el valor auto

He aquí la declaración correspondiente:

- name: "Activate Prometheus" 
 win_service: 
   name: "prometheus-service" 
   state: started 
   start_mode: auto 

Si tenemos en cuenta todos estos elementos vistos anteriormente, el playbook completo podría escribirse de la siguiente manera:

- name: "Install Prometheus" 
 hosts: all 
 gather_facts: no 
 tasks: 
 
   - name: "Install Prometheus" 
     win_chocolatey: 
       name: "prometheus" 
       state: present 
 
   - name: "Configure firewall for prometheus" 
     win_firewall_rule: 
       name:      "Prometheus server" 
       localport: "9090" 
       action:    allow 
       direction: in 
       protocol:  tcp 
       state:     present 
       enabled:   yes 
 
   - name: "Activate Prometheus" 
     win_service: 
       name: "prometheus-service" 
       state: started 
       start_mode: auto 

Guarde el archivo y llámelo prometheus....

Creación de servicio

1. Instalación de Grafana

a. Presentación de Grafana

Grafana es un programa de visualización de datos. Permite la realización de paneles de control que contienen indicadores o gráficos. Prometheus puede servir como fuente de datos.

b. Creación del playbook

Con el objetivo de proceder a la instalación del paquete Grafana, el playbook de Prometheus va a ser adaptado de la manera siguiente:

  • Cambio de las referencias de Prometheus por Grafana.

  • Cambio del puerto de escucha para pasar del TCP 9090 al TCP 3000 (puerto por defecto de Grafana).

He aquí el playbook que resultará después de estas indicaciones:

- name: "Install Grafana" 
 hosts: all 
 gather_facts: no 
 tasks: 
 
   - name: "Install Grafana" 
     win_chocolatey: 
       name: "grafana" 
       state: present 
 
   - name: "Configure firewall for grafana" 
     win_firewall_rule: 
       name:      "Grafana server" 
       localport: "3000" 
       action:    allow 
       direction: in 
       protocol:  tcp 
       state:     present 
       enabled:   yes 
 
   - name: "Activate Grafana" 
     win_service: 
       name: "grafana-service" 
       state: started 
       start_mode: auto 

Guarde el playbook bajo el nombre grafana.yml.

c. Inicio de la instalación

Retome el comando utilizado para la instalación de Prometheus y remplace el nombre del playbook por el de Grafana.

He aquí el comando que habría que ejecutar:

$ ansible-playbook -i win.yml grafana.yml 

El comando mostrará el resultado siguiente :

PLAY [Install Grafana]  
******************************************* 
 
TASK [Install Grafana]  
******************************************* 
changed: [windows1] 
 
TASK [Configure firewall for grafana]  
**************************** 
changed: [windows1] ...