You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible动态库存中配置多远程用户执行Playbook?

解决动态库存下多远程用户的问题

1. 确认动态库存的自动分组

你的动态库存配置中,通过key: tags.Ansible已经自动生成了分组:

  • 所有Ansible标签为ubuntu的实例会被归入tag_Ansible_ubuntu组
  • 所有Ansible标签为redhat的实例会被归入tag_Ansible_redhat组

执行以下命令验证分组是否正确:

ansible-inventory -i 你的动态库存文件名.yml --list

2. 配置组变量

在Playbook所在目录下创建group_vars目录,分别为两个组添加远程用户配置:

配置Ubuntu实例的远程用户

创建group_vars/tag_Ansible_ubuntu/main.yml,内容如下:

ansible_user: ubuntu

配置RedHat实例的远程用户

创建group_vars/tag_Ansible_redhat/main.yml,内容如下:

ansible_user: ec2-user

注:RedHat系实例(如Amazon Linux)默认远程用户通常是ec2-user,CentOS可能为centos,请根据实际情况调整。

3. 验证Playbook配置

你的现有Playbook无需修改,确保没有硬编码remote_user字段,让组变量自动生效:

---
# docker.yml

- name: 使用Galaxy角色安装Docker
  hosts: "all"
  become: true

  roles:
    - role: "geerlingguy.docker"
      tags: ["docker"]

4. 测试连接

执行以下命令,验证不同实例是否使用对应远程用户成功连接:

ansible all -i 你的动态库存文件名.yml -m ping

备选方案:按实例操作系统属性分组

如果实例未通过Ansible标签区分系统,可修改动态库存的keyed_groups,直接基于AWS EC2实例的操作系统属性分组:

plugin: aws_ec2
regions:
  - "us-east-1"
keyed_groups:
  - key: tags.Ansible
  - key: tags.Name
  - key: platform  # 利用EC2实例的platform属性自动分组,如"ubuntu"、"redhat"
    prefix: os
filters:
  tag:Ansible:
    - ubuntu
    - redhat
compose:
  ansible_host: public_ip_address

此时会生成os_ubuntu、os_redhat组,对应修改group_vars下的目录名称即可。

内容的提问来源于stack exchange,提问作者Diana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:47:27