通过 ansible 上传 sudoers.d 文件会出现语法错误,但在 vi 中打开和保存会修复它

Tho*_*n93 0 linux sudo sudoedit ansible template

好吧,我知道问题标题很糟糕,但情况本身也是如此。

我想要做的是:

  1. 在本地创建一个带有 sudoers 配置的文件
  2. 使用 Ansible 使用模板模块加载该文件
  3. 使用模板模块的验证功能来确保配置有效

到现在为止还挺好。现在到了奇怪的部分:该validate: 'visudo -cf %s'文件的验证 ( ) 会引发错误。当我注释掉验证行时,文件会上传,但手动验证 ( visudo -cf /etc/sudoers.d/foo_bar) 也会失败。使用 vi 打开文件,在:wq不进行任何更改的情况下保存 ( ) 并再次运行验证成功。

我目前的工作论文:WTF?!

但是已经很晚了,我很累。如果有人有建议,请告诉我。我将在获得新信息后立即更新此问题,并在我将解决方案归零后将其清理干净。

Ste*_*itt 6

您的文件可能缺少文件结束换行符。sudo期望,并且visudo将无法验证缺少它的文件。在 Vi 中打开一个文件并保存它会在必要时在末尾添加一个换行符,从sudo的角度修复文件。