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

如何在运行时手动向Ansible Tower模板传递主机名

解决方案

你需要同步调整playbook配置与Ansible Tower模板参数,按以下步骤操作即可解决问题:

步骤1:修改playbook逻辑,支持动态传入主机

把原playbook中固定的hosts配置改为动态变量,通过add_host模块在运行时将传入的主机临时加入内存inventory,不需要提前写入静态inventory。修改后的main.yaml示例如下:

- name: 动态添加目标主机到运行时inventory
  hosts: localhost
  gather_facts: false
  vars:
    # 该变量将从Ansible Tower运行时传入
    target_host: ""
  tasks:
    - name: 注册目标主机到临时inventory
      ansible.builtin.add_host:
        name: "{{ target_host }}"
        groups: dynamic_targets
      # 校验变量非空
      when: target_host | length > 0

- name: Execution server
  hosts: dynamic_targets
  gather_facts: false
  serial: 1
  # 下方直接写你原本的任务逻辑即可

通过add_host添加的主机仅存在于本次playbook运行的内存中,不会修改你现有的静态inventory配置。

步骤2:配置Ansible Tower模板支持运行时传参

  • 进入对应Ansible Tower模板的编辑页面,找到「变量」设置项,勾选「启动时提示输入变量」
  • 模板启动时,在弹出的变量输入框中填入目标主机信息即可,示例:
    target_host: "实际的服务器主机名/IP"
    
  • 确保Ansible Tower节点可以正常解析你传入的主机名,若无法解析直接传服务器IP即可。

可选配置:跳过首次连接的主机密钥校验

如果第一次连接目标主机时不想因密钥校验中断执行,可在playbook中添加以下参数:

ansible_ssh_common_args: '-o StrictHostKeyChecking=no'

临时快速验证的简化方案:你也可以直接把原playbook的hosts字段改为all,然后在Ansible Tower模板启动页面的「限制」输入框填入实际主机名/IP,该方案无需修改playbook逻辑,但仅适用于单次临时执行场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:24:08