'dict object' 在 Ansible Playbook 中没有属性 'stdout'
'dict object' has no attribute 'stdout' in Ansible Playbook
我的剧本:
- name: JBoss KeyStore and Truststore passwords will be stored in the password vault
#shell: less "{{ vault }}"
shell: cat "{{ vault }}"
register: vault_contents
tags:
- BW.6.1.1.10
with_items:
- "{{ vault }}"
- debug:
msg: "JBoss config filedoes not contains the word vault"
when: vault_contents.stdout.find('$VAULT') == -1
我正在尝试使用 Jinga2 模板通过 ansible 读取多个文件并将输出解析为标准输出并搜索关键字并报告它。
失败并出现以下错误:
TASK [testing_roles : debug] **************************************************************************. *****************************************************************
fatal: [d84e4fe137f4]: FAILED! => {"failed": true, "msg": "The conditional check 'vault_contents.stdout.find('$VAULT') == -1' failed.
The error was: error while evaluating conditional (vault_contents.stdout.find('$VAULT') == -1): 'dict object' has no attribute 'stdout'\n\nThe error appears to have been in '/Ansible/Ansible/Relearn/testing_roles/roles/testing_roles/tasks/main.yml': line 49, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n - \"{{ vault }}\"\n - debug:\n ^ here\n"}
to retry, use: --limit @/Ansible/Ansible/Relearn/testing_roles/playbook.retry
当我附加一个文件条目时,它按预期工作,但当它更改为一系列文件时,它失败了。
这是在 Ansible 中扫描多个文件的正确方法还是应该使用其他模块或方法。
非常感谢任何帮助。
在 vars 文件中有以下内容:
vault:
- /jboss-as-7.1.1.Final/standalone/configuration/standalone-full-ha.xml
谢谢
检查 - debug: var=vault_contents
会告诉您,当与 with_items:
等循环结构一起使用时,寄存器变量有一个名为 results
的 list
包含结果对于循环的每次迭代。这也记录在 the fine manual.
中
所以,你想要的可能是:
- debug:
msg: "JBoss config {{ item.item }} does not contain the word vault"
when: item.stdout.find('$VAULT') == -1
with_items: '{{ vault_contents.results }}'
我的剧本:
- name: JBoss KeyStore and Truststore passwords will be stored in the password vault
#shell: less "{{ vault }}"
shell: cat "{{ vault }}"
register: vault_contents
tags:
- BW.6.1.1.10
with_items:
- "{{ vault }}"
- debug:
msg: "JBoss config filedoes not contains the word vault"
when: vault_contents.stdout.find('$VAULT') == -1
我正在尝试使用 Jinga2 模板通过 ansible 读取多个文件并将输出解析为标准输出并搜索关键字并报告它。
失败并出现以下错误:
TASK [testing_roles : debug] **************************************************************************. *****************************************************************
fatal: [d84e4fe137f4]: FAILED! => {"failed": true, "msg": "The conditional check 'vault_contents.stdout.find('$VAULT') == -1' failed.
The error was: error while evaluating conditional (vault_contents.stdout.find('$VAULT') == -1): 'dict object' has no attribute 'stdout'\n\nThe error appears to have been in '/Ansible/Ansible/Relearn/testing_roles/roles/testing_roles/tasks/main.yml': line 49, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n - \"{{ vault }}\"\n - debug:\n ^ here\n"}
to retry, use: --limit @/Ansible/Ansible/Relearn/testing_roles/playbook.retry
当我附加一个文件条目时,它按预期工作,但当它更改为一系列文件时,它失败了。
这是在 Ansible 中扫描多个文件的正确方法还是应该使用其他模块或方法。
非常感谢任何帮助。
在 vars 文件中有以下内容:
vault:
- /jboss-as-7.1.1.Final/standalone/configuration/standalone-full-ha.xml
谢谢
检查 - debug: var=vault_contents
会告诉您,当与 with_items:
等循环结构一起使用时,寄存器变量有一个名为 results
的 list
包含结果对于循环的每次迭代。这也记录在 the fine manual.
所以,你想要的可能是:
- debug:
msg: "JBoss config {{ item.item }} does not contain the word vault"
when: item.stdout.find('$VAULT') == -1
with_items: '{{ vault_contents.results }}'