Настройка подключение Ansible r Windows Server

Модераторы: flash, mordor

Ответить
Аватара пользователя
flashdeath
Администратор
Сообщения: 25
Зарегистрирован: 08 ноя 2007, 14:22

Настройка подключение Ansible r Windows Server

Сообщение flashdeath »

Настраивыаем Windows для работы с Ansible (я тестировал на windows 2019 и 2022)

1. Разрешаем выполнение сценариев в powershell

Код: Выделить всё

Set-ExecutionPolicy -ExecutionPolicy Bypass -Force
2. Смотрим доступные листнеры winrm

Код: Выделить всё

winrm enumerate winrm/config/Listener
3. Создаем самоподписной сертификат

Код: Выделить всё

New-SelfSignedCertificate `
-DnsName "rdp02.test.local" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-CertStoreLocation "Cert:\LocalMachine\My" `
-NotAfter (Get-Date).AddYears(10)

Записываем Thumbprint, он нам скоро понадобится

Код: Выделить всё

4A664FFF92F8C5B8B44DF709D02A6C4D3FBDB274
4. Создаем новый HTTPS листнер для winrm

Код: Выделить всё

$selector_set = @{
    Address = "*"
    Transport = "HTTPS"
}
$value_set = @{
    CertificateThumbprint = "4A664FFF92F8C5B8B44DF709D02A6C4D3FBDB274"
}
New-WSManInstance -ResourceURI "winrm/config/Listener" -SelectorSet $selector_set -ValueSet $value_set
5. Открываем порт 5986 для подключения через wf.msc

6. Разрешаем авторизацию

Код: Выделить всё

winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'

На линукс машине пишем сценарий (перед этим убедитесь что у вас установлен ansible и коллекции ansible.windows и community.windows)
Поскольку у меня в качестве дистрибутива редхат-подобный линукс то я поставил пакеты vim-ansible и ansible-core, остальное на ваш вкус.
Создаем файл ansible.cfg со следующим содержимым

Код: Выделить всё

[defaults]
host_key_checking          = false
inventory                  = ./hosts
interpreter_python         = auto_legacy_silent
Создаем файл hosts

Код: Выделить всё

[windows_hosts]
  ans_win_rdp01 ansible_host=10.0.0.21
  ans_win_rdp02 ansible_host=10.0.0.22

[windows_hosts:vars]
ansible_user=Логин от сервера (если надо будет делать что-то системное то от админской учетки)
ansible_password=Пароль
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
И создаем плэйбук test.yml

Код: Выделить всё

- name: Test windows connect from ansible
  hosts: windows_hosts
  become: yes
  become_method: runas
  become_user: Логин административного юзера
  
  vars:
    ansible_become_password: Пароль административного юзера
    
  tasks:
  - name: Test connectivity
    win_ping:
и запускаем

Код: Выделить всё

ansible-playbook test.yml
Вывод - что-то вроде

Код: Выделить всё

TASK [Test connectivity] *******************************************************************
ok: [ans_win_rdp01]
ok: [ans_win_rdp02]

PLAY RECAP *********************************************************************************
ans_win_rdp01              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
ans_win_rdp02              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Ответить