Настройка подключение Ansible r Windows Server
Добавлено: 17 янв 2024, 15:42
Настраивыаем Windows для работы с Ansible (я тестировал на windows 2019 и 2022)
1. Разрешаем выполнение сценариев в powershell
2. Смотрим доступные листнеры winrm
3. Создаем самоподписной сертификат
Записываем Thumbprint, он нам скоро понадобится
4. Создаем новый HTTPS листнер для winrm
5. Открываем порт 5986 для подключения через wf.msc
6. Разрешаем авторизацию
На линукс машине пишем сценарий (перед этим убедитесь что у вас установлен ansible и коллекции ansible.windows и community.windows)
Поскольку у меня в качестве дистрибутива редхат-подобный линукс то я поставил пакеты vim-ansible и ansible-core, остальное на ваш вкус.
Создаем файл ansible.cfg со следующим содержимым
Создаем файл hosts
И создаем плэйбук test.yml
и запускаем
Вывод - что-то вроде
1. Разрешаем выполнение сценариев в powershell
Код: Выделить всё
Set-ExecutionPolicy -ExecutionPolicy Bypass -ForceКод: Выделить всё
winrm enumerate winrm/config/ListenerКод: Выделить всё
New-SelfSignedCertificate `
-DnsName "rdp02.test.local" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-CertStoreLocation "Cert:\LocalMachine\My" `
-NotAfter (Get-Date).AddYears(10)Записываем Thumbprint, он нам скоро понадобится
Код: Выделить всё
4A664FFF92F8C5B8B44DF709D02A6C4D3FBDB274Код: Выделить всё
$selector_set = @{
Address = "*"
Transport = "HTTPS"
}
$value_set = @{
CertificateThumbprint = "4A664FFF92F8C5B8B44DF709D02A6C4D3FBDB274"
}
New-WSManInstance -ResourceURI "winrm/config/Listener" -SelectorSet $selector_set -ValueSet $value_set
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Код: Выделить всё
[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Код: Выделить всё
- 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