首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >告诉Ansible遍历(网络摄像头)配置json文件,并通过新的api调用更新每个值

告诉Ansible遍历(网络摄像头)配置json文件,并通过新的api调用更新每个值
EN

Stack Overflow用户
提问于 2019-12-10 19:00:51
回答 1查看 193关注 0票数 2

我有一个.json文件,里面填满了Axis网络摄像机的数百个配置值。内容如下所示:

代码语言:javascript
复制
          {
              "Name": "HTTPS.Port",
              "Value": "443"
          },
          {
              "Name": "Image.DateFormat",
              "Value": "YYYY-MM-DD"
          },
          {
              "Name": "Image.MaxViewers",
              "Value": "20"
          },

名为Vapix的Axis API只提供了更新单个值的更新函数,因此我必须遍历这些值,并在每次迭代中触发一个新的API调用:

代码语言:javascript
复制
    name: update parameters
  local_action:
    module: uri 
    user: x
    password: y
    url: "{{ axis_snmp_role.server_url }}?action=update&{{ item }}"
  with_items:
    - "SNMP.V2c=yes"
    - "SNMP.Enabled=yes"
    - "ImageSource.I0.Sensor.ExposureValue=100"

现在,上面的示例要求我将数百个配置值硬编码到循环中。有没有办法告诉Ansible检查相机配置json,通过新的api调用更新每个值,并在json文件中没有更多的值时停止?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 19:52:12

给定配置的值是一个列表。例如

代码语言:javascript
复制
shell> cat data.yml 
config: [
  {"Name": "HTTPS.Port", "Value": "443"},
  {"Name": "Image.DateFormat", "Value": "YYYY-MM-DD"},
  {"Name": "Image.MaxViewers", "Value": "20"}]

这出戏

代码语言:javascript
复制
- hosts: localhost
  tasks:
    - include_vars:
        file: data.json
    - debug:
        msg: "?action=update&{{ item.Name }}={{ item.Value }}"
      loop: "{{ config }}"

给出

代码语言:javascript
复制
ok: [localhost] => (item={u'Name': u'HTTPS.Port', u'Value': u'443'}) => {
    "msg": "?action=update&HTTPS.Port=443"
}
ok: [localhost] => (item={u'Name': u'Image.DateFormat', u'Value': u'YYYY-MM-DD'}) => {
    "msg": "?action=update&Image.DateFormat=YYYY-MM-DD"
}
ok: [localhost] => (item={u'Name': u'Image.MaxViewers', u'Value': u'20'}) => {
    "msg": "?action=update&Image.MaxViewers=20"
}

如果这就是你想要的,循环uri模块。例如

代码语言:javascript
复制
- local_action:
  module: uri 
    user: x
    password: y
    url: "{{ axis_snmp_role.server_url }}?action=update&{{ item.Name }}={{ item.Value }}"
  loop: "{{ config }}"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59265714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档