Je suis en train d'utiliser Ansible pour frapper un groupe (100+) commutateurs Cisco Catalyst et vérifier si elles ont une certaine carte de ligne installée. Via SSH, cela peut être fait avec la commande "sh mod". Je veux analyser la sortie de cette commande dans un playbook et ensuite montrer la sortie de la commande si une certaine chaîne correspond. En ce moment, avec le livre de jeux ci-dessous je reçois l'erreur suivante:Ansible Imprimer la sortie IOS sur le match string
fatal: [redacted-hostname]: FAILED! => {"failed": true, "msg": "The conditional check 'showmod | search(\"4548\")' failed. The error was: Unexpected templating type error occurred on ({% if showmod | search(\"4548\") %} True {% else %} False {% endif %}): expected string or buffer\n\nThe error appears to have been in '/etc/ansible/playbooks/linecard-4548.yaml': line 22, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - debug: \"msg='4548 Card Found'\"\n ^here\n"}
Code actuel PlayBook:
---
- hosts: redacted-hostname
gather_facts: yes
connection: local
tasks:
- name: SYS | Define provider
set_fact:
provider:
host: "{{ inventory_hostname }}"
username: redacted-user
password: redacted-password
- name: IOS | Get Module List
ios_command:
provider: "{{ provider }}"
commands:
- sh mod | inc 4548
register: showmod
- debug: "msg='4548 Card Found'"
when: showmod.stdout | search("/4548/")
J'ai essayé le when
dans la mise au point avec et sans le .stdout
en vain. J'ai fait quelques recherches et l'erreur que j'obtiens se produit habituellement quand, dans mon cas, showmod
est indéfini mais c'est définitivement le cas. Si je remplace le débogage par l'extrait suivant, le playbook fonctionne bien mais bien sûr il imprimera la sortie pour chaque commutateur qui n'est pas ce que je veux.
- name: IOS | Show Output
debug:
var: showmod
Des suggestions?
qui l'a fait, je vous remercie! – Ross