Ansible Fetch模块用法详解与文件拉取实践
{ "position ":0, "title ": "介绍 ", "layout ": "doc-fullscreen ", "text ": " 介绍nn欢迎学习 Ansible Fetch 模块实验!在本实验中,你将系统了解 Ansible Fetch 模块的常见用法与实际操作方法。Fetch 模块可用于从远程主机
{"position":0,"title":"介绍","layout":"doc-fullscreen","text":"## 介绍nn欢迎学习 Ansible Fetch 模块实验!在本实验中,你将系统了解 Ansible Fetch 模块的常见用法与实际操作方法。Fetch 模块可用于从远程主机检索文件,并将其复制到执行 Ansible 的控制节点上。当你需要从受管主机收集日志、配置文件或特定工件时,这个模块非常实用。nn现在就开始吧!n","need_verify":false,"has_solution":false},{"position":1,"title":"获取单个文件","layout":"doc-workbench-split","text":"## 获取单个文件nn在这一步中,你将学习如何使用 Ansible Fetch 模块从远程主机获取单个文件。这有助于你快速掌握该模块的基础语法、参数含义以及典型使用场景。nn首先,完成 `/home/labex/project/fetching_a_single_file.yml` 文件。 n在文本编辑器中打开它,并将以下内容添加到 playbook 文件中:nn```yamln- name: Fetch Module Labn hosts: localhostn gather_facts: falsenn tasks:n - name: Fetch a single filen fetch:n src: /home/labex/example/example_1.txtn dest: /home/labex/project/example_1.txtn flat: truen```nn- `fetch`:这是 Ansible 中用于从远程主机拉取文件到本地控制节点的模块。n- `src`:指定要获取的远程文件路径。在本例中,文件路径为 `/home/labex/example/example_1.txt`。 \n- `dest`:指定获取后的文件在本地主机上的保存路径。在本例中,目标路径为 `/home/labex/project/example_1.txt`。 \n- `flat`:此参数用于控制目标路径的生成方式。当设置为 `true` 时,获取到的文件会直接保存到目标目录中,而不会自动创建额外的子目录。这在获取单个文件并保持目录结构简洁时尤其有用。 \n\n在 Ansible 自动化运维场景中,`fetch` 模块常用于将远程主机上的文件复制到本地机器。在此示例中,它会从远程主机的 `/home/labex/example/` 目录中获取名为 `example_1.txt` 的文件,并将其保存到本地主机 `/home/labex/project/` 目录中的 `example_1.txt`。`flat: true` 参数可确保文件直接落到指定位置,而不是生成层级目录。 \n\n然后,使用以下命令运行 playbook: \n\n```bash\nansible-playbook fetching_a_single_file.yml\n``` \n\n示例输出: \n\n```bash\n[WARNING]: No inventory was parsed, only implicit localhost is a vailable\n[WARNING]: provided hosts list is empty, only localhost is a vailable. Note that\nthe implicit localhost does not match 'all'\n\nPLAY [Fetch Module Lab] **************************************************\n\nTASK [Fetch a single file] *****************************************************nchanged: [localhost]nnPLAY RECAP *********************************************************************nlocalhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0\n```nn最后,验证 `example_1.txt` 文件是否已经从远程主机成功获取到本地。nn```bashnll /home/labex/project/example_1.txtn```nn示例输出:nn```bashn-rw-rw-r-- 1 labex labex 23 Mar 14 10:45 /home/labex/project/example_1.txtn```n","need_verify":true,"has_solution":false},{"position":2,"title":"获取多个文件","layout":"doc-workbench-split","text":"## 获取多个文件nn在这一步中,你将通过一次性从远程主机获取多个文件,进一步加深对 Ansible Fetch 模块的理解。这种写法适合批量收集文件,也能帮助你掌握在单个任务中配合循环使用 fetch 的方法。nn首先,完成 `/home/labex/project/fetching_multiple_files.yml` 文件。 n在文本编辑器中打开它,并将以下内容添加到 playbook 文件中:nn```yamln- name: Fetch Module Labn hosts: localhostn gather_facts: falsenn tasks:n - name: Fetch multiple filesn loop:n - example_2.txtn - example_3.txtn fetch:n src: \"/home/labex/example/{{ item }}\"n dest: \"/home/labex/project/{{ item }}\"n flat: truen```nn- `loop`:该关键字用于遍历一个项目列表,并对列表中的每个元素依次执行任务。n- `fetch`:这是 Ansible 用于从远程主机获取文件到本地控制节点的核心模块。n- `src`:指定待获取文件的源路径。`{{ item }}` 占位符会在循环执行时替换为当前文件名,因此会依次从 `/home/labex/example/` 目录中获取 `example_2.txt` 和 `example_3.txt`。n- `dest`:指定获取后的文件在本地主机上的保存路径。同样,`{{ item }}` 占位符可确保每个文件都被保存为对应的文件名。n- `flat`:此参数控制目标路径的处理方式。设置为 `true` 后,文件会直接保存到目标目录中,不会再创建额外子目录。这对于批量获取文件并保持目录清晰非常有帮助。nn在此配置中,playbook 会从远程主机的 `/home/labex/example/` 目录中批量获取多个文件(`example_2.txt` 和 `example_3.txt`),并将它们保存到本地 `/home/labex/project/` 目录中。借助 `loop` 循环结构,你可以高效执行重复性的文件拉取操作,这也是 Ansible Fetch 模块常见的实践方式。nn然后,使用以下命令运行 playbook:nn```bashnansible-playbook fetching_multiple_files.ymln```nn示例输出:nn```bashn[WARNING]: No inventory was parsed, only implicit localhost is a vailablen[WARNING]: provided hosts list is empty, only localhost is a vailable. Note thatnthe implicit localhost does not match 'all'nnPLAY [Fetch Module Lab] **************************************************nnTASK [Fetch multiple files] ****************************************************nchanged: [localhost] => (item=example_2.txt)nchanged: [localhost] => (item=example_3.txt)nnPLAY RECAP *********************************************************************nlocalhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0n```nn最后,验证 `example_2.txt` 和 `example_3.txt` 是否已经从远程主机成功获取到本地。nn```bashnll /home/labex/project/ | grep examplen```nn示例输出:nn```bashn-rw-rw-r-- 1 labex labex 23 Mar 14 10:45 example_1.txtn-rw-rw-r-- 1 labex labex 23 Mar 14 11:00 example_2.txtn-rw-rw-r-- 1 labex labex 23 Mar 14 11:00 example_3.txtn```n","need_verify":true,"has_solution":false},{"position":3,"title":"在 Fetch 模块中使用变量","layout":"doc-workbench-split","text":"## 在 Fetch 模块中使用变量nn在这一步中,你将通过引入变量来学习 Ansible Fetch 模块的进阶用法。借助变量,你可以根据 playbook 中定义的动态值来获取文件,从而提升脚本的灵活性、可维护性和复用性。nn首先,完成 `/home/labex/project/using_variablesin_fetch_modules.yml` 文件。 n在文本编辑器中打开它,并将以下内容添加到 playbook 文件中:nn```yamln- name: Fetch Module Labn hosts: localhostn gather_facts: falsen vars:n file_path: \"/home/labex/example/example_4.txt\"n dest_path: \"/home/labex/project/example_4.txt\"nn tasks:n - name: Fetch files using variablesn fetch:n src: \"{{ file_path }}\"n dest: \"{{ dest_path }}\"\n flat: true\n```\n\n- `vars`:该部分用于定义 playbook 中需要使用的变量。\n- `fetch`:这是 Ansible 中用于从远程主机获取文件到本地控制节点的模块。\n- `src`:指定要获取的文件源路径,这里通过 `file_path` 变量动态传入远程文件路径。\n- `dest`:指定获取到的文件在本地主机上的保存路径,这里通过 `dest_path` 变量动态传入目标文件路径。\n- `flat`:该参数决定目标路径的处理方式。设置为 `true` 时,文件会直接保存到目标目录中,而不会额外创建子目录。这在只获取单个文件且希望目录结构更清晰时非常实用。\n\n在这段配置中,Fetch 模块会根据 `file_path` 变量指定的远程文件路径获取文件,并将其保存到 `dest_path` 变量指定的本地路径中。通过在 Ansible playbook 中使用变量,你可以更方便地复用同一套逻辑来处理不同文件路径,从而提升自动化任务的适配能力。\n\n然后,使用以下命令运行 playbook:\n\n```bash\nansible-playbook using_variablesin_fetch_modules.yml\n```\n\n示例输出:\n\n```bash\n[WARNING]: No inventory was parsed, only implicit localhost is a vailable\n[WARNING]: provided hosts list is empty, only localhost is a vailable. Note that\nthe implicit localhost does not match 'all'\n\nPLAY [Fetch Module Lab] **************************************************nnTASK [Fetch files using variables] *********************************************nchanged: [localhost]nnPLAY RECAP *********************************************************************nlocalhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0n```nn接下来,验证 `example_4.txt` 文件是否已从远程主机成功获取到本地。nn```bashnll /home/labex/project/example_4.txtn```nn示例输出:nn```bashn-rw-rw-r-- 1 labex labex 23 Mar 14 11:16 /home/labex/project/example_4.txtn```nn最后,尝试使用 `-e` 选项指定 `file_path` 和 `dest_path`:nn```bashnansible-playbook using_variablesin_fetch_modules.yml -e file_path=\"/tmp/example_5.txt\" -e dest_path=\"/tmp/target/example_5.txt\"n```nn示例输出:nn```bashn[WARNING]: No inventory was parsed, only implicit localhost is a vailablen[WARNING]: provided hosts list is empty, only localhost is a vailable. Note thatnthe implicit localhost does not match 'all'nnPLAY [Fetch Module Lab] **************************************************nnTASK [Fetch files using variables] *********************************************nchanged: [localhost]nnPLAY RECAP *********************************************************************nlocalhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0n```nn验证 `example_5.txt` 文件是否已从远程主机成功获取到本地。nn```bashnll /tmp/target/example_5.txtn```nn示例输出:nn```bashn-rw-rw-r-- 1 labex labex 23 Mar 14 11:24 /tmp/target/example_5.txtn```n","need_verify":true,"has_solution":false},{"position":4,"title":"总结","layout":"doc-fullscreen","text":"## 总结nn恭喜你完成了 Ansible Fetch 模块实验!通过本实验,你已经掌握了如何使用 Ansible Fetch 模块从远程主机获取文件,并将其复制到本地控制节点。从获取单个文件开始,到批量获取多个文件,再到结合变量实现动态文件获取,你逐步了解了 Fetch 模块在自动化运维中的典型用法。nn通过完成这些实践,你积累了使用 Fetch 模块从受管主机收集文件、日志或工件的实战经验。建议你继续深入学习 Ansible 及其更多常用模块,进一步提升自动化部署与运维效率。nn祝你在 Ansible 自动化学习中一切顺利!n","need_verify":false,"has_solution":false}
来源:https://labex.io/zh/tutorials/ansible-ansible-fetch-module-290159
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。
相关推荐
补充同频道和同主题内容,方便继续浏览更多相关内容。
同类最新
继续查看同栏目最近更新的文章。
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。
Win10专业版U盘安装教程:制作启动盘与完整安装步骤
本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。
Windows10系统字体太小怎么调大
Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。
Win10磁盘占用100%基础排查:从监控到清理的完整步骤
Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。
Windows10系统怎么显示此电脑和控制面板
Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。
