"sudo ansible-playbook" 即使使用 --user 选项,命令也会失败

"sudo ansible-playbook" command fails even with --user option

我有一个用户 foo,它能够对 A(self) 和 B 进行无密码 ssh。该剧本需要 sudo 访问权限,我正在使用 become 进行升级,下面的命令工作正常。

ansible-playbook -i ../inventory.ini --user=foo --become --become-user=root echo_playbook.yml

但是上面的命令是 shell 脚本的一部分,它没有 foo 的权限。所以当我使用 sudo 触发那个 shell 脚本时,ansible 说主机无法访问。所以我用 sudo 尝试了 ansible 命令,如下所示。它显示主机无法访问。

sudo ansible-playbook -i ../inventory.ini --user=foo --become --become-user=root echo_playbook.yml

我同意 sudo 将 ansible-playbook 升级为 root。但我还提供 --user 来告诉 ansible “foo”用户需要用于 ssh。

基本上访问剧本我需要 sudo。要连接到其他服务器,我需要 foo 用户。要执行剧本中的操作(剧本中的命令),我需要再次使用 sudo(我正在使用 become for)。

我做错了什么吗?谁能告诉我 ansible-playbook 需要 运行 as sudo ansible-playbook 的上述场景的确切命令?

我不是很清楚你卡在哪里。我认为您不会混淆远程用户和本地用户。如果 playbook 以 foo 的形式工作,根据你的描述,我只能猜测 ~foo/.ssh/id_rsa 或另一个自动提供的密钥验证 foo。但是您可以为任何用户生成一个密钥,并允许它访问远程 foo(如果您愿意)。或者,您可以 运行 其他用户的剧本。由你决定。唯一不行的就是依赖特定用户的环境或配置,然后不提供。

the above command is part of a shell script which doesn't have permission for foo.

我听到的是:

  • 一个用户foo可以成功运行 ansible job
  • 一个脚本运行s(在root下?)不能运行 ansible作业

如果您对 foo 用户的 ansible 工作方式感到满意,您可以切换到 foo 用户以 运行 ansible:

sudo -u foo ansible-playbook ...

如果脚本 运行s 作为 root,sudo 将始终成功。否则,您可以 configure sudo to allow one user to access another 一个或多个命令。