【问题标题】:How to get ansible to respond to a password prompt如何让 ansible 响应密码提示
【发布时间】:2023-03-08 18:50:01
【问题描述】:

我正在使用 ansible 编写在远程主机上运行特定命令 (rosdep) 的脚本。此命令必须以普通用户而不是 root 身份运行,但偶尔会提示用户输入 sudo 密码以获得安装软件的 root 权限。

有什么方法可以指示 ansible 在运行远程命令时响应这些密码提示?我不想用 sudo 运行整个命令,所以 -K 选项不适用于此目的。

【问题讨论】:

  • 您是说在安装过程中您会收到一个输入密码的交互式提示吗?
  • 正确。有时我们运行命令时,它可能会提示(多次)输入 sudo 密码,有时它不会提示(如果不需要 root 权限)。
  • --ask-sudo-pass 不起作用? (docs.ansible.com/…)

标签: sudo ansible ros


【解决方案1】:

考虑修改您的 sudoers 文件,以便允许这些特定命令通过sudo 运行而无需此类密码提示。

最简单但也许不是最好的方法是使用:

tessa    ALL=NOPASSWD: ALL

这意味着所有命令都可以通过 sudo 运行,无需密码提示。

更好的方法是找出哪些特定命令需要 sudo 权限,然后将它们添加到 sudoers 文件中。

例如:

tessa    ALL=NOPASSWD:/usr/bin/whoami

您可以将修改后的 /etc/sudoers 文件/模板作为 Ansible 剧本的一部分发送。

【讨论】:

  • 我要运行的一个命令必须在正常使用情况下以 sudo 运行。当需要 sudo 访问时,该命令本身会在正常使用情况下生成 sudo 密码的交互式提示。所以我认为将这个命令添加到 sudoers 文件中并不能解决问题。
  • 基于对 rosdes 的简要了解,它似乎生成了一个脚本来安装任何必要的东西(来自wiki.ros.org/ROS/Tutorials/rosdep 的示例)。在该脚本中,某些命令通过 sudo 运行(例如 sudo make install。因此,如果允许您在没有密码提示的情况下运行该特定命令,则一切都应该正常运行。
猜你喜欢
  • 1970-01-01
  • 2018-10-17
  • 2015-09-02
  • 2017-06-26
  • 2011-01-23
  • 2013-01-11
  • 2014-08-21
  • 2020-04-28
  • 2010-11-30
相关资源
最近更新 更多