好吧,我知道问题标题很糟糕,但情况本身也是如此。
我想做的是:
- 在本地创建一个带有 sudoers 配置的文件
- 使用 Ansible 通过模板模块上传该文件
- 使用模板模块的验证功能确保配置有效
到目前为止,一切都很好。现在出现了奇怪的部分:该validate: 'visudo -cf %s'
文件的验证 ( ) 会引发错误。当我注释掉验证行时,文件被上传,但手动验证 ( visudo -cf /etc/sudoers.d/foo_bar
) 也失败了。使用 vi 打开文件,保存 ( :wq
) 而不做任何更改,然后再次运行验证成功。
我目前的工作论文:WTF?!
但是已经很晚了,我很累。如果有人有建议,请告诉我。一旦我有新信息,我会更新这个问题,一旦我找到解决方案,我会清理它。
您的文件可能缺少文件结尾换行符。
sudo
期望,并且visudo
将无法验证缺少它的文件。在 Vi 中打开一个文件并保存它会在必要时在末尾添加一个换行符,从sudo
的角度修复文件。