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

如何通过Ansible的assert模块验证额外变量中的主机名列表

Ansible主机名合法性校验实现

直接上可运行的解决方案,通过合并预定义合法列表、对比传入主机名的方式完成校验,非法主机存在时直接终止任务:

完整剧本(test.yml)

---
- name: 校验传入主机名是否合法
  hosts: localhost
  gather_facts: no
  vars:
    # 预定义的两组合法主机列表
    prod_mgmt_network:
      - prodsrv001
      - prodsrv002
      - prodsrv003
    test_mgmt_network:
      - testsrv001
      - testsrv002
      - testsrv003
    # 合并成统一的合法主机池
    valid_hosts: "{{ prod_mgmt_network + test_mgmt_network }}"

  tasks:
    # 第一步:找出所有不在合法池里的主机
    - name: 筛选非法主机名
      set_fact:
        invalid_hosts: "{{ hostname | difference(valid_hosts) }}"

    # 第二步:如果有非法主机,直接让任务失败并提示
    - name: 校验主机合法性
      fail:
        msg: "发现非法主机名:{{ invalid_hosts | join(', ') }},请检查传入参数"
      when: invalid_hosts | length > 0

测试用命令

比如传入包含非法主机的参数:

ansible-playbook test.yml --extra-vars "hostname=['testsrv001', 'testsrv008283', 'testsrv008284']"

执行结果

  • 当存在非法主机时,剧本会立刻终止,输出包含非法项的错误提示
  • 所有主机都合法时,校验任务会自动跳过,可继续执行后续业务逻辑

内容的提问来源于stack exchange,提问作者chin wooi Ng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:37:36