将 Ansible 的输出发送到文件

Ran*_*dal 0 ansible

我正在尝试获取 Ansible 知识并解决一些问题:

我想要,不确定是否可能。输出可以保存到运行 playbook 的服务器本地吗?

在示例中,我只是打印到正在运行剧本的终端。当数据量很大时,它没有多大用处。我希望将其保存在我正在运行剧本的服务器上的文件中。

---

- name: list os version
  hosts: test
  become: true

  tasks:
  - name: hostname
    command: hostname
    register: command_output
  - name: cat /etc/redhat-release
    command: cat redhat-release chdir=/etc

  - name: Print output to console
    debug:
      msg: "{{command_output.stdout}}"
Run Code Online (Sandbox Code Playgroud)

我真的希望输出到一个文件。我找不到任何关于这是否可能的信息。

idr*_*ene 6

正如您在 ansible 文档中所读到的那样,您可以在 playbook 所在的目录中创建一个本地配置文件 ansible.cfg ,然后设置正确的配置日志文件以输出其中的所有 playbook 输出:Ansible 输出文档

默认情况下,Ansible 将有关播放、任务和模块参数的输出发送到控制节点上的屏幕 (STDOUT)。如果要捕获日志中的 Ansible 输出,您有以下三个选项: 要将 Ansible 输出保存在控制节点上的单个日志中,请设置 log_path 配置文件设置。您可能还需要设置 display_args_to_stdout,这有助于通过在 Ansible 输出中包含变量值来区分类似的任务。
要将 Ansible 输出保存在单独的日志中(每个受管节点上一个),请设置 no_target_syslog 和 syslog_facility 配置文件设置。要将 Ansible 输出保存到安全数据库,请使用 AWX 或红帽 Ansible 自动化平台。然后,您可以使用图表和/或 REST API 根据一段时间内的主机、项目和特定清单来查看历史记录。

如果您只想将任务结果输出到文件中,请在本地主机委托上使用复制模块

---

- name: list os version
  hosts: test
  become: true

  tasks:
    - name: hostname
      command: hostname
      register: command_output
    - name: cat /etc/redhat-release
      command: cat redhat-release chdir=/etc

    - name: Create your local file on master node
      ansible.builtin.file:
        path: /your/local/file
        owner: foo
        group: foo
        mode: '0644'
      delegate_to: localhost

    - name: Print output to file
      ansible.builtin.copy:
        content: "{{command_output.stdout}}"
        dest: /your/local/file
      delegate_to: localhost
Run Code Online (Sandbox Code Playgroud)

  • 不存在愚蠢的问题,我们都希望或需要解决或修复某种问题。我人生的目的。 (2认同)