我使用Ansible來管理一堆Windows客戶端的配置。爲了記錄,Ansible劇本(即食譜)是用YAML寫的。如何在Ansible YAML中引用這個原始命令?
我需要每個客戶端上運行此命令,我可以在Powershell命令提示符成功地測試它在客戶機上:
> CMD /C 'control intl.cpl,, /f:"C:\Temp\intlsettings.xml"'
(注意單引號,因爲周圍的雙引號的需要文件名)
現在我只需編寫一個YAML手冊,並使用Ansible的原始模塊將此命令發送到遠程Powershell會話。這就是我被卡住的地方。我的命令包含:
,'
和"
符號,所以我不知道如何正確引用它。
我已經嘗試了百萬的變化,沒有成功至今:
CMD /C 'control intl.cpl,, /f:"C:\Temp\intlsettings.xml"'
"CMD /C 'control intl.cpl,, /f:"C:\\Temp\\intlsettings.xml"'"
"CMD /C 'control intl.cpl,, /f:\"C:\\Temp\\intlsettings.xml\"'"
"CMD /C 'control intl.cpl,, /f\:\"C\:\\Temp\\intlsettings.xml\"'"
的信息,最終的劇本看起來像:
---
- name: Configure keyboard mappings
hosts: windows
tasks:
- name: apply keyboard mappings config
raw: CMD /C 'control intl.cpl,, /f:"C:\Temp\intlsettings.xml"'
謝謝,我會在有機會的時候測試一下。我可以使用PowerShell作爲默認shell的所有示例。這很有意義,因爲我必須在Windows客戶端上配置PowerShell,以便接受來自Ansible的命令。這可能是爲什麼CMD/C是必需的,從PowerShell調用CMD shell。無論如何,感謝您的回覆! –
如果shell實際上是powershell,並且如果我理解了正確的文檔,那麼您的原始命令應該可以工作。我添加了另一個代碼片段,這也應該起作用。如果兩者都不起作用,我可能誤解了有用的文檔。 –