Ansible——fetch模块

目录

参数

示例1:最基本的用法

示例2:指定目标目录和主机名子目录

[示例3:flat 参数设置为 yes](#示例3:flat 参数设置为 yes)

示例4:处理源文件不存在的情况

示例5:验证文件校验和

[示例 Playbook](#示例 Playbook)

[1. 拉取远程主机上的 syslog 文件](#1. 拉取远程主机上的 syslog 文件)

[2. 直接保存文件到指定路径](#2. 直接保存文件到指定路径)

[3. 处理源文件不存在的情况](#3. 处理源文件不存在的情况)

[4. 递归拉取目录中的文件](#4. 递归拉取目录中的文件)


fetch 模块是 Ansible 中用于从远程主机获取文件并将其复制到控制节点的模块。它的主要作用是从远程主机拉取文件,以供后续处理或分析。

参数

  • src:

    • 描述:远程主机上要拉取的文件路径。
    • 类型:字符串
    • 必需:是
  • dest:

    • 描述:控制节点上保存文件的目标路径。
    • 类型:字符串
    • 必需:是
  • flat:

    • 描述:如果为 yes,则将所有文件都拉取到一个目录下。
    • 类型:布尔值
    • 默认值:no
  • validate_checksum:

    • 描述:如果为 yes,则在文件传输完成后验证文件的校验和。
    • 类型:布尔值
    • 默认值:no
  • remote_src:

    • 描述:如果为 yes,则从远程主机的路径拉取文件,否则从本地主机拉取文件。
    • 类型:布尔值
    • 默认值:yes
  • fail_on_missing:

    • 描述:如果为 yes,则在源文件不存在时终止任务。
    • 类型:布尔值
    • 默认值:yes
示例1:最基本的用法

从远程主机上拉取 /var/log/syslog 文件,并保存到本地 /tmp 目录中:

复制代码
ansible all -m fetch -a "src=/var/log/syslog dest=/tmp"
示例2:指定目标目录和主机名子目录

从远程主机拉取 /var/log/syslog 文件,并保存到本地 /tmp/hostname/var/log/syslog 路径中,其中 hostname 是远程主机名:

复制代码
ansible all -m fetch -a "src=/var/log/syslog dest=/tmp"
示例3:flat 参数设置为 yes

直接保存文件到 /tmp 目录中,而不创建主机名子目录:

复制代码
ansible all -m fetch -a "src=/var/log/syslog dest=/tmp/syslog flat=yes"
示例4:处理源文件不存在的情况

如果文件不存在,不会失败:

复制代码
ansible all -m fetch -a "src=/var/log/nonexistentfile dest=/tmp/nonexistentfile fail_on_missing=no"
示例5:验证文件校验和

在传输过程中验证文件校验和:

复制代码
ansible all -m fetch -a "src=/var/log/syslog dest=/tmp/syslog validate_checksum=yes"

示例 Playbook

1. 拉取远程主机上的 syslog 文件
复制代码
- name: Fetch syslog file from remote hosts
  fetch:
    src: /var/log/syslog
    dest: /tmp/logs
    flat: no
    fail_on_missing: yes
    validate_checksum: yes

这个任务将从所有远程主机中拉取/var/log/syslog文件,并保存到本地/tmp/logs目录中。如果文件不存在,将会失败。并且拉取时验证文件的校验和。

2. 直接保存文件到指定路径
复制代码
- name: Fetch file directly to dest without creating subdirectories
  fetch:
    src: /var/log/syslog
    dest: /tmp/syslog
    flat: yes

这个任务直接拉取/var/log/syslog文件并保存到/tmp/syslog路径,而不会创建主机名子目录。

3. 处理源文件不存在的情况
复制代码
- name: Fetch file and handle missing file gracefully
  fetch:
    src: /var/log/nonexistentfile
    dest: /tmp/nonexistentfile
    fail_on_missing: no

这个任务试图拉取一个不存在的文件/var/log/nonexistentfile,如果文件不存在,则不会失败。

4. 递归拉取目录中的文件
复制代码
- name: Fetch directory with recursive fetching
  fetch:
    src: /var/log/
    dest: /tmp/varlogs
    flat: no
    validate_checksum: no

这个任务将递归地拉取/var/log/目录中的所有文件,并保存到本地/tmp/varlogs目录下,不验证校验和。

相关推荐
广目软件16 小时前
HA分布式架构采集节点变更操作手册20261029
运维·服务器·ansible·zabbix·prometheus
Moshow郑锴1 天前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
垚垚学技术_聚焦云原生2 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
Moshow郑锴2 天前
GCP MIG 重建后 Ansible 初始化实战:PowerShell + NSSM 挂载 Windows 服务
windows·ansible
承渊政道4 天前
新增一台服务器时还要重新装Nginx?Ansible只改hosts目标列表,同一份Playbook继续执行
运维·nginx·ansible·内网穿透·cpolar
Helix2506 天前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
垚垚学技术_聚焦云原生7 天前
Ansible 变量体系详解:主机变量、组变量、全局变量优先级实战
ansible·自动化运维·devops·变量优先级
I'mChloe16 天前
不再逐台装Docker:我用Ansible Playbook批量统一服务器环境
服务器·docker·ansible
筑梦之路16 天前
Alibaba Cloud Linux 4 制作 Ansible RPM包实践(离线可复用)——筑梦之路
linux·运维·ansible
张洛闻Eren16 天前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible