9 Exemplo de Playbooks Ansible para Administração do Windows

Mostrarei várias operações que um administrador pode executar em um sistema Windows remoto usando o ansible-playbook.


O Ansible é uma das ferramentas DevOps mais usadas no mercado atualmente. Ele fornece vários módulos do Windows usados ​​para configurar e gerenciar o servidor Windows. Suponho que você já tenha o Ansible instalado no Windows a partir do qual deseja gerenciar os servidores Windows.

A seguir, são apresentadas algumas das tarefas comumente usadas pelos administradores do Windows diariamente. Você ficará surpreso ao ver como é fácil administrar o Windows usando o Ansible.

O endereço IP do meu controlador Windows Ansible é 192.168.0.106 e o ​​endereço IP do meu sistema Windows remoto é 192.168.0.102. Antes de começar, certifique-se de executar um módulo win_ping para verificar se você pode se conectar ao servidor remoto do Windows ou não.

[protegido por email] ~
$ ansible win -m win_ping
192.168.0.102 | SUCESSO => {
"mudou": false,
"ping": "pong"
}

Minha conexão com um host remoto foi bem-sucedida.

Então, vamos começar com os Ansible Playbooks …

Copiando arquivos

win_copy é um módulo ansible que copia um arquivo do servidor local para um host remoto do Windows. Vou usar este módulo para copiar um único PDF.

Use o código YAML abaixo, forneça os caminhos de origem e destino.

[protegido por email] ~
$ vi copy.yml

– anfitriões: win

tarefas:

– nome: Copiar arquivo

win_copy:

src: C: \ output.pdf

dest: C: \ ansible_examples \

remote_src: yes

Execute o ansible-playbook para win_copy.

[protegido por email] ~
$ ansible-playbook copy.yml

PLAY [win] ************************************************ **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Copiar arquivo] ********************************************* **************************************************** ******************************
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 2 alterado = 1 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

O arquivo foi copiado com sucesso no local de destino em um sistema Windows remoto.

cópia do windows ansible

Instalar / desinstalar o MSI

Para instalar um aplicativo usando o arquivo MSI, você precisa usar win_get_url para mencionar o caminho do arquivo MSI para fazer o download e, em seguida, usar o módulo win_package para instalá-lo. O estado atual significa que o MSI será instalado na máquina e o aplicativo está no estado atual.

Aqui, estou instalando o Apache.

Código YAML a ser usado:

[protegido por email] ~
$ vi msi.yml

– nome: Instalando o Apache MSI
anfitriões: win

tarefas:
– nome: Faça o download do instalador do Apache
win_get_url:
url: https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi
dest: C: \ exemplos_explicativos \ httpd-2.2.25-win32-x86-no_ssl.msi

– nome: Instale o MSI
win_package:
caminho: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
estado: presente

Execute o ansible-playbook para instalar usando o MSI.

[protegido por email] ~
$ ansible-playbook msi.yml

PLAY [Instalando o Apache MSI] ******************************************** **************************************************** *******************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Faça o download do instalador do Apache] ******************************************* **************************************************** ************
alterado: [192.168.0.102]

TAREFA [Instalar MSI] ********************************************* **************************************************** ****************************
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 3 alterado = 2 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

Agora, vá para o sistema Windows e verifique se o aplicativo apache foi instalado com sucesso.

C: \ Usuários \ geekflare>cd C: \ Arquivos de Programas (x86) \ Apache Software Foundation \ Apache2.2 \ bin
C: \ Arquivos de Programas (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v
Versão do servidor: Apache / 2.2.25 (Win32)
Servidor criado: 10 de julho de 2013 01:52:12

Você também pode instalar aplicativos usando o MSI com argumentos. Abaixo está o mesmo exemplo acima, mas em vez de um estado, estamos usando um argumento de instalação para instalar o apache.

Código YAML a ser usado:

– nome: Instalando o Apache MSI

anfitriões: win

tarefas:

– nome: Faça o download do instalador do Apache

win_get_url:

url: https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi

dest: C: \ exemplos_explicativos \ httpd-2.2.25-win32-x86-no_ssl.msi

– nome: Instale o MSI

win_package:

caminho: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi

argumentos:

– /instalar

– /passiva

– / norestart

Para desinstalar um aplicativo usando o arquivo MSI, você precisa usar o módulo win_package. O estado ausente significa que o aplicativo será desinstalado usando o arquivo MSI.

Aqui, estou desinstalando o Apache.

[protegido por email] ~
$ vi uninstall_msi.yml

– nome: Desinstalando o Apache MSI

anfitriões: win

tarefas:

– nome: Desinstalar MSI

win_package:

caminho: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi

estado: ausente

Execute o ansible-playbook para desinstalar usando o MSI.

[protegido por email] ~
$ ansible-playbook uninstall_msi.yml

PLAY [Desinstalação do Apache MSI] ********************************************** **************************************************** *******************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Desinstalar MSI] *********************************************** **************************************************** **************************
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 2 alterado = 1 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

Agora, se eu verificar a versão do apache, obterá a saída abaixo conforme o aplicativo foi desinstalado.

C: \ Arquivos de Programas (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v ‘httpd’ não é reconhecido como um comando interno ou externo,
programa operável ou arquivo em lote.

Desinstalar software (.EXE)

Você também pode desinstalar o software com o arquivo .exe usando a identificação do produto desse software..

[protegido por email] ~
$ vi uninstall.yml

– anfitriões: win

tarefas:

– nome: desinstalar 7-Zip do exe

win_package:

caminho: C: \ Arquivos de Programas \ 7-Zip \ Uninstall.exe

ID do produto: 7-Zip

argumentos: / S

estado: ausente

Execute o ansible-playbook para desinstalar o 7-Zip.

[protegido por email] ~
$ ansible-playbook uninstall.yml

PLAY [win] ************************************************ **************************************************** **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Desinstalar o 7-Zip do exe] ****************************************** **************************************************** **************************************************** ***************
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** **************************************************** *********************************
192.168.0.102: ok = 2 alterado = 1 inacessível = 0 falhou = 0 ignorado = 0 resgatado = 0 ignorado = 0 ignorado = 0

Parar / Iniciar / Reiniciar Serviços do Windows

O módulo win_service ansible é usado para iniciar, parar ou reiniciar um serviço. Aqui, mostrarei como interromper o serviço tomcat.

janelas ansible tomcat

Você precisa mencionar o nome do serviço no arquivo YAML e definir o estado para parar.

[protegido por email] ~
$ vi service.yml

– anfitriões: win

tarefas:

– nome: Pare o serviço Tomcat

win_service:

nome: Tomcat8

estado: parado

Execute o ansible-playbook para interromper o serviço tomcat.

[protegido por email] ~
$ ansible-playbook service.yml

PLAY [win] ************************************************ **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Pare o serviço Tomcat] ******************************************** **************************************************** ******************
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 2 alterado = 1 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

Se você verificar o serviço tomcat no sistema Windows, ele agora está no status parado.

janelas ansible tomcat parar

Você pode definir o estado como iniciado ou reiniciado ou pausado para alterar o status do serviço.

Reunindo fatos

Usando o módulo ans_ win_disk_facts, você pode recuperar todas as informações de disco do host de destino.

[protegido por email] ~
$ vi disk.yml

– anfitriões: win
tarefas:
– nome: obtenha fatos do disco
win_disk_facts:

– nome: Tamanho do primeiro disco de saída
depurar:
var: ansible_facts.disks [0] .size

– nome: converte o primeiro disco do sistema em vários formatos
depurar:
msg: ‘{{disksize_gib}} vs {{disksize_gib_human}}’
vars:
# Obter o primeiro disco do sistema
disk: ‘{{ansible_facts.disks | selectattr ("system_disk") | primeiro}} ‘

# Mostrar tamanho do disco em Gibibytes
disksize_gib_human: ‘{{disk.size | filesizeformat (true)}}’
disksize_gib: ‘{{(disk.size / 1024 | pow (3)) | round | int}} GiB’

Execute o ansible-playbook para obter as informações do disco.

[protegido por email] ~
$ ansible-playbook disk.yml

PLAY [win] ************************************************ **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Obter fatos do disco] ******************************************** **************************************************** **************************
ok: [192.168.0.102]

TAREFA [Tamanho do primeiro disco de saída] ******************************************* **************************************************** *******************
ok: [192.168.0.102] => {

"ansible_facts.disks [0] .size": "1000204886016"
}

TAREFA [Converter o primeiro disco do sistema em vários formatos] **************************************** **************************************************
ok: [192.168.0.102] => {
"msg": "932 GiB vs 931,5 GiB"
}

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 4 alterado = 0 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

Usando o módulo ans_ win_command, você pode executar comandos no host remoto e obter informações da CPU, detalhes do dispositivo e muito mais.

[protegido por email] ~
$ vi check.yml

– anfitriões: win
tarefas:
– nome: obtenha fatos do disco
win_command: wmic cpu get caption, deviceid, nome, numberofcores, maxclockspeed, status
registrar: uso

– debugar: msg ="{{use.stdout}}"

Execute o ansible-playbook para obter informações do sistema remoto.

[protegido por email] ~
$ ansible-playbook check.yml

PLAY [win] ************************************************ **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Obter fatos] ********************************************* **************************************************** *************************
alterado: [192.168.0.102]

TAREFA [depuração] ************************************************ **************************************************** *********************************
ok: [192.168.0.102] => {
"msg": "Caption DeviceID MaxClockSpeed
Nome
Status do NumberOfCores \ r \ r \ nIntel64 Família 6 Modelo 142 Etapa 9 CPU0 2712 CPU Intel (R) Core (TM) i5-7200U a 2.50GHz 2 OK \ r \ r \ n \ r \ r \ n"
}

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 3 alterado = 1 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0
ignorado = 0

Comandos em execução

Quaisquer que sejam os comandos executados em uma janela, eles podem ser executados no módulo ansible win_command. Você só precisa especificar o comando no seu arquivo YAML. Aqui, estou apenas criando um diretório.

[protegido por email] ~
$ vi commands.yml

– anfitriões: win

tarefas:

– nome: execute um executável usando win_command

win_command: whoami.exe

– nome: execute um comando cmd

win_command: cmd.exe / c mkdir C: \ test

Execute o ansible-playbook para executar a operação win_command.

[protegido por email] ~
$ ansible-playbook commands.yml

PLAY [win] ************************************************ **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [executar um executável usando win_command] ******************************************** **************************************************** *******
alterado: [192.168.0.102]

TAREFA [execute um comando cmd] ******************************************* **************************************************** ************************
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 3 alterado = 2 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

variáveis ​​ambientais

Um sistema Windows possui várias variáveis ​​de ambiente, por exemplo, JAVA_HOME. Usando o módulo ansible win_environment, você pode adicionar ou modificar variáveis ​​de ambiente em um sistema Windows. Neste exemplo, estou adicionando uma nova variável à lista de variáveis ​​de ambiente do Windows.

[protegido por email] ~
$ vi env.yml

– anfitriões: win
tarefas:
– nome: defina uma variável de ambiente para todos os usuários
win_environment:
estado: presente
nome: NewVariable
valor: novo valor
nível: máquina

Execute o ansible-playbook para adicionar a variável de ambiente em uma máquina Windows remota.

[protegido por email] ~
$ ansible-playbook env.yml

PLAY [win] ************************************************ **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Defina uma variável de ambiente para todos os usuários] **************************************** **************************************************** ***
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 2 alterado = 1 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

Vá para a janela de variáveis ​​de ambiente; você verá a nova variável que você acabou de adicionar está presente aqui.

variáveis ​​de janelas possíveis

Adicionar / Editar Registro

O módulo win_regedit ansible é usado para adicionar ou editar detalhes do registro em uma máquina Windows remota. Você precisa fornecer o caminho do registro e o conteúdo a ser adicionado / atualizado. Aqui, estou criando uma nova entrada de registro GeekFlare dentro do caminho HKLM: \ SOFTWARE e adicionando nome e dados a esse registro.

[protegido por email] ~
$ vi registry.yml

– anfitriões: win

tarefas:

– nome: Criando um registro

win_regedit:

caminho: HKLM: \ SOFTWARE \ GeekFlare

– name: modificando um registro, adicionando nome e dados

win_regedit:

caminho: HKLM: \ SOFTWARE \ GeekFlare

nome: Geek

data: Flare

Execute o ansible-playbook para adicionar o registro.

[protegido por email] ~
$ ansible-playbook registry.yml

PLAY [win] ************************************************ **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Criando um Registro] ******************************************** **************************************************** *********************
alterado: [192.168.0.102]

TAREFA [Modificando um registro, adicionando nome e dados] ***************************************** **************************************************** ***
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** *********************************
192.168.0.102
: ok = 3 alterado = 2 inacessível = 0 falhou = 0
ignorado = 0 resgatado = 0 ignorado = 0

Se você for ao Editor do Registro no sistema remoto, poderá ver que este registro foi adicionado com sucesso com os parâmetros Nome e Dados.

registro do windows ansible

Excluir registro

O módulo win_eventlog ansible é usado para adicionar, limpar ou remover logs de eventos do Windows do sistema Windows.

Vá para o Windows Powershell e liste os EventLogs presentes na máquina remota do Windows.

PS C: \ Usuários \ Geekflare> Get-EventLog -List
Registro máximo de entradas de ação de excesso
—— —— ————– ——- —
20.480 0 SubstituirAsNeeded 33.549 Aplicativo
20.480 0 Substituir como necessário 0 HardwareEventos
512 7 SubstituirOlder 20 Internet Explorer
20.480 0 SubstituirAsNeeded 0 Serviço de Gerenciamento de Chaves
128 0 OverwriteAsNeeded 190 OAlerts
Segurança
20.480 0 Substituir como necessário 44.828 Sistema
15.360 0 Substituir como necessário 3.662 Windows PowerShell

Agora, mostrarei como remover logs de todas as fontes do Internet Explorer.

[protegido por email] ~
$ vi log.yml

– anfitriões: win
tarefas:
– nome: Remover logs do Internet Explorer
win_eventlog:
nome: Internet Explorer
estado: ausente

Execute o ansible-playbook para remover o Internet Explorer da máquina remota do Windows.

[protegido por email] ~
$ ansible-playbook log.yml

PLAY [win] ************************************************ **************************************************** **************************************************** ***********************************

TAREFA [Reunindo fatos] ********************************************* **************************************************** **************************************************** ************************
ok: [192.168.0.102]

TAREFA [Remover logs do Internet Explorer] ******************************************* **************************************************** *************************************************
alterado: [192.168.0.102]

PLAY RECAP ************************************************** **************************************************** **************************************************** *********************************
192.168.0.102: ok = 2 alterado = 1 inacessível = 0 falhou = 0 ignorado = 0 resgatado = 0 ignorado = 0 ignorado = 0

Agora, se você listar os EventLogs novamente, verá que os logs do Internet Explorer foram removidos.

PS C: \ Usuários \ Geekflare> Get-EventLog -List

Registro máximo de entradas de ação de excesso
—— —— ————– ——- —
20.480 0 SubstituirAsNeeded 33.549 Aplicativo
20.480 0 Substituir como necessário 0 HardwareEventos
20.480 0 SubstituirAsNeeded 0 Serviço de Gerenciamento de Chaves
128 0 OverwriteAsNeeded 190 OAlerts
Segurança
20.480 0 Substituir como necessário 44.835 Sistema
15.360 0 SubstituirAsNeeded 56 Windows PowerShell

Então, isso era tudo sobre os manuais Ansible, que podem ser usados ​​para administração remota do Windows. Vá em frente e experimente esses manuais. Você também pode tentar outras Módulos Ansible do Windows acessível.

TAG:

  • Ansible

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map