在ansible playbook中运行一个任务时,如何切换或成为另一个远程用户?
我试图在远程机器上以不同的用户身份登录时运行一个命令,而不是最初使用ansible通过ssh登录 在我的远程机器上,我有: -乌瑟拉 -用户B 我使用ssh作为userA,运行多个任务,并希望切换到userB来运行诸如“conda list”之类的命令,以测试环境是否适用于userB 实际上,我想在ansible中做的是一项任务:在ansible playbook中运行一个任务时,如何切换或成为另一个远程用户?,ansible,Ansible,我试图在远程机器上以不同的用户身份登录时运行一个命令,而不是最初使用ansible通过ssh登录 在我的远程机器上,我有: -乌瑟拉 -用户B 我使用ssh作为userA,运行多个任务,并希望切换到userB来运行诸如“conda list”之类的命令,以测试环境是否适用于userB 实际上,我想在ansible中做的是一项任务: 以用户身份将ssh连接到远程计算机 表演sudo-su 然后是苏苏苏尔b 我试图修改我的剧本,使之成为用户,并成为一个新的用户。此外,通过广泛的谷歌搜索和堆栈溢出,我
- name: verify conda install by conda list command
command: ls
become: yes
become_user: "{{user}}"
become_method: su
become_flags: "su - root -c"
register: out
tags: conda_verify
其中{{user}}在默认情况下定义为userB
以下是错误的输出:
TASK [anaconda-install : verify conda install by conda list command]
FAILED! => {"changed": false, "module_stderr":
"Shared connection to 10.66.144.68 closed.\r\n", "module_stdout": "No passwd entry for user 'su'\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
现在如果我删除playbook命令
成为_标志:“su-root-c”
playbook然后超时等待密码
FAILED! => {"msg": "Timeout (12s) waiting for privilege escalation prompt: "}
您可以使用以下内容:
- name: install required packages
yum:
name: maven
become: yes
become_user: userB
执行时,请确保从命令行传递额外变量,如下所示:
ansible-playbook user_switch.yml --extra-vars "ansible_become_password=<Password of userB>"
ansible playbook user\u switch.yml——额外变量“ansible\u been\u password=”
另外,根据您使用sudo切换的系统配置,请检查ansible配置中的“ask_sudo_pass”(询问sudo通行证)。您可以使用类似以下内容:
- name: install required packages
yum:
name: maven
become: yes
become_user: userB
执行时,请确保从命令行传递额外变量,如下所示:
ansible-playbook user_switch.yml --extra-vars "ansible_become_password=<Password of userB>"
ansible playbook user\u switch.yml——额外变量“ansible\u been\u password=”
另外,根据您使用sudo切换的系统配置,检查ansible配置中的“ask_sudo_pass”(询问sudo密码)。在切换到userB之前,您是否需要切换到root用户?例如,直接从userA切换到userB有任何限制吗?在userB之前切换到root没有任何限制,这只是以交互方式且无需输入密码的最佳方式。在切换到userB之前,您是否特别需要切换到root?ie.直接从userA切换到userB有任何限制吗?在userB之前切换到root没有任何限制,这只是交互操作的最佳方式,无需输入密码。您好@saurabh14292谢谢您的回答,我确实遇到了一个需要sudo su的用例。我想用用户HDFS在HDFS文件系统上创建一个目录。使用root我无法在hadoop文件系统中创建目录。您的示例可能仍然适用于其他用例,我仍然需要测试它outHi@saurabh14292谢谢您的回答我确实遇到了一个需要sudo su的用例。我想用用户HDFS在HDFS文件系统上创建一个目录。使用root我无法在hadoop文件系统中创建目录。您的示例可能仍然适用于其他用例,我仍然需要对其进行测试