Běží jq příkaz v ansible úkoly

0

Otázka

chci mít jeden soubor se skládá z kombinace dvou souborů ve smyčce, a já jsem pomocí ansible dělat jq příkaz opakovaně. tohle je moje úkoly v učebnici:

- name: COMBINE JSON FILES
  shell: jq -s '{bgp_verif:.[0], vni_verif:.[1]}' {{ item.name }}-bgp.json {{ item.name }}-vni.json > {{ item.name }}-result.json
  with_file:
    - "/containers/http_server/data/verif_json/{{ item.name }}-bgp.json"
    - "/containers/http_server/data/verif_json/{{ item.name }}-vni.json"
  loop: "{{ get_devices.json.results }}"
  when: "item.device_type.manufacturer.slug == 'cumulus-linux'"

po spuštění scénáře, dostanu tuto chybu

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: 'dict' object has no attribute 'startswith'
fatal: [localhost]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}

jsem něco chybí v mém úkoly? já bych opravdu ocenil, pokud u mi mohl říct, jak opravit tuto chybu, děkuji.

ansible jq jquery json
2021-11-21 08:03:54
1

Nejlepší odpověď

0

Získat lepší pochopení chybová zpráva The error was: AttributeError: 'dict' object has no attribute 'startswith' můžete se podívat na tento příklad spustit

---
- hosts: localhost
  become: no
  gather_facts: no

  tasks:

  - name: Loop with items
    shell:
      cmd: "echo {{ item }}"
      warn: false
    register: result
    changed_when: false
    failed_when: false
    with_file:
      - "{{ item }}"
    loop:
      - 1
      - 2
      - 3

Výsledná do chybová The error was: AttributeError: 'int' object has no attribute 'startswith'.

Protože tam je TypeMismatch, jen jejich opravu prostřednictvím

loop:
  - "1"
  - "2"
  - "3"

přesto by nemělo vést do správné spuštění. Totéž pro with_items

  - name: Loop with items
    shell:
      cmd: "echo {{ item }}"
      warn: false
    register: result
    changed_when: false
    failed_when: false
    with_items:
      - "4"
      - "5"
    loop:
      - "1"
      - "2"
      - "3"

produkuje výsledek, který není váš záměr podle vaši otázku.

TASK [Loop with items] ****
ok: [localhost] => (item=1)
ok: [localhost] => (item=2)
ok: [localhost] => (item=3)

Jeden by mohl zvážit to nějak jako druh tichého selhat.

Ohledně vaší otázky

Jsem něco chybí v mém úkoly? ... , Jak opravit tuto chybu

Možná budete muset změnit něco v logice úkol. Můžete se podívat, jestli jeden z těchto přístupů je splnit vaše potřeby.

Existuje mnohem více příkladů na Stackoverflow.

2021-11-21 10:18:19

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................