WSL1 localhost

Summary

When running a simple playbook that uses the ansible.windows.* module(i’ve tested some ansible.windows, not all) it always fails on runtime, I’m using WSL1 on Windows 10, so I imagine it is because it is recognizing localhost as the wsl virtual machine and not my windows machine, I’m unsure if this is the case since im new to Ansible, but I have researched this quite a bit and didn’t find a concrete awnser.

My inventory
[localhost]
127.0.0.1 ansible_connection=local

Can upgrading the WSL version to WSL2 fix this issue?

Ansible Version

$ ansible --version
ansible [core 2.14.5]

OS / Environment

WSL1, Windows 10

Steps to Reproduce

  • name: test
    hosts: localhost
    gather_facts: false

tasks:

  • name: Run basic PowerShell script
    ansible.windows.win_powershell:
    script: |
    echo “Hello World”

Expected Results

Hello World

Actual Results

fatal: [127.0.0.1]: FAILED! => {
“changed”: false,
“module_stderr”: “/bin/sh: 1: powershell: not found\n”,
“module_stdout”: “”,
“msg”: “The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error”,
“rc”: 127
}

If I am reading the output correctly, it looks like it can’t find powershell. have you tried running a powershell command in WSL to see if you get that expected output?

–John

I can run powershell in wsl and i can run
raw: powershell.exe on ansible

my problem is that win packages are just not working altogether

A quarta, 28/06/2023, 16:50, John Petro <jcpetro@johnpetro.com> escreveu:

Localhost on the WSL side is the WSL Linux host itself and not the Windows one. Unfortunately you still need to target your Windows localhost using the winrm or psrp connection type.

Thanks

Jordan

Sure you can run powershell.exe directly with raw/shell/command as the executable but as I mentioned the localhost on WSL refers to the Linux host. The only way to run the Windows PowerShell modules is to target the host through winrm/psrp so the remote host is on the Windows side.