在没有外部 IP 的 GCE Windows 实例上将 Ansible 与代理结合使用

在没有外部 IP 的 GCE Windows 实例上将 Ansible 与代理结合使用

目标是在 GCE 实例上使用 Ansible 的 win_chocolatey 模块。

目前,GCE 实例(Windows Server 2012 R2)可以通过 Ansible 进行管理(即可以通过 win_ping 进行 ping 操作),但是由于它没有外部 IP 地址,因此无法直接访问互联网。

该实例由 Ansible 通过本地管理员帐户进行管理,该帐户已通过 Google SDK(即)重置密码gcloud compute reset-windows-password

我尝试配置实例以通过 Squid3 代理访问互联网(我已确认有效),但 netsh 或 regex.exe 命令均不起作用。我尝试使用 Ansible 的 win_shell 模块运行以下命令:

  • set-itemproperty -path 'HKCU:Software\Microsoft\Windows\CurrentVersion\Internet Settings' -name ProxyServer -value 'https://gateway-instance.c.project-name.internal:3128'
  • set-itemproperty -path 'HKCU:Software\Microsoft\Windows\CurrentVersion\Internet Settings' -name ProxyEnable -value '1'
  • reg.exe add "HKCU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v proxyenable /t reg_DWORD /d 1 /f
  • reg.exe add "HKCU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v proxyserver /t reg_SZ /d gateway-instance.c.project-name.internal:3128 /f"
  • netsh winhttp set proxy proxy-server="http://gateway-instance.c.project-name.internal:3128"

我注意到,在管理员登录(即通过 RDP)之前,更改注册表的命令什么也不做;我假设是因为该帐户有一个要更改注册表的配置文件。

在 Linux 实例上,我可以设置环境变量,但是Ansible 文档指出环境:目前不支持 Windows 目标

可以在 GCE 实例上或其他地方做什么,以便 Ansible 模块可以访问互联网?

相关内容