Ansible多重变量包含多个值

问题描述 投票:0回答:1

我在下面有一些艰巨的任务:

    - name: counting object from json
     shell: >
      jq '.results[].stdout_lines | length' backup/{{ inventory_hostname }}_rsl.json | wc -l
     register: jsondata
   - name: counting object converting
     shell: >
      seq 0 {{ jsondata.stdout|int - 1 }} | tr '\n' ' ' | xargs | sed 's/[[:space:]]/,/g'
     register: seq
   - name: get interface
     shell: >
      cat backup/{{ inventory_hostname }}_{{ item }}_rsl_result_nows.json | cut -d, -f1
     register: interface
     with_items:
      - "{{ seq.stdout.split(',') | list }}"
   - name: get rsl value
     shell: >
      cat backup/{{ inventory_hostname }}_{{ item }}_rsl_result_nows.json | cut -d, -f2-
     register: rslvalue
     with_items:
      - "{{ seq.stdout.split(',') | list }}"
   - name: post to DB via curl
     shell: >
      curl -d "ip_address={{ inventory_hostname }}&hostname={{ varhostname.stdout }}&interface={{ item.interface.stdout }}&rslvalue={{ rslvalue }}" -X POST http://dev.trm.net:8088/ip_planning/rsl/postrsl -v

我想发布具有相同主机名但接口和其他属性不同的数据。

这是我想要的curl命令:

curl -d "ip_address=IP_A&hostname=HOST_A&interface=IFACE_1&rslvalue=1,2,3,4,5" -X POST http://dev.trm.net:8088/ip_planning/rsl/postrsl -v

curl -d "ip_address=IP_A&hostname=HOST_A&interface=IFACE_2&rslvalue=5,4,3,2,1" -X POST http://dev.trm.net:8088/ip_planning/rsl/postrsl -v

curl -d "ip_address=IP_B&hostname=HOST_B&interface=IFACE_1&rslvalue=11,21,31,41,51" -X POST http://dev.trm.net:8088/ip_planning/rsl/postrsl -v

我整天都很累,请帮助我。我已经从上面的ansible脚本尝试过,但是错误

“” msg“:”该任务包括带有未定义变量的选项。错误是:'item'未定义]

bash variables ansible
1个回答
0
投票

您在上一个任务中有{{ item.interface.stdout }},但不存在with_items。同样,当您在shell命令中使用item时,请用作"{{item}}"

© www.soinside.com 2019 - 2024. All rights reserved.