使用Ansible创建Hetzner服务器时Playbook卡住未生成实例
Ansible创建Hetzner服务器卡住问题排查
执行日志里的组名非法字符警告、回调跳过提示、模块重定向提示都是正常输出,和卡住问题无关,按以下顺序排查即可:
- 先确认API Token配置正确:你贴的配置里
api_token填的是占位符my_hetzner_API_token,如果没替换成Hetzner控制台生成的、带读写权限的真实Token,模块会卡在API请求重试阶段无返回。 - 排查到Hetzner API的网络连通性:hcloud_server模块默认会持续轮询API等待服务器创建完成,如果你本地网络、防火墙、代理拦截了到
https://api.hetzner.cloud443端口的出站请求,模块会一直挂起重连不会主动报错。可以本地执行curl命令测试连通性:
如果请求超时,先放通对应网络规则再重试。curl https://api.hetzner.cloud/v1/servers -H "Authorization: Bearer 替换成你的真实Token" - 升级Hetzner集合版本:如果你安装的
hetzner.hcloud集合版本低于1.6.0,存在状态轮询死锁的已知bug,执行以下命令升级到最新稳定版即可:ansible-galaxy collection install hetzner.hcloud --upgrade - 确认资源配额和镜像可用性:如果你的项目在对应机房的cx11实例配额用尽,或者ubuntu-18.04镜像在默认机房临时不可用,旧版模块不会主动抛出资源错误,会一直轮询。可以先登录Hetzner控制台手动试创建同配置服务器,确认配额、镜像可用。
如果要快速定位是不是轮询逻辑导致的卡住,可以给任务加wait: false参数,让模块提交创建请求后立刻返回,不用等服务器启动,先验证请求是否能正常送达Hetzner侧:
- name: Create a basic server hcloud_server: api_token: "替换成你的真实Token" name: test-server server_type: cx11 image: ubuntu-18.04 state: present wait: false register: server
内容的提问来源于stack exchange,提问作者Melvin Magro
相关产品推荐
相关产品推荐

