无法使用 Ansible Playbook 连接到 Windows 实例
Unable to connect to a Windows Instance using Ansible Playbook
每次我尝试运行在 Windows Server 中使用 playbook 自动执行某些安装时,我的 Windows 远程主机似乎是无法访问.
在这里,我正在尝试安装 IIS 服务器,我的 剧本 如下所示:
---
- hosts : windows
tasks :
- name : Install Microsoft IIS
win_feature :
name : Web-Server
state : present
而错误是:
fatal: [ec2-54-197-197-91.compute-1.amazonaws.com]: UNREACHABLE! => {
"changed": false,
"msg": "ssl: HTTPSConnectionPool(host='ec2-54-197-197-91.compute-1.amazonaws.com', port=5986): Max retries exceeded with url: /wsman (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x1b11310>, 'Connection to ec2-54-197-197-91.compute-1.amazonaws.com timed out. (connect timeout=30)'))",
"unreachable": true
}
但是,现在我开始知道,为了 Windows 的 运行 剧本,我需要在我的控制节点上安装 winrm。
我做了以下事情:
pip install "pywinrm>=0.1.1"
我添加了 Windows 实例的 public ip,我的 hosts 文件 看起来像:
[local]
127.0.0.1
[aws]
ec2-54-152-85-197.compute-1.amazonaws.com
[windows]
ec2-54-197-197-91.compute-1.amazonaws.com
然后,我在 /etc/ansible 中创建了一个目录 "group_vars",并在其中创建了一个文件 windows.yml 即:
ansible_user: Administrator
ansible_password: SecretPasswordGoesHere
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
请让我知道哪里出错了。
(很有可能,因为你没有提到)
您需要在 Windows 实例的 PowerShell 中配置远程命令(如 Windows system prep 部分所述)。执行以下(具有管理员权限):
iwr https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 -UseBasicParsing | iex
之前,根据您的设置,您可能还需要启用 PowerShell 执行策略,将网络接口设置为专用网络(注意下面的 InterfaceAlias
值)并启用 PowerShell 远程处理。
Set-ExecutionPolicy Unrestricted -Force
Set-NetConnectionProfile -InterfaceAlias Ethernet0 -NetworkCategory Private
Enable-PSRemoting
每次我尝试运行在 Windows Server 中使用 playbook 自动执行某些安装时,我的 Windows 远程主机似乎是无法访问.
在这里,我正在尝试安装 IIS 服务器,我的 剧本 如下所示:
---
- hosts : windows
tasks :
- name : Install Microsoft IIS
win_feature :
name : Web-Server
state : present
而错误是:
fatal: [ec2-54-197-197-91.compute-1.amazonaws.com]: UNREACHABLE! => {
"changed": false,
"msg": "ssl: HTTPSConnectionPool(host='ec2-54-197-197-91.compute-1.amazonaws.com', port=5986): Max retries exceeded with url: /wsman (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x1b11310>, 'Connection to ec2-54-197-197-91.compute-1.amazonaws.com timed out. (connect timeout=30)'))",
"unreachable": true
}
但是,现在我开始知道,为了 Windows 的 运行 剧本,我需要在我的控制节点上安装 winrm。
我做了以下事情:
pip install "pywinrm>=0.1.1"
我添加了 Windows 实例的 public ip,我的 hosts 文件 看起来像:
[local]
127.0.0.1
[aws]
ec2-54-152-85-197.compute-1.amazonaws.com
[windows]
ec2-54-197-197-91.compute-1.amazonaws.com
然后,我在 /etc/ansible 中创建了一个目录 "group_vars",并在其中创建了一个文件 windows.yml 即:
ansible_user: Administrator
ansible_password: SecretPasswordGoesHere
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
请让我知道哪里出错了。
(很有可能,因为你没有提到)
您需要在 Windows 实例的 PowerShell 中配置远程命令(如 Windows system prep 部分所述)。执行以下(具有管理员权限):
iwr https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 -UseBasicParsing | iex
之前,根据您的设置,您可能还需要启用 PowerShell 执行策略,将网络接口设置为专用网络(注意下面的 InterfaceAlias
值)并启用 PowerShell 远程处理。
Set-ExecutionPolicy Unrestricted -Force
Set-NetConnectionProfile -InterfaceAlias Ethernet0 -NetworkCategory Private
Enable-PSRemoting