python - ansible 角色,从命令行调用怪异行为
问题描述
我有一个简单的任务,即在多个路径中查找一些文件以及显示它找到的内容的调试语句,如下所示:
- name: "find smth"
find:
paths: "{{ search_path }}"
file_type: file
patterns: "*.gz"
recurse: no
loop_control:
loop_var: search_path
loop: "{{ search_paths }}"
register: find_result
- debug:
msg: "{{ file_path }}"
loop_control:
loop_var: file_path
loop: "{{ find_result.results | map(attribute='files') | sum(start=[]) | map(attribute='path') | list }}"
这在我使用剧本时有效,但是当我通过命令行调用角色时它不起作用,如下所示:
ansible HOST -u REMOTE_USER -m include_role -a name=ROLE_NAME -e '{"include": {"step1": "06_test"}}' -e '{"search_paths":["/tmp","/opt/tmp"]}'
main.yml (只是为了解释 step1 包括):
- include: "{{ item.value }}.yml"
loop: "{{ lookup('dict', include, wantlist=True) }}"
在这种情况下,调试任务总是打印:
HOST | SUCCESS => {
"msg": "All items completed"
}
这是循环的结果消息,注册的 find_result 结构在那里,但我无法通过调试任务中的循环访问它。然而,访问一个值是有效的(例如 msg: "{{ find_result.results[0].files[0].path }}")。
我在 2.9.9 版本中使用 ansible,在 debian 拉伸上使用 python 3.5.7。上面的任务只是对真实场景的分解测试。
解决方案
推荐阅读
- python - TypeError:尝试从字典中访问值时,字符串索引必须是整数
- jquery - 用于动态生成 div 的 CSS 选择器
- excel - Expression.Error:键与表中的任何行都不匹配
- php - _(' ') 在 php 中的含义以及它里面是什么?
- c# - 如何判断 Hangfire 任务是否是手动触发的
- php - 安装特定版本的 mPDF
- flutter - 如何在 Flutter 中进行嵌套导航
- python - 如何在命令行中运行多个语句?
- php - 不要从 get() 函数 laravel Eloquent 得到排序和干净的结果
- scala - 以 AnyRef 作为参数的 AnyVal 在 Scala 中是否有意义?