У меня есть файл .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
...
API Axis, называемый Vapix, предоставляет функцию обновления, которая обновляет значение, поэтому я обошел все значения и вызвал новый вызов 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, склеив пары ключ / значение вместе с & -symbol следующим образом:
https://{{ axis_snmp_role.server_url }}/axis-cgi/param.cgi?action=update&ImageSource.I0.Sensor.ExposureValue=100&Image.I0.Appearance.Compression=50
Возможно ли создать Ansible l oop, который одновременно читает 100 пар ключ / значение, создает один большой вызов API со всеми из них, отправляет его и повторяет до тех пор, пока не будет достигнут конец файла конфигурации?