Ansible非root登录用户变量及become=true时真实登录用户变量咨询
Ansible 用户身份变量常见问题解答
嘿,这两个都是Ansible里和用户身份变量相关的常见疑问,我来给你逐一说明:
问题1:在Ansible中,代表非root登录用户的变量是什么?
默认情况下,ansible_user_id就是用来表示当前远程主机上登录用户ID的变量。当你没有开启提权(也就是become: false)时,它的值就是你用来连接远程主机的那个非root用户账号。
问题2:启用become=true后,ansible_user_id变成root,如何获取真实登录用户?
当你开启become: true提权后,ansible_user_id会切换为提权后的用户(通常是root),这时候要获取最初的真实登录用户,优先用ansible_user变量(它和remote_user是等效的)。这个变量存储的是你建立SSH连接时使用的初始用户账号,不管有没有提权,它的值都不会改变,稳定性非常高。
另外补充个小知识点:如果你的提权方式是sudo,有时候ansible_env.SUDO_USER也能拿到原用户,但这个变量依赖于sudo的环境变量传递配置,并不是所有场景都可靠,所以还是优先用ansible_user更稳妥。
内容的提问来源于stack exchange,提问作者tribbloid
相关产品推荐
相关产品推荐

