通过在Ansible主机清单中为目标组指定 ansible_user=B(即其他服务器上的B用户),就能让Ansible以B用户的身份连接目标服务器,从而操作B用户目录下的文件(前提是B用户对自身目录有读写权限,且已配置Ansible到目标服务器B用户的免密登录)。
简单来说,核心逻辑是:Ansible连接目标服务器时使用的"远程用户",决定了它能操作该用户权限范围内的文件。只要将 ansible_user 设为目标服务器上的B用户,就能直接操作B用户目录下的文件(如 /home/B/ 下的内容),无需依赖Ansible所在机器的A用户。
shell
# 1. 先定义主机组(例如:web服务器组、数据库组)
[web_servers]
web01.example.com # 组内主机1
web02.example.com # 组内主机2
[db_servers]
db01.example.com # 组内主机1
db02.example.com # 组内主机2
# 2. 为每个组指定专属远程用户(关键:[组名:vars] 段)
[web_servers:vars]
ansible_user=webadmin # web_servers组所有主机,默认用webadmin用户登录
[db_servers:vars]
ansible_user=dbadmin # db_servers组所有主机,默认用dbadmin用户登录
# (可选)全局默认用户:未单独指定的组,使用此用户(放在清单最顶部或[all:vars])
[all:vars]
ansible_user=default_user # 如test_servers组未配置,就用default_user