ansible - ansible查找挖掘:列表对象没有属性
问题描述
团队,我无法理解或解决此错误。我的任务是从变量中提取服务器名称并使用 dig 模块执行 dns 查找。任何提示?完全相同的任务在本地 ubuntu 桌面上工作,但是当我通过 jenkins/container/ubuntu 映像运行它时它没有。
- name: Validate DNS record lookup for {{ api_server_public_names }}
debug: msg="{{ lookup('dig', '{{ api_server_public_names }}' )}}"
vars:
dns_response: "{{ lookup('dig', '{{ api_server_public_names }}' )}}"
failed_when: not dns_response
TASK [services-pre-install-checks : Validate DNS record lookup for [u'test.customer.com']] ***
Thursday 31 October 2019 22:05:34 +0000 (0:00:00.037) 0:00:02.890 ******
fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'dig'. Error was a <type 'exceptions.AttributeError'>, original message: 'list' object has no attribute 'startswith'"}
15:05:34
解决方案
api_server_public_names
是一个列表,不能直接在查找中使用。您将需要循环变量:
- name: Validate DNS record lookup
debug: msg="{{ lookup('dig', '{{ item }}' )}}"
vars:
dns_response: "{{ lookup('dig', '{{ item }}' )}}"
failed_when: not dns_response
loop: "{{ api_server_public_names }}"
但是请注意,您failed_when
将无法按预期工作。您可能需要做类似的事情failed_when: dns_response == "NXDOMAIN"
推荐阅读
- google-earth-engine - 如何在谷歌地球引擎中计算时间序列图像的区域统计?
- hyperlink - 如何在使用 LinkTransformator 时管理内部页面的锚点(带有主题标签的链接)?
- c# - 如何有效地将属性作为列表从 IReadOnlyCollection 获取?
- python-3.x - Python3.7 子进程输出到终端但没有收到 SIGINT
- sql - SQL Server - 将 column_id 设置为外键
- reinforcement-learning - 困难的强化学习查询
- python - 多重继承未按预期工作
- c++ - C++ std::vector 插入两个元素替代算法失败
- python - 如何更改此画布上此饼图的位置?
- django - 从 one_to_one 关系中检索已回答的(非空/空)问题