【问题标题】:Fetch a file from task in same ansible playbook从同一 ansible 剧本中的任务中获取文件
【发布时间】:2022-11-18 18:17:44
【问题描述】:

如何传输我从 ansible 剧本中的先前任务创建的文件?这是我到目前为止得到的:

    - name: Create Yum Report
      shell: |
         cd /tmp
         yum history info > $(hostname -s)_$(date "+%d-%m-%Y").txt
      register: after_pir

    - name: Transfer PIR
      fetch:
         src: /tmp/{{ after_pir }}
         dest: /tmp/

但是,我在运行剧本时收到此错误消息。

TASK [Transfer PIR] ************************************************************************************************************
failed: [x.x.x.x] (item=after_pir) => {"ansible_loop_var": "item", "changed": false, "item": "after_pir", "msg": "the remote file does not exist, not transferring, ignored"}

我尝试运行不同的获取、同步和拉取方法,但我不确定问题出在哪里。

【问题讨论】:

  • 该文件存在于我的远程服务器中。 “创建 Yum 报告”任务成功,我可以在我的 /tmp 目录中查看它
  • 为什么您认为您在 shell 命令中动态创建的文件名会在 after_pir 变量中可用。 after_pir 将只保存 shell 任务的结果。 id 建议在 ansible 中为文件名设置一个变量,然后您可以在写入文件和获取文件时使用该变量。
  • @ChrisDoyle 我很抱歉,但我是 ansible 的新手。我不明白你的意思。你能提供更多信息吗?那将对我有很大帮助。谢谢!

标签: automation ansible centos rhel


【解决方案1】:

一种方法是:

    - name: Create Yum Report
      command: yum history info
      register: yum_report

    - name: Dump report on local disk for each host
      copy:
         content: "{{ yum_report.stdout }}"
         dest: "/tmp/{{ inventory_hostname_short }}-{{ '%d-%m-%Y' | strftime }}"
      delegate_to: localhost

【讨论】:

    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    相关资源
    最近更新 更多