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