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
用于备份服务器。
我是所有 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
用于备份服务器。