ansible on windows - on the roadmap?

Just wondering what the plans are for using a windows system for the controlling ansible host. I use mac and various linux versions and don’t use windows but I have been talking up ansible to friends and some of them are more windows centric.

This is not a request to do windows. I hope to never have to use windows again.

thanks
Eric Palmer

There have been lots of threads about this.

It’s something we want to do, but right now our focus is on Linux/Unix.

When we do so, I want to do it in a way that doesn’t require installing extra Python agents on Windows machines, as nearly all Windows admins would recoil at doing this.

We are still collecting use cases of what people want to manage, or whether they are just trying to “check a box”, so more detailed use cases of what you are managing would be welcome.

There have been lots of threads about this.

It's something we want to do, but right now our focus is on Linux/Unix.

I'm one of the persons that looked into this. Lately I haven't had any time
to do so.

When we do so, I want to do it in a way that doesn't require installing
extra Python agents on Windows machines, as nearly all Windows admins would
recoil at doing this.

I don't know about that. That depends on many things.

What Windows has is Powershell. Let's just say it isn't my choice. The syntax
hurts my eyes. Ohh, well, Windows isn't even my choice either.

I've yet to encounter someone that likes it, I see that certain Windows admins
are enthousiastic but they aren't programmers, many not even gifted scripters.

From a recent Usenix talk I found online I gather Microsoft is working on adding

some kind of idempotency support. Probably with Powershell on top of that. Implemented
in Powershell to handle a DSL that generates an other intermediate language and
Powershell and other bits below it. This looks like a horrible solution to me,
far to many layers for my taste.

Anyway, so Powershell it is on Windows.

Doing that without an agent means you need code that can connect to Windows
PowerShell Remoting. Not impossible, but there is no implementation in Python
yet that supports Kerberos authentication. There is just one in Ruby, so it
can be done.

Kerberos authentication seems to be the most sane choice, but the Linux/Unix
machine that runs Ansible needs to join the Kerberos Realm as well. Maybe
that part is not all that sane, I haven't yet tried that.

We are still collecting use cases of *what* people want to manage, or

The obvious answer is: everything :wink:

whether they are just trying to "check a box", so more detailed use cases
of what you are managing would be welcome.

Doing automation is an investment of time you would rather not have to do to many
times, so support for multiple platforms is not just a checkbox for people. Even
if they won't deploy it from the start on multiple platforms.

I would love to see Windows support for Ansible. Though, as far as I understood the original post, it’s more about being able to run Ansible from Windows machines to control Linux machines.
My major use case for that would be pairing Ansible with Vagrant on my Windows notebooks. I tried running Ansible under Cygwin, which made it start but then arbitrarily crash with weird error messages.

Having Ansible run on Windows natively would allow me to test/develop my software using Vagrant VMs and then later deploy it to a dedicated machine with the very same playbook.
(I already use that workflow on my Linux desktop)

If you’re using a Linux guest, you could always use shell provisioning to run ‘ansible-playbook --connection=local’ on the guest.

I’m totally disinterested in running Ansible from Windows machines, this is more about managing Windows clients.

As the OP my question was more about running Ansible form Windows. But as original posted I’m only interested in this for my friends. I use MAC OSX and Linux. I think I now have an accurate picture and that is helpful.

Eric

I’ll put in my two cents: While I would love the ability to use Ansible to manage the configuration of Windows machines, what I am most desirous of right now is the ability to use the combination of Vagrant with the Ansible provisioner to configure Linux VMs from a Windows host.

I’m working on a small open source project that has a complicated deployment configuration. I personally develop on a Linux PC, so the combo of Vagrant and Ansible looks great to configure the build, test, and production environments. But I’m nervous that the choice of Ansible will be a roadblock to potential contributors who are using a Windows PC.

How hard would it be for this particular itch to be scratched? Is it just a matter of spending some time to make some of the code more cross-platform? Does Ansible have any major architectural choices that would prevent it from running comfortably on a Windows machine with a recent Python installed?

Mike

I’ve used a windows machine as a master with just cygwin installed. Not everything worked but most stuff did.

Recently I have posted the way we currently develop/test Ansible playbooks on Windows host (Eclipse + Cygwin).

http://dhorbach.blogspot.com/2013/08/working-with-ansible-in-eclipse-and.html
So yea its possible to live with Windows but setup is not that quick. Optimal way is still to be discovered.

Just FYI, it’s also possible to run Ansible without any install on a Windows host.
Send commands through WinRM (pywinrm as Python implemention) en send files over SMB to administrative shares. Just make sure you only allow the ansible host on it through the firewall.
The only downside is the WinRM authentication. This passes by in flat text so is a security flaw. Same for the SMB authentication, since on an ansible-playbook -v you can clearly read your user/pwd information.
But on the upside, it is possible to do so. Just mount the administrative share > do your things > clean up. It is slower than a linux > linux environment, but gets the job done.

Hi guys,

Please don’t bump old threads :slight_smile:

And no, it’s not guaranteed that Ansible will continue to run on a Windows host, we reserve the right to use native Linux services (even /dev/random) so you will need to run Ansible from a Linux/Unix/OSX control host.

Managing Windows remote hosts is something on our roadmap, but I don’t have a specific date to share. Like I’ve said before, we’re going to do it right (natively and securely, of course).