На удаленном сервере Windows
PS C:\Users\name.domain> Winrm quickconfig
WinRM service is already running on this machine.
WinRM is already set up for remote management on this computer.
На моем хосте Linux, на котором установлен Ansible:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: user_name@domain.local
Valid starting Expires Service principal
09/19/2016 10:02:18 09/19/2016 20:02:18 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
renew until 09/26/2016 10:02:12
/etc/ansible/hosts
[local]
127.0.0.1
[windows]
ip address
[windows:vars]
ansible_user= name@Domain.com
ansible_password= password
ansible_port= 5985
ansible_connection= winrm
# ansible windows -m win_ping
ip_address | UNREACHABLE! => {
"changed": false,
"msg": "kerberos: requested auth method is kerberos, but requests_kerberos is not installed, ssl: HTTPSConnectionPool(host='ip_address', port=5986): Max retries exceeded with url: /wsman (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x3585d90>, 'Connection to ip_address timed out. (connect timeout=30)'))",
"unreachable": true
}
Сообщение об ошибке довольно ясное:
"msg": "kerberos: запрошенный метод аутентификации - kerberos, но requests_kerberos не установлен
Чтобы использовать поддержку Ansible Windows с аутентификацией Kerberos, на управляющем хосте должны быть установлены некоторые зависимости:
Если вы хотите подключиться к учетным записям домена, опубликованным через Active Directory (в отличие от локальных учетных записей, созданных на удаленном хосте), вам необходимо установить модуль «python-kerberos» на управляющем хосте Ansible (и библиотеки MIT krb5, в зависимости от на). Узлу управления Ansible также требуется правильно настроенная учетная запись компьютера в Active Directory.
Обратитесь к документации Ansible для поддержка активного каталога для дальнейших инструкций.
Дело о ping
модули могут немного сбивать с толку. Эти модули используются для того, чтобы Ansible мог выполнять команды на целевом хосте. Можно было подумать, что Ansible запустится ping
на блоке управления на целевой хост. Но это не тот случай.
Итак, собственно win_ping
модуль написан на PowerShell
, будет выполняться на целевом хосте и поэтому требует правильной настройки Kerberos. Кодекс win_ping
модуль находится в Ansible Репозиторий ansible-modules-core.
Смотрите также Документация Ansible: как работают модули Windows.