Running PowerShell Core Commands in a Linux Target from Ansible
Ansible has modules shell, for executing commands against Linux targets, and win_shell for executing commands against Windows targets - typically using PowerShell. So I was curious to see if it was possible to execute commands in a Linux target using PowerShell Core and if so, how to do it.
For my test I have an Ubuntu 18.04 VM with PowerShell 7.3.5 installed:
The shell module has an executable parameter described as “Change the shell used to execute the command. This expects an absolute path to the executable. “ . So I figured I would start there and put together the following basic playbook:
Notice how the executable parameter has been set to the path for PowerShell Core, /usr/bin/pwsh . Running a simple command Get-Process and using ConvertTo-Json to make the returned data easier to consume in Ansible.
That basic test was successful, so I then updated the playbook to process the returned data:
- Use the from_json filter to convert the returned JSON text to an object
- Search through that object to find the process with the name cron
- Debug out some of the properties of the returned cron object
The resulting playbook run gives us the cron object:
and the log message we were hoping for: