Ansible-Playbook - 将输出保存到远程服务器

Ansible-Playbook - Save output to a remote server

我是所有 Ansible 的新手。所以大部分时间我都处于 "Trial and Error"-模式。

现在我正面临一本剧本的挑战,我不知道要看得更远。

本剧本的主要任务应该是从 Cisco 设备获取 "Show run" 并将其保存在备份服务器(远程服务器)上的文本文件中。

唯一不工作的任务是备份任务。

这是我的剧本:

- hosts: IOSGATEWAY
  gather_facts: no
  connection: local
  tasks:
  - name: GET CREDENTIALS
    include_vars: path/to/all/all.yml

  - name: DEFINE CONNECTION TO GW
    set_fact:
       connection:
          host: "{{ inventory_hostname }}"
          username: "{{ creds['username'] }}"
          password: "{{ creds['password'] }}"

  - name: GET SHOW RUN 
    ios_command:
      provider: "{{ connection }}"
      commands:
         - show run
    register: show_run

  - name: SAVE TO BACKUP SERVER
    copy:
      content: "{{ show_run.stdout[0] }}"
      dest: "path/to/Directory/{{ inventory_hostname }}.txt"
    delegate_to: BACKUPSERVER

有人能给我指明正确的方向吗?

您为 playbook 设置了 connection: local,因此您所做的一切都在本地执行(这对于 ios_... 模块是正确的,但不是您真正想要的 copy 模块)。

我建议在您的清单中为每组 hosts/devices 定义 ansible_connection 变量,这样 Ansible 将为您的 ios 设备使用 local 连接,并且 ssh 用于备份服务器。