使用WSL上安装的Ansible设置Windows 10工作站

时间:2019-10-11 16:11:23

标签: windows ansible ansible-2.x

我已经在Windows 10工作站的WSL(Linux的Windows子系统)中安装了Ansible。

我的目标是同时配置WSL和Windows 10本身。

我能够针对本地主机运行剧本,该本地主机通过SSH和WSL进行连接和配置。

但是我不确定Ansible是否可以针对Windows主机运行剧本以设置Windows本身(例如,使用Chocolatey安装软件包)

那有可能吗?或者Ansible仅在安装在其他Linux机器上时才能设置Windows节点?

2 个答案:

答案 0 :(得分:2)

太好了!完成这些步骤后,我便能够连接到Windows主机。

但是,在我能够针对WSL和Windows主机同时运行Ansible剧本之前,我不得不解决另外两个问题:

1。定义WSL的连接

Windows主机使用expect(getByText('Test 1').parentElement).toHaveStyleRule('color', 'black');,但是对于WSL需要不同的连接,我设置了ansible_connection=winrm

2。避免覆盖连接变量

ansible_connection=local变量是overridden。这是因为var名称和主机名相同。这意味着您可以为WSL或Windows主机运行剧本,但不能同时针对两者运行,因为它们需要不同的连接。

要解决此问题,您可以设置hash-behaviour,也可以在WSL ansible_connection下为localhost设置两个不同的主机名。我已经完成了第二个:

/etc/hosts

我的127.0.0.1 wsl.local 127.0.0.1 windows.local

/etc/ansible/hosts

现在,我可以运行ansible_playbook,同时对Windows主机和WSL都运行任务。 Here有关配置的更多详细信息。

答案 1 :(得分:1)

是的,有可能。

  1. 首先,您必须拥有WSL(您需要这样做)
  2. 接下来,您需要安装Ansible,但需要其他软件包才能将其与WinRM一起使用
    • 安装点$ apt install python-pip
    • 安装pip winrm $ pip install pywinrm
    • 安装xml解析器$ pip install xmltodict
  3. 您需要设置WinRM:
    • 您需要将网络设为私有,因为默认情况下WinRM仅适用于私有或域网络。您可以通过向Enable-PSRemoting -SkipNetworkProfileCheck提供参数来跳过此操作,但我不建议这样做。
    • 启用WinRM Enable-PSRemoting在Windows的PowerShell中运行它。
    • 启用基本身份验证Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
    • 启用未加密的连接Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true
  4. 在WSL中,将vars添加为您的剧本或group_vars
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: basic
  1. 运行剧本时,请提供变量ansible_user=your_win_useransible_password=your_win_user_pass或在以前的变量中进行硬编码。

我使用此设置从WSL设置机器。您可以看看here。希望这会有所帮助。