Playbook para provisionar servidores MS-Windows

Playbook para provisionar servidores MS-Windows

Playbook para provisionar servidores Windows

El siguiente playbook es una implementación para servidores Windows que permite aprovisionar usuarios y grupos para un entorno standalone. Se realizan otras tareas en la corrida para poder implementar software y actualizar el sistema operativo; en resumen haremos lo siguiente.

  • Crear un grupo
  • Crear un usuario
  • Copiar archivos
  • Instalar componentes de software desde archivos .msi o desde repositorios externos.
  • Instalar IIS
  • Actualizar el sistema operativo

Con Ansible, podemos generar tareas más complejas que nos sirvan para automatizar de manera eficiente el proceso de provisioning de servidores desde un único punto de administración, permitiendo de esta forma, ahorrar costos operativos.

En archivo “complex.yaml” ejecuta una conexión local para poder generar un archivo temporario; luego se cambia el flujo de trabajo hacia los servidores de la tab “RedHat” del archivo /etc/ansible/hosts para efectivamente realizar las tareas en dichos servidores.

El siguiente es el contenido del playbook que diseñamos.

---
- name: All windows tasks
 hosts: Windows
 gather_facts: false
 vars:
 ansible_ssh_user: uniqs
 ansible_ssh_pass: uniqs
 ansible_ssh_port: 5986
 ansible_connection: winrm



 tasks:
 - name: Add Group
 win_group:
 name: deploy
 description: Deploy Group
 state: present

 - name: Add User
 win_user:
 name: ansible
 password: "@ns1bl3"
 groups: ["Users,deploy"]

 - name: Copy files
 win_copy: src=MSIs dest=c:/temp/

 - name: Install msi package
 win_msi: path=C:\\temp\MSIs\winzip195mul-32.msi wait=true

 - name: Install Visual C from URL
 win_package:
 name="Microsoft Visual C"
 path="http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe"
 Product_Id="{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}"
 Arguments="/install /passive /norestart"

 - name: Install Windows role (IIS)
 win_feature:
 name: "Web-Server"
 state: present
 restart: yes
 include_sub_features: yes
 include_management_tools: yes

 - name: Update Windows (Security, Critial, Rollups)
 win_updates:
 category_names: ['SecurityUpdates','CriticalUpdates','UpdateRollups']

Ahora veamos la ejecución:

$ ansible-playbook complex.yaml --step

PLAY [All windows tasks] *******************************************************
Perform task: TASK: Add Group (y/n/c): n

Perform task: TASK: Add Group (y/n/c): *****************************************
Perform task: TASK: Add User (y/n/c): n

Perform task: TASK: Add User (y/n/c): ******************************************
Perform task: TASK: Copy files (y/n/c): n

Perform task: TASK: Copy files (y/n/c): ****************************************
Perform task: TASK: Install msi package (y/n/c): n

Perform task: TASK: Install msi package (y/n/c): *******************************
Perform task: TASK: Install Visual C from URL (y/n/c): n

Perform task: TASK: Install Visual C from URL (y/n/c): *************************
Perform task: TASK: Install Windows role (IIS) (y/n/c): n

Perform task: TASK: Install Windows role (IIS) (y/n/c): ************************
Perform task: TASK: Update Windows (Security, Critial, Rollups) (y/n/c): y

Perform task: TASK: Update Windows (Security, Critial, Rollups) (y/n/c): *******

TASK [Update Windows (Security, Critial, Rollups)] *****************************
ok: [demo5]

PLAY RECAP *********************************************************************
demo5 : ok=1 changed=0 unreachable=0 failed=0

Este playbook puede ser de mucha utilidad para aquellos administradores que necesiten realizar tareas reiterativas sobre servidores Windows, permitiendo ahorrar tiempo y dinero en actividades que son facilmente programables.

El siguiente video es un resumen de la ejecución del playbook:

Alternativamente, podemos integrar el flujo de aprovisionamiento dando de alta objetos en Microsoft Active Directory en lugar de hacerlo en modalidad standalone (http://docs.ansible.com/ansible/intro_windows.html#active-directory-support).

Por Pablo Calvo.

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *