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

如何将另一个Docker容器指定为Ansible受控节点

解决Ansible无法通过容器名访问自定义桥接网络内受控主机的问题

第一步:验证容器名DNS解析是否正常

先在VSCode开发容器(Ubuntu)里直接ping受控的ubi8容器名,确认网络层面能解析:

ping <ubi8容器名>

如果ping不通,说明Docker自定义网络的DNS解析存在问题,按以下步骤排查:

  • 确认两个容器确实都加入了同一个自定义网络:
    docker network inspect <你的自定义网络名> | grep -E "Name|IPv4Address"
    
    检查输出是否同时包含两个容器的名称和对应IP。
  • 若容器是后续加入网络的,重启VSCode开发容器,确保它重新加载网络DNS配置。

第二步:检查Ansible Inventory配置是否正确

如果DNS解析正常,但Ansible仍无法识别容器名,根据连接方式调整inventory配置:

场景1:使用Docker连接插件(无需SSH)

这种方式无需在ubi8容器内启动SSH服务,直接通过Docker API连接,更适配容器场景,inventory配置示例:

ubi8_hosts:
  hosts:
    <ubi8容器名>:
      ansible_connection: docker

场景2:使用SSH连接

若必须通过SSH连接,需先确保ubi8容器内已安装并启动sshd服务,同时在inventory中指定必要参数:

ubi8_hosts:
  hosts:
    <ubi8容器名>:
      ansible_host: <ubi8容器名>
      ansible_user: root  # 或你在ubi8容器中创建的用户
      ansible_ssh_pass: <对应用户密码>  # 推荐优先使用密钥认证
      ansible_ssh_common_args: "-o StrictHostKeyChecking=no"  # 首次连接跳过主机密钥检查

ubi8容器默认未安装sshd,需先执行安装命令:

docker exec <ubi8容器名> dnf install -y openssh-server openssh-clients && systemctl start sshd

第三步:测试Ansible连接

配置完成后,用ping模块验证连通性:

ansible <ubi8容器名> -i inventory.yaml -m ping

若连接失败,添加-vvv参数查看详细错误日志,定位具体问题:

ansible <ubi8容器名> -i inventory.yaml -m ping -vvv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:52:08