かべぎわブログ

技術的なことについてかけたらいいな…

Ansibleのwin_commandでは%path%などの変数はつかえないのでwin_shellをつかおう

Ansibleのwin_commandでは%path%などの変数はつかえないのでwin_shellをつかおうというはなし(戒め)

やってしまったこと

こんなかんじでwin_commandでPATHを追加しようとした。

win_command: setx /M path "%path%;C:\Program Files (x86)\wawawa"

得られた結果

%path%が%path%(文字列)になり既存のPATHが上書きされた結果winRMのPATHがなくなってAnsibleから繋がらなくなって環境がだめになった。

c:\>echo %path%
%path%;C:\Program Files (x86)\wawawa

こうするべきだった

win_shellでcmdを利用して実行するように設定する。
こうしないと変数がよみこまれないので要注意!!!

win_shell: setx /M path "%path%;C:\Program Files (x86)\wawawa"
args:
  executable: cmd

おわりに

win_shellはデフォルトではPowershellでうごくのでexecutable: cmdを指定してあげる必要があります!
win_commandはもうつかわないほうがいいのかな…?

Ansible実践ガイド 第2版 (impress top gear)

Ansible実践ガイド 第2版 (impress top gear)