如何用Ansible列出F5 BigIP负载均衡器网络配置并关联Pool、Vip和成员
你要找的公共关联字段是Virtual Server(Vip)配置里的default_pool,这个字段存储的是该Vip绑定的Pool的唯一全路径名称,直接用这个字段做匹配就能把Vip和对应Pool关联起来。
前置依赖
确保你已经安装了F5官方维护的Ansible集合:
ansible-galaxy collection install f5networks.f5_modules
完整实现Playbook
--- - name: 采集F5 BigIP Pool-Vip-Member层级配置 hosts: bigip connection: local gather_facts: no vars: provider: server: "{{ inventory_hostname }}" user: "你的F5管理账号" password: "你的F5管理密码" validate_certs: no tasks: - name: 采集所有Pool及成员信息 f5networks.f5_modules.bigip_device_info: gather_subset: - ltm-pools provider: "{{ provider }}" register: pools_info - name: 采集所有Vip信息 f5networks.f5_modules.bigip_device_info: gather_subset: - ltm-virtual-servers provider: "{{ provider }}" register: vips_info - name: 构建Pool-Vip-Member层级结构 set_fact: f5_hierarchy: "{{ f5_hierarchy | default([]) + [ { 'pool_name': item.name, 'pool_members': item.members | map(attribute='name') | list, 'bound_vips': vips_info.ltm_virtual_servers | selectattr('default_pool', 'defined') | selectattr('default_pool', 'equalto', item.full_path) | map(attribute='name') | list } ] }}" loop: "{{ pools_info.ltm_pools }}" - name: 按你需要的格式输出到本地文件 copy: content: | {% for pool in f5_hierarchy %} - {{ pool.pool_name }} {% for vip in pool.bound_vips %} - {{ vip }} - members: {{ pool.pool_members | join(', ') }} {% endfor %} {% endfor %} dest: "./f5_hierarchy_{{ inventory_hostname }}.txt"
说明
- 匹配时使用Pool的
full_path字段而不是短名,可以避免跨分区重名导致的匹配错误 - 如果Vip配置了iRule动态选池、未设置默认池,这类Vip不会被关联到任何Pool下,符合实际业务逻辑
- 运行后在执行Ansible的本地目录下会生成对应F5设备的层级配置文件,和你要求的输出结构完全一致
内容的提问来源于stack exchange,提问作者Dilly B
相关产品推荐
相关产品推荐

