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

Rundeck复用Ansible AWS动态Inventory遇问题求助

问题排查:Rundeck导入AWS多账号资产失败及执行问题

环境背景

已在AWS管理账号的同一EC2服务器上配置Rundeck与Ansible,使用以下AWS EC2动态Inventory从多个AWS账号拉取资产:

plugin: aws_ec2
regions:
  - us-east-1
  - us-west-2
assume_role_arns:
  - 'arn:aws:iam::prod1accountnum:role/ansible'
  - 'arn:aws:iam::prod2accountnum:role/ansible'
hostnames:
  - private-ip-address
keyed_groups:
  - key: tags.Name
    separator: ''
compose:
  ansible_connection: '''ssh'''
  ansible_port: 22
  ansible_shell_type: '''cmd'''
  ansible_ssh_common_args: '''-o StrictHostKeyChecking=no'''
  ansible_user: '''Administrator'''
  ansible_ssh_private_key_file: |-
    { 'vpc-0123xxxx': '~/.ssh/prod1.pem',
      'vpc-0456xxx': '~/.ssh/prod2.pem'
    }[vpc_id]

本地测试正常,可获取资产并执行命令:

ansible tag_server1 -i ec2.yaml -m win_ping
ansible-playbook get-logs.yaml -i ec2.yaml --extra-vars "path=/temp/"

但Rundeck中出现两种问题:


问题1:通过Ansible插件/File方式导入Inventory无法获取资产

排查方向

  • 权限与路径验证
    确认Rundeck运行用户(通常为rundeck)对/etc/ansible/hosts.yml文件有读权限,同时对~/.ssh/下的pem文件也有读权限。可执行sudo -u rundeck cat /etc/ansible/hosts.yml验证。
    替换Inventory中ansible_ssh_private_key_file的~为绝对路径(比如/home/rundeck/.ssh/prod1.pem),避免Rundeck用户家目录与测试用户不一致导致路径失效。

  • Ansible插件配置修正
    检查项目配置中resources.source.1.config.ansible-inventory指向的文件是否与本地测试的Inventory完全一致;关闭ansible-disable-limit(设为false),该选项可能干扰Inventory分组解析;确认Rundeck的Ansible插件版本与本地Ansible版本兼容,避免版本差异导致解析失败。

  • AWS凭证同步
    本地测试用的AWS凭证(~/.aws/credentials)需复制到Rundeck用户的家目录(/var/lib/rundeck/.aws/),或通过IAM角色给Rundeck实例赋予AssumeRole的权限,确保Rundeck能正常调用AWS API拉取资产。


问题2:使用Rundeck EC2插件导入节点后,执行作业提示无匹配主机

错误信息

[WARNING]: No inventory was parsed, only implicit localhost is available 
[WARNING]: Could not match supplied host pattern, ignoring:all 
[WARNING]: provided hosts list is empty, only localhost is available 
[WARNING]: Could not match supplied host pattern, ignoring:prod1-server 
[WARNING]: No hosts matched, nothing to do

排查方向

  • 节点属性映射调整
    在EC2插件配置中,将Hostname来源设置为tags.Name或private-ip-address,确保节点名与Ansible Inventory中的标识一致;添加节点属性映射,将ansible_host对应privateIpAddress,保证Ansible能识别目标主机。

  • 作业执行配置检查
    确认作业的Node Executor设置为com.batix.rundeck.plugins.AnsibleNodeExecutor,File Copier设置为sshj-scp(需继承项目默认配置),避免使用默认SSH执行器绕过Ansible Inventory;检查作业的Node Filter,确认筛选出的节点存在tags.Name=prod1-server属性(可在Rundeck节点页面查看详情)。

  • Inventory生成属性补充
    项目配置中project.ansible-generate-inventory=true会自动生成临时Inventory,需在EC2插件配置中添加Ansible必需的属性映射:

    • ansible_connection设为ssh
    • ansible_user设为Administrator
    • ansible_ssh_private_key_file根据VPC ID映射对应PEM文件(可通过Rundeck节点属性模板实现)

额外验证步骤

  1. 切换到rundeck用户执行ansible tag_server1 -i /etc/ansible/hosts.yml -m win_ping,确认命令能正常执行,排除环境差异问题。
  2. 查看Rundeck日志(/var/log/rundeck/rundeck.log),搜索AnsibleResourceModelSource或EC2NodeSource相关错误,定位具体失败原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:23:20