Linux
通過 ansible 上傳 sudoers.d 文件會出現語法錯誤,但在 vi 中打開和保存可以修復它
好吧,我知道問題標題很糟糕,但情況本身也是如此。
我想做的是:
- 在本地創建一個帶有 sudoers 配置的文件
- 使用 Ansible 通過模板模組上傳該文件
- 使用模板模組的驗證功能確保配置有效
到現在為止還挺好。現在出現了奇怪的部分:該
validate: 'visudo -cf %s'
文件的驗證 ( ) 會引發錯誤。當我註釋掉驗證行時,文件被上傳,但手動驗證 (visudo -cf /etc/sudoers.d/foo_bar
) 也失敗了。使用 vi 打開文件,保存 (:wq
) 而不做任何更改,然後再次執行驗證成功。我目前的工作論文:WTF?!
但是已經很晚了,我很累。如果有人有建議,請告訴我。一旦我有新資訊,我會更新這個問題,一旦我找到解決方案,我會清理它。
您的文件可能缺少文件結尾換行符。
sudo
期望,並且visudo
將無法驗證缺少它的文件。在 Vi 中打開一個文件並保存它會在必要時在末尾添加一個換行符,從sudo
的角度修復文件。