开发者社区> 问答> 正文

使用Ansible查找具有特定于复制日期的文件

我正在寻找Ansible来提取N-1 DIR,即当前日期-1(昨天的文件)并提取那些文件以将数据复制到目标位置。

我写了类似下面的内容,但失败了latest_file:

- name: List
    command: "hdfs dfs -ls /data/files"
    register: hdfs_dir_list
  - debug: var=hdfs_dir_list.stdout_lines
  - name: Retrieve
    set_fact:
    latest_file: "{{ hdfs_dir_list.files | sort(attribute='date -1') | last }}"
  - name: Copy
    command: hadoop distcp "hdfs:///data/{{hdfs_dir_list}}" "/data/{{hdfs_dir_list}}"

不知道出什么问题了。您能帮我解决这段代码中缺少的内容吗?

Linux的 ansible

展开
收起
祖安文状元 2020-01-08 15:40:37 714 0
1 条回答
写回答
取消 提交回答
  • latest_file不是任务级别参数,而是set_fact模块的参数。因此,您需要正确缩进。始终记住,yaml在语法上具有重要的新行和缩进,如本简短易懂的教程所述

    [Yaml是] JSON的严格超集,并添加了语法上重要的换行符和缩进,例如Python。但是,与Python不同,YAML不允许使用文字制表符来缩进。

    此外,如@Matt P注释中所述,应尽可能采用仅yaml语法,并删除旧的key=value速记语法。

    最后(当我在讨论的时候),良好实践检查ansible-lint人员会报告:

    All tasks should be named Commands should not change things if nothing needs doing Variables should have spaces before and after: {{ var_name }} 尽管此后可能还有其他逻辑问题需要解决,但是这是如何修改示例任务以得到语法上正确的东西并遵循最新的最佳实践:

    2020-01-08 15:40:48
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
ANSIBLE在生产环境中的实践 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载