Aquí hay algunas preguntas frecuentes sobre Ansible y Windows y sus respuestas.

Nota

Este documento cubre preguntas sobre la administración de servidores Microsoft Windows con Ansible. Si tiene preguntas sobre Ansible Core, consulte la página de preguntas frecuentes generales.

¿Ansible funciona con Windows XP o Server 2003?

Ansible no funciona con hosts de Windows XP o Server 2003. Ansible funciona con estas versiones del sistema operativo Windows:

  • Windows Server 2008 1
  • Windows Server 2008 R2 1
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • Windows 7 1
  • Windows 8.1
  • Windows 10

1 – Ver el Preguntas frecuentes sobre Server 2008 entrada para más detalles.

Ansible también tiene requisitos mínimos de versión de PowerShell; consulte Configuración de un host de Windows para obtener la información más reciente.

¿Son compatibles Server 2008, 2008 R2 y Windows 7?

Microsoft finalizó el soporte extendido para estas versiones de Windows el 14 de enero de 2020 y Ansible dejó de ofrecer soporte oficial en la versión 2.10. No se producirá ningún desarrollo de nuevas funciones dirigidas a estos sistemas operativos, y las pruebas automatizadas han cesado. Sin embargo, es probable que los módulos y las funciones existentes sigan funcionando, y es posible que se acepten solicitudes de extracción simples para resolver problemas con estas versiones de Windows.

¿Puedo administrar Windows Nano Server con Ansible?

Ansible no funciona actualmente con Windows Nano Server, ya que no tiene acceso a .NET Framework completo que utilizan la mayoría de los módulos y componentes internos.

¿Se puede ejecutar Ansible en Windows?

No, Ansible solo puede administrar hosts de Windows. Ansible no puede ejecutarse en un host de Windows de forma nativa, aunque puede ejecutarse bajo el Subsistema de Windows para Linux (WSL).

Nota

El Subsistema de Windows para Linux no es compatible con Ansible y no debe usarse para sistemas de producción.

Para instalar Ansible en WSL, se pueden ejecutar los siguientes comandos en la terminal bash:

sudo apt-get update
sudo apt-get install python-pip git libffi-dev libssl-dev -y
pip install --user ansible pywinrm

Para ejecutar Ansible desde la fuente en lugar de una versión en WSL, simplemente desinstale la versión instalada de pip y luego clone el repositorio de git.

pip uninstall ansible -y
git clone https://github.com/ansible/ansible.git
source ansible/hacking/env-setup

# To enable Ansible on login, run the following
echo ". ~/ansible/hacking/env-setup -q' >> ~/.bashrc

Si encuentra errores de tiempo de espera al ejecutar Ansible en WSL, esto puede deberse a un problema con sleep no regresa correctamente. La siguiente solución alternativa puede resolver el problema:

mv /usr/bin/sleep /usr/bin/sleep.orig
ln -s /bin/true /usr/bin/sleep

Otra opción es usar WSL 2 si ejecuta Windows 10 después de la compilación 2004.

wsl --set-default-version 2

¿Puedo usar claves SSH para autenticarme en hosts de Windows?

No puede utilizar claves SSH con los complementos de conexión WinRM o PSRP. Estos complementos de conexión usan certificados X509 para la autenticación en lugar de los pares de claves SSH que usa SSH.

La forma en que los certificados X509 se generan y se asignan a un usuario es diferente de la implementación de SSH; consultar el Gestión remota de Windows documentación para obtener más información.

Ansible 2.8 ha agregado una opción experimental para usar el complemento de conexión SSH, que usa claves SSH para la autenticación, para servidores Windows. Ver esta pregunta para más información.

¿Por qué puedo ejecutar un comando localmente que no funciona en Ansible?

Ansible ejecuta comandos a través de WinRM. Estos procesos son diferentes de ejecutar un comando localmente de estas formas:

  • A menos que utilice una opción de autenticación como CredSSP o Kerberos con delegación de credenciales, el proceso WinRM no tiene la capacidad de delegar las credenciales del usuario a un recurso de red, lo que provoca Access is
    Denied
    errores.
  • Todos los procesos que se ejecutan en WinRM se encuentran en una sesión no interactiva. Las aplicaciones que requieren una sesión interactiva no funcionarán.
  • Cuando se ejecuta a través de WinRM, Windows restringe el acceso a las API internas de Windows, como la API de Windows Update y DPAPI, de las que dependen algunos instaladores y programas.

Algunas formas de eludir estas restricciones son:

  • Usar become, que ejecuta un comando como lo haría cuando se ejecuta localmente. Esto evitará la mayoría de las restricciones de WinRM, ya que Windows no sabe que el proceso se está ejecutando en WinRM cuando become se utiliza. Ver el Comprender la escalada de privilegios: conviértase documentación para obtener más información.
  • Utilice una tarea programada, que se puede crear con win_scheduled_task. Igual que become, omitirá todas las restricciones de WinRM, pero solo se puede usar para ejecutar comandos, no módulos.
  • Usar win_psexec para ejecutar un comando en el host. PSExec no usa WinRM y, por lo tanto, eludirá cualquiera de las restricciones.
  • Para acceder a los recursos de la red sin ninguna de estas soluciones, puede usar CredSSP o Kerberos con la delegación de credenciales habilitada.

Ver Comprender la escalada de privilegios: conviértase más información sobre cómo utilizar Become. La sección de limitaciones en Gestión remota de Windows tiene más detalles sobre las limitaciones de WinRM.

Este programa no se instalará en Windows con Ansible

Ver esta pregunta para obtener más información sobre las limitaciones de WinRM.

¿Qué módulos de Windows están disponibles?

La mayoría de los módulos de Ansible en Ansible Core están escritos para una combinación de máquinas Linux / Unix y servicios web arbitrarios. Estos módulos están escritos en Python y la mayoría de ellos no funcionan en Windows.

Debido a esto, existen módulos dedicados de Windows que están escritos en PowerShell y están diseñados para ejecutarse en hosts de Windows. Puede encontrar una lista de estos módulos aquí.

Además, los siguientes módulos / complementos de acción de Ansible Core funcionan con Windows:

  • add_host
  • afirmar
  • async_status
  • depurar
  • fallar
  • ir a buscar
  • agrupar por
  • incluir
  • include_role
  • include_vars
  • meta
  • pausa
  • crudo
  • texto
  • set_fact
  • set_stats
  • configuración
  • sorber
  • template (también: win_template)
  • espera_para_conexión

¿Puedo ejecutar módulos de Python en hosts de Windows?

No, el protocolo de conexión WinRM está configurado para usar módulos de PowerShell, por lo que los módulos de Python no funcionarán. Una forma de evitar este problema para usar delegate_to: localhost para ejecutar un módulo de Python en el controlador Ansible. Esto es útil si durante un libro de jugadas, es necesario contactar a un servicio externo y no hay un módulo de Windows equivalente disponible.

¿Puedo conectarme a hosts de Windows a través de SSH?

Ansible 2.8 ha agregado una opción experimental para usar el complemento de conexión SSH para administrar hosts de Windows. Para conectarse a hosts de Windows a través de SSH, debe instalar y configurar el Win32-OpenSSH fork que está en desarrollo con Microsoft en los hosts de Windows. Si bien la mayoría de los conceptos básicos deberían funcionar con SSH, Win32-OpenSSH está cambiando rápidamente, con nuevas funciones agregadas y errores corregidos en cada versión. Es muy recomendable Instalar en pc la última versión de Win32-OpenSSH desde la página de versiones de GitHub cuando se usa con Ansible en hosts de Windows.

Para usar SSH como conexión a un host de Windows, configure las siguientes variables en el inventario:

ansible_connection=ssh

# Set either cmd or powershell not both
ansible_shell_type=cmd
# ansible_shell_type=powershell

El valor de ansible_shell_type debería ser cmd o powershell. Usar cmd Si el DefaultShell no se ha configurado en el servicio SSH y powershell si eso se ha establecido como el DefaultShell.

¿Por qué falla la conexión a un host de Windows a través de SSH?

A menos que estés usando Win32-OpenSSH como se describe anteriormente, debe conectarse a los hosts de Windows utilizando Gestión remota de Windows. Si su salida de Ansible indica que se usó SSH, no configuró las variables de conexión correctamente o el host no las hereda correctamente.

Asegurarse ansible_connection: winrm se establece en el inventario de los hosts de Windows.

¿Por qué se rechazan mis credenciales?

Esto puede deberse a una gran cantidad de razones no relacionadas con credenciales incorrectas.

Consulte HTTP 401 / Credenciales rechazadas en Configuración de un host de Windows para una guía más detallada de esto podría significar.

¿Por qué recibo un error CERTIFICATE_VERIFY_FAILED de SSL?

Cuando el controlador Ansible se ejecuta en Python 2.7.9+ o una versión anterior de Python que tiene SSLContext retroportado (como Python 2.7.5 en RHEL 7), el controlador intentará validar el certificado que WinRM está usando para una conexión HTTPS. Si el certificado no se puede validar (como en el caso de un certificado autofirmado), fallará el proceso de verificación.

Para ignorar la validación del certificado, agregue ansible_winrm_server_cert_validation: ignore al inventario del host de Windows.

Ver también

Guías de Windows

El índice de documentación de Windows

Introducción a los libros de jugadas

Introducción a los libros de jugadas

Consejos y trucos

Consejos y trucos para libros de jugadas

Lista de correo de usuarios

¿Tengo una pregunta? ¡Pasa por el grupo de google!

irc.freenode.net

Canal de chat de IRC #ansible