如何使用Ansible配置Open vSwitch QoS规则?
Open vSwitch QoS配置Ansible任务问题解决
问题场景
需要用Ansible的openvswitch_db模块模拟以下OVS命令配置QoS:
ovs-vsctl set port vm00-eth1 qos=@newqos -- --id=@newqos create qos type=egress-policer other-config:cir=30000000 other-config:cbs=3000000
尝试了如下任务,执行成功但端口仍无QoS配置:
- openvswitch.openvswitch.openvswitch_db: table: Port record: vm00-eth1 col: other_config key: cir value: 30000000
检查结果:
root@host00 ~ # ovs-appctl qos/show vm00-eth1 QoS not configured on vm00-eth1
问题原因
原OVS命令实际包含两个核心操作:创建QoS规则对象,以及将端口与该QoS对象关联。而你只修改了Port表的other_config字段,既没有创建独立的QoS规则,也没有完成端口与QoS的绑定,所以端口不会识别到QoS配置。
正确配置方法
需要分步骤完成QoS规则创建和端口绑定,以下是两种可行的Ansible任务写法:
分步执行
# 创建QoS规则并设置参数 - openvswitch.openvswitch.openvswitch_db: table: QoS record: newqos col: type value: egress-policer - openvswitch.openvswitch.openvswitch_db: table: QoS record: newqos col: other_config key: cir value: 30000000 - openvswitch.openvswitch.openvswitch_db: table: QoS record: newqos col: other_config key: cbs value: 3000000 # 将端口关联到QoS规则 - openvswitch.openvswitch.openvswitch_db: table: Port record: vm00-eth1 col: qos value: newqos
循环批量执行
- name: 配置OVS QoS规则并绑定端口 openvswitch.openvswitch.openvswitch_db: table: "{{ item.table }}" record: "{{ item.record }}" col: "{{ item.col }}" key: "{{ item.key | default(omit) }}" value: "{{ item.value }}" loop: - { table: 'QoS', record: 'newqos', col: 'type', value: 'egress-policer' } - { table: 'QoS', record: 'newqos', col: 'other_config', key: 'cir', value: '30000000' } - { table: 'QoS', record: 'newqos', col: 'other_config', key: 'cbs', value: '3000000' } - { table: 'Port', record: 'vm00-eth1', col: 'qos', value: 'newqos' }
配置完成后重新检查:
ovs-appctl qos/show vm00-eth1
内容的提问来源于stack exchange,提问作者a_12345
相关产品推荐
相关产品推荐

