如何实现ansible到windows的免密

环境描述:
1、控制节点,ansible——安装pywinrm
2、被管理节点:windows节点——开启winrm

问题描述:
使用ansible管理多台windows,随着服务器的增多,经常遇到一个问题,密码过期和定期修改。导致ansible对windows的管理失效。

目标:
希望可以免密登录windows节点,或者找到一个有效管理windows的方法,请各位指教。

Ansible到Windows的免密登录可以通过以下步骤实现:

  1. 在Windows主机上安装并配置WinRM。WinRM是Windows Remote Management的缩写,它是Windows提供的一种远程管理服务。你可以通过以下命令来安装和配置WinRM:
# 在PowerShell中运行以下命令
winrm quickconfig
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
  1. 在Ansible主机上安装pywinrm。pywinrm是一个Python库,它可以通过WinRM来远程管理Windows主机。你可以通过以下命令来安装pywinrm:
# 在bash中运行以下命令
pip install "pywinrm>=0.3.0"
  1. 在Ansible主机上配置Windows主机的连接信息。你需要在Ansible的主机清单文件(inventory file)中为每个Windows主机配置以下信息:
# 在inventory file中添加以下内容
[windows]
windows_host ansible_connection=winrm ansible_user=Administrator ansible_password=SecretPassword ansible_winrm_server_cert_validation=ignore

在这个配置中,windows_host是你的Windows主机的主机名或IP地址,Administrator是你的Windows主机的用户名,SecretPassword是你的Windows主机的密码。ansible_winrm_server_cert_validation=ignore是告诉Ansible忽略SSL证书验证,这在测试环境中是可以接受的,但在生产环境中可能会带来安全风险。

然后,你就可以使用Ansible来管理你的Windows主机了,而无需每次都输入密码。

然而,这种方法并不能完全解决你的问题,因为你仍然需要在Ansible的配置中存储密码。如果你的密码经常更改,你可能需要考虑使用一个密码管理系统,如Ansible Vault,来安全地存储和管理你的密码。

  • 你可以参考下这篇文章:分享一下ansible管理windows
  • 除此之外, 这篇博客: ansible 远程控制windows服务器中的 3. 远程重启windows服务器 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • ansible t-windows -m win_reboot
    ansible t-windows -m win_shell -a ‘shutdown -r -t 0’

密码过期和定期修改??? 好奇你这点,你们是有密码策略要修改的意思?

是啦,我以前管理WIN,是在WIN中装了SSH服务,然后,做了SSH免密登录,之后推脚本过去运行的😂
不过,我们服务器,WIN的机器已经少之有少,全部linux的了。


你可以尝试一下我以前的方案,WIN中弄SSH服务,做免密,推脚本。