我有一个 .yml 文件,其中包含数百个 Axis 网络摄像机的配置值。内容如下所示:
---
axis:
config:
"Bandwidth.Limit": 0
"HTTPS.AllowTLS1": "no"
"HTTPS.AllowTLS11": "no"
"HTTPS.AllowSSLV3": "no"
"HTTPS.Ciphers": AES256-SHA:AES128-SHA
"HTTPS.Enabled": "yes"
"HTTPS.Port": 443
...
称为 Vapix 的 Axis API 提供了一个更新函数来更新一个值,所以我在这些值中循环,并在每次迭代时触发一个新的 API 调用:
---
- name: update parameters
local_action:
module: uri
user: "{{ axis_snmp_role.login_user }}"
password: "{{ axis_snmp_role.login_password }}"
url: "{{ axis_snmp_role.server_url }}?action=update&{{ item.key }}={{ item.value }}"
validate_certs: false
with_dict: "{{ axis.config }}"
事实证明这是可行的,但需要永远。我手动发现,通过将键/值对与 & 符号粘合在一起,可以通过一个 API 调用更新多个值,如下所示:
https://{{ axis_snmp_role.server_url }}/axis-cgi/param.cgi?action=update&ImageSource.I0.Sensor.ExposureValue=100&Image.I0.Appearance.Compression=50
是否可以设计一个 Ansible 循环,一次读取 100 个键/值对,创建一个包含所有这些的大 api 调用,将其发送出去并重复此操作,直到到达配置文件的末尾?