Skip to content

Instantly share code, notes, and snippets.

@maurizi
Last active December 16, 2022 11:34
Show Gist options
  • Star 27 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save maurizi/325387aee9ea94fbf903 to your computer and use it in GitHub Desktop.
Save maurizi/325387aee9ea94fbf903 to your computer and use it in GitHub Desktop.
Running Ansible on Windows
@echo off
cygwin-shim.bat /bin/ansible-galaxy %*
@echo off
cygwin-shim.bat /bin/ansible-playbook %*
@echo off
set COMMAND=%1
REM If you used the standard Cygwin installer this will be C:\cygwin
set CYGWIN=%USERPROFILE%\.babun\cygwin
REM You can switch this to work with bash with %CYGWIN%\bin\bash.exe
set SH=%CYGWIN%\bin\zsh.exe
if not exist "%SH%" (
echo cygwin's sh.exe not found. Did you delete %CYGWIN% ?
exit /b 255
)
"%SH%" -c "[[ -x "%COMMAND%" ]]"
if not errorlevel 0 (
echo %COMMAND% not found. Did you uninstall it ?
exit /b 255
)
"%SH%" -c "%*"
@rivaros
Copy link

rivaros commented Jul 31, 2015

Here is a working solution for Vagrant 1.7.3+ on Windows, supports multiple hosts in inventory with multiple keys.
https://github.com/rivaros/ansible-playbook-shim

@yubrshen
Copy link

Problem of repeated project root path with ansible/vars/app with ansible-playbook.bat

Copied ansible-playbook.bat from
http://www.azavea.com/blogs/labs/2014/10/running-vagrant-with-ansible-provisioning-on-windows/

I got the following command expression, it's executable with vagrant/Windows/babun:

"d:\yushen\bin\.babun\cygwin\bin\bash.exe" -c "/bin/ansible-playbook --user=vagrant --connection=ssh --timeout=30 --limit=all --inventory-file=D:/yushen/dev/clojure/cas-reports/ansible/dev D:/yushen/dev/clojure/cas-reports/ansible/provision.yml"
ERROR: file could not read: /cygdrive/d/yushen/dev/clojure/cas-reports/D:/yushen/dev/clojure/cas-reports/ansible/vars/app

The error above seems that in the path for ansible/vars/app the path for my project d:/yushen/dev/clojure/cas-reports was repeated in front of it as /cygdrive/d/yushen/dev/clojure/cas-reports (typical cygwin expression!)

I examed the ansible/provision.yml but could not find any clue. Please help to give me some pointer. Thanks,

Here is the content of ansible/provision.yml portion related to app:


---
- hosts: app
  sudo: true
  vars_files:
    - vars/app

  tasks:
  - name: Create the project directory.
    file: state=directory path={{project_root}}

  - name: Install required system packages.
    apt: pkg={{item}} state=installed update-cache=yes
    with_items: "{{system_packages}}"

  - name: Get leiningen
    get_url: url=https://raw.github.com/technomancy/leiningen/stable/bin/lein dest="{{lein_dir}}"

  - name: Leiningen permissions
    file: path={{lein_dir}} mode=0755

  - name: Download project dependencies
    shell: su - vagrant -c 'cd /var/projects/{{project_name}}; lein deps'

  - name: Upload nREPL upstart config file
    copy: src=files/nrepl-upstart.conf dest=/etc/init/nrepl.conf

  - name: Start nREPL server
    service: name=nrepl state=started

  - name: Make app log directory
    file: state=directory path=/var/log/{{project_name}} owner=vagrant group=vagrant

@artcoder87
Copy link

where should i place the ansible-playbook.bat file?

@pwyoung
Copy link

pwyoung commented May 7, 2020

FWIW, I use this sort of command since I want to mimic logging in.

c:\cygwin64\bin\bash.exe -l -c "echo 'the above is from my login script'"
JAVA_HOME is C:\Java\jdk1.8.0_241
the above is from my login script

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment