"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 一个或多个命令。
我有一个用户 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 一个或多个命令。