Pular para o conteúdo principal

Como Gerir Características do Windows com Ansible

· Leitura de 5 minutos

Olá a todos, o objectivo deste post é explicar como gerir as funcionalidades do Windows utilizando os Ansible playbooks;

Para começar, vamos tentar compreender o que é o quê. Queremos instalar uma funcionalidade de janelas na nossa máquina/vm e queremos fazê-lo utilizando a possibilidade de automatizar todas as instalações e add-ons.

Para o fazer utilizando o Ansible, precisamos de utilizar módulos Ansible! E, neste caso, queremos usar win_feature módulo. Mas o que são módulos? Vamos ver:

Módulos

Os módulos possíveis são reutilizáveis, scripts autônomos que podem ser utilizados pela API Possível, ou pelos programas de livros anáteis ou de livros-jogadores possíveis.

Podemos utilizar módulos para instalar, copiar, mover, descarregar e muitas outras acções. Há também muitos módulos diferentes, e digo muito!

Ansible tem módulos para Cloud, Database, Network, Monitoring, Windows, quase tudo o que se possa imaginar!

Mas para este post vamos focar apenas num módulo específico do Windows fornecido por Ansible que é win_feature módulo.

NOTE* que isto é apenas uma rápida visão geral do que são módulos! Pode consultar a documentação oficial do Ansible em Módulos para ter uma análise mais aprofundada.

Funcionalidade_vencedora

Este módulo instala ou desinstala funções ou funcionalidades do Windows Server.

Mas, para saber qual a funcionalidade que queremos instalar, precisamos de encontrar o seu nome. E para isso usaremos um comando que listará todas as funcionalidades com a informação adicionada, se estão instaladas ou não.

Por isso, escreva no seu terminal o seguinte:

Get-WindowsFeature

Isto deve devolver uma lista completa das características:

PS C:\> Get-WindowsFeature

Display Name Name Install State
------------ ---- -------------
[ ] Active Directory Certificate Services AD-Certificate Available
[ ] Certification Authority ADCS-Cert-Authority Available
[ ] Certificate Enrollment Policy Web Service ADCS-Enroll-Web-Pol Available
[ ] Certificate Enrollment Web Service ADCS-Enroll-Web-Svc Available
[ ] Certification Authority Web Enrollment ADCS-Web-Enrollment Available
[ ] Network Device Enrollment Service ADCS-Device-Enrollment Available
[ ] Online Responder ADCS-Online-Cert Available

(...)

[X] Web Server (IIS) Web-Server Installed
[X] Web Server Web-WebServer Installed
[X] Common HTTP Features Web-Common-Http Installed
[X] Default Document Web-Default-Doc Installed
[X] Directory Browsing Web-Dir-Browsing Installed
[X] HTTP Errors Web-Http-Errors Installed
[X] Static Content Web-Static-Content Installed
[X] HTTP Redirection Web-Http-Redirect Installed
[X] WebDAV Publishing Web-DAV-Publishing Installed
[X] Health and Diagnostics Web-Health Installed
[X] HTTP Logging Web-Http-Logging Installed
[X] Custom Logging Web-Custom-Logging Installed
[X] Logging Tools Web-Log-Libraries Installed
[X] ODBC Logging Web-ODBC-Logging Installed
[X] Request Monitor Web-Request-Monitor Installed
[X] Tracing Web-Http-Tracing Installed
[X] Performance Web-Performance Installed
[X] Static Content Compression Web-Stat-Compression Installed
[X] Dynamic Content Compression Web-Dyn-Compression Installed


(...)

[X] .NET Framework 4.7 Features NET-Framework-45-Fea... Installed
[X] .NET Framework 4.7 NET-Framework-45-Core Installed
[ ] ASP.NET 4.7 NET-Framework-45-ASPNET Available
[X] WCF Services NET-WCF-Services45 Installed
[ ] HTTP Activation NET-WCF-HTTP-Activat... Available
[ ] Message Queuing (MSMQ) Activation NET-WCF-MSMQ-Activat... Available
[ ] Named Pipe Activation NET-WCF-Pipe-Activat... Available
[ ] TCP Activation NET-WCF-TCP-Activati... Available
[X] TCP Port Sharing NET-WCF-TCP-PortShar... Installed

(...)

Agora podemos ver uma lista completa de todas as funcionalidades do Windows (no exemplo acima só há algumas seleccionadas) com a informação adicional se estiverem instaladas ou não.

Esta pode ser uma óptima maneira de ver que características precisa de adicionar ao seu livro de jogo.

Agora, deixe-me mostrar-lhe uma forma de descobrir se uma funcionalidade que já conhece o nome está ou não instalada.

Para este caso, vamos procurar a funcionalidade .NET Framework. Iremos verificar o nome correcto da funcionalidade e se está ou não instalada.

Para isso, utilizaremos o comando abaixo:

Get-WindowsFeature | Where-Object {$_. name-match ".Net"} | Format-List Name,DisplayName, Installstate | more

Isto irá devolver o seguinte:

Name         : Print-Internet
DisplayName : Internet Printing
InstallState : Available

Name : Web-Net-Ext
DisplayName : .NET Extensibility 3.5
InstallState : Installed

Name : Web-Net-Ext45
DisplayName : .NET Extensibility 4.7
InstallState : Installed

Name : Web-Asp-Net
DisplayName : ASP.NET 3.5
InstallState : Installed

Name : Web-Asp-Net45
DisplayName : ASP.NET 4.7
InstallState : Installed

Name : NET-Framework-45-ASPNET
DisplayName : ASP.NET 4.7 #As you can see the feature is available, therefore not installed
InstallState : Available

Name : BitLocker-NetworkUnlock
DisplayName : BitLocker Network Unlock
InstallState : Available

Name : Internet-Print-Client
DisplayName : Internet Printing Client
InstallState : Available

Name : Telnet-Client
DisplayName : Telnet Client
InstallState : Available

Name : WAS-NET-Environment
DisplayName : .NET Environment 3.5
InstallState : Available

Name : Wireless-Networking
DisplayName : Wireless LAN Service
InstallState : Available

Agora que confirmamos o nome e o estado de instalação podemos adicionar ao nosso playbook.yaml o módulo win_feature de que falámos anteriormente no post.

Vamos dar uma olhada no playbook.yaml que contém o módulo win_feature*.

---
- name: Install Windows Features
hosts: all
tasks:
- name: Install .Net Framework 4.5
win_feature:
name: NET-Framework-45-ASPNET
state: present

Como pode ver, playbook.yaml instalará a mais recente funcionalidade .Net Framework Windows.

Vamos procurar a funcionalidade .net Framework no nosso terminal e ver o que mudou:

PS C:\> Get-WindowsFeature | Where-Object {$_. name-match "NET-Framework-45-ASPNET"} | Format-List Name,DisplayName, Installstate | more


Name : NET-Framework-45-ASPNET
DisplayName : ASP.NET 4.7
InstallState : Installed

E aí está! Instalámos com sucesso uma funcionalidade de janelas da nossa escolha, usando Livros de Jogar Ansíveis!

Agora, cabe-lhe a si ver qual a funcionalidade Windows que deseja instalar no seu servidor!

Lembre-se que pode fazer um playbook instalando tantas funcionalidades quantas desejar. Espero que este post o ajude a compreender um pouco melhor o módulo win_feature :)