当前位置: 首页
系统平台
Ansible Script 模块使用指南

Ansible Script 模块使用指南

时间:2026-08-13
转载

{ "position ":0, "title ": "介绍 ", "layout ": "doc-fullscreen ", "text ": " 介绍 n n在本实验中,你将学习如何使用 Ansible 的 Script 模块在远程主机上执行自定义脚本。Script 模块可以让你在目标主机上运行使用任意编程语言编写的

{"position":0,"title":"介绍","layout":"doc-fullscreen","text":"## 介绍\n\n在本实验中,你将学习如何使用 Ansible 的 Script 模块在远程主机上执行自定义脚本。Script 模块可以让你在目标主机上运行使用任意编程语言编写的脚本,从而为自动化运维任务提供更高的灵活性与定制能力。\n","need_verify":false,"has_solution":false},{"position":1,"title":"执行一个简单的脚本","layout":"doc-workbench-split","text":"## 执行一个简单的脚本\n\n在这一步中,你将使用 Ansible 的 Script 模块在远程主机上运行一个简单脚本,了解 Ansible 执行脚本的基本方法。\n\n首先,创建一个新的 Ansible playbook 文件,命名为 `/home/labex/project/script-module-playbook.yaml`,并使用文本编辑器将其打开。 \n将以下内容添加到 playbook 文件中:\n\n```yaml\n- hosts: localhost\n tasks:\n - name: Execute a simple script\n script: /home/labex/project/simple_script.sh\n register: script_output\n\n - name: Display script output\n debug:\n var: script_output.stdout_lines\n```\n\n- `hosts`:用于指定 playbook 要运行的目标主机。在本示例中,目标主机为 `localhost`,因此该 playbook 会在本地主机上执行。\n- `tasks`:表示需要按顺序执行的任务列表。\n- `name`:任务的描述性名称,便于理解当前任务的作用。\n- `script`:任务实际调用的模块参数,用于告诉 Ansible 在目标主机上执行 `/home/labex/project/` 目录下的 `simple_script.sh` 脚本。\n- `register`:用于将脚本执行结果保存到 `script_output` 变量中,便于后续任务继续引用。\n- `debug`:Ansible 中常用的调试模块,可用于输出变量内容。\n- `var`:`debug` 模块的参数,这里用于显示前一个任务产生的标准输出。`script_output.stdout_lines` 表示按行保存的脚本输出内容。\n\n简单来说,这个 playbook 的主要作用是:在本地主机上执行一个 Shell 脚本,并在脚本运行完成后输出其标准输出结果。通过 `register` 保存结果后,再借助 Debug 模块进行展示,是 Ansible Script 模块最常见的基础用法之一。\n\n接下来,创建一个简单的脚本文件,命名为 `/home/labex/project/simple_script.sh`,内容如下:\n\n```bash\n#!/bin/bash\necho \"This is a simple script.\"\n```\n\n确保该脚本文件具有可执行权限(`chmod +x simple_script.sh`),并将其放置到 playbook 中指定的 `/home/labex/project/` 目录下。\n\n最后,使用以下命令运行 playbook:\n\n```bash\nchmod +x simple_script.sh\nansible-playbook script-module-playbook.yaml\n```\n\n观察 playbook 执行后的输出结果,确认脚本是否已成功运行。 \n示例输出:\n\n```bash\n...\nPLAY [localhost] ***************************************************************\nTASK [Gathering Facts] *********************************************************\nok: [localhost]\nTASK [Execute a simple script] *************************************************\nchanged: [localhost]\nTASK [Display script output] ***************************************************\nok: [localhost] => {\n \"script_output.stdout_lines\": [\n \"This is a simple script.\"\n ]\n}\nPLAY RECAP *********************************************************************\nlocalhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0\n```\n这里的 `\"This is a simple script.\"` 就是 `simple_script.sh` 脚本执行后返回的输出内容。\n","need_verify":true,"has_solution":false},{"position":2,"title":"向脚本传递变量"},"layout":"doc-workbench-split","text":"## 向脚本传递变量\n\n在这一步中,你将学习如何从 Ansible playbook 向通过 Script 模块执行的脚本传递变量,这是编写可复用自动化脚本时非常常见的需求。\n\n首先,修改现有的 playbook 文件,删除原有内容,并将以下内容添加到 playbook 文件中:\n\n```yaml\n- hosts: localhost\n tasks:\n - name: Execute script with a variable\n script: /home/labex/project/var_script.sh \"{{ message }}\"\n register: variable_script_output\n\n - name: Display variable script output\n debug:\n var: variable_script_output.stdout_lines\n```\n\n- `script`:这是任务实际执行的命令。`{{ message }}` 表示传递给脚本的 Ansible 变量,双花括号说明该值会在 playbook 执行时被动态替换。\n- `register`:用于将脚本执行结果保存到变量 `variable_script_output` 中,方便后续任务读取和处理。\n- `debug`:用于输出调试信息的 Ansible 模块。\n- `var`:`debug` 模块的参数,这里用来显示上一个任务的标准输出。`variable_script_output.stdout_lines` 表示脚本输出的每一行内容。\n\n总结来说,这个 playbook 会在本地主机上执行一个脚本,并向脚本传入名为 `message` 的变量。脚本执行后的输出会先注册到 `variable_script_output` 变量中,然后再通过 debug 模块打印出来。这也是 Ansible Script 模块处理动态参数的一种常见方式。\n\n接下来,创建一个简单的脚本文件,命名为 `/home/labex/project/var_script.sh`,内容如下:\n\n```bash\n#!/bin/bash\necho $1\n```\n\n确保脚本文件具有可执行权限(`chmod +x var_script.sh`),并将脚本文件放置在 playbook 中指定的 `/home/labex/project/` 目录下。\n\n最后,在运行 playbook 时,通过 `-e` 选项传递 `message` 变量作为额外变量:\n\n```bash\nchmod +x var_script.sh\nansible-playbook script-module-playbook.yaml -e \"message=Hello,Ansible\"\n```\n\n观察脚本执行后的输出,其中应包含你传入的消息内容。 \n示例输出:\n\n```bash\n...\nPLAY [localhost] ***************************************************************\n\nTASK [Gathering Facts] *********************************************************\nok: [localhost]\n\nTASK [Execute script with a variable] ******************************************\nchanged: [localhost]\n\nTASK [Display variable script output] ******************************************\nok: [localhost] => {\n \"variable_script_output.stdout_lines\": [\n \"Hello,Ansible\"\n ]\n}\n\nPLAY RECAP *********************************************************************\nlocalhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0\n```\n\n这里的 `\"Hello,Ansible\"` 是 `var_script.sh` 脚本接收到参数后输出的结果。\n","need_verify":true,"has_solution":false},{"position":3,"title":"处理脚本失败","layout":"doc-workbench-split","text":"## 处理脚本失败\n\n在这一步中,你将学习在使用 Ansible Script 模块执行脚本时,如何处理脚本执行失败的情况。这里的失败通常指脚本返回非零退出状态码。\n\n首先,修改现有的 playbook 文件,删除所有内容并添加以下内容到 playbook 文件中:\n\n```yaml\n- hosts: localhost\n tasks:\n - name: Execute a failing script\n script: /home/labex/project/failing_script.sh\n register: failing_script_output\n ignore_errors: yes\n\n - name: Handle script failure\n debug:\n msg: \"The script failed. Performing fallback action.\"\n when: failing_script_output.failed\n```\n\n- `script`:这是任务实际执行的命令,用于调用目标脚本。\n- `register`:用于将脚本执行结果注册到变量 `failing_script_output` 中,便于后续判断任务状态。\n- `ignore_errors`:将该参数设置为 `yes` 后,即使脚本执行失败,Ansible 也会继续执行后续任务。失败信息会被记录在 `failing_script_output` 变量中。\n- `debug`:用于输出调试信息的 Ansible 模块。\n- `msg`:`debug` 模块的参数,用于输出一条提示消息,表示脚本执行失败并触发了后续处理逻辑。\n- `when`:条件判断语句,确保该任务仅在前一个脚本任务失败时执行。如果脚本执行成功,此任务会被自动跳过。\n\n总结来说,这个 playbook 会先尝试执行一个可能失败的脚本。当脚本返回失败状态时,playbook 不会立即中断,而是借助 `ignore_errors: yes` 继续往下执行,并通过 `when: failing_script_output.failed` 判断是否需要触发失败处理逻辑。这是 Ansible 自动化运维中非常实用的容错处理方式。\n\n接下来,创建一个失败的脚本文件,命名为 `/home/labex/project/failing_script.sh`,内容如下:\n\n```bash\n#!/bin/bash\nexit 1\n```\n\n确保脚本文件具有可执行权限(`chmod +x failing_script.sh`),并将脚本文件放置在 playbook 中指定的 `/home/labex/project/` 目录下。\n\n最后,运行 playbook,并观察失败脚本虽然返回错误,但由于设置了 `ignore_errors: yes`,整个 playbook 仍会继续执行。\n\n```bash\nchmod +x failing_script.sh\nansible-playbook script-module-playbook.yaml\n```\n\nplaybook 会显示一条调试消息,用于说明脚本失败并执行了回退处理。 \n示例输出:\n\n```bash\n...\nPLAY [localhost] ***************************************************************\n\nTASK [Gathering Facts] *********************************************************\nok: [localhost]\n\nTASK [Execute a failing script] ************************************************\nfatal: [localhost]: FAILED! => {\"changed\": true, \"msg\": \"non-zero return code\", \"rc\": 1, \"stderr\": \"\", \"stderr_lines\": [], \"stdout\": \"\", \"stdout_lines\": []}\n...ignoring\n\nTASK [Handle script failure] ***************************************************\nok: [localhost] => {\n \"msg\": \"The script failed. Performing fallback action.\"\n}\n\nPLAY RECAP *********************************************************************\nlocalhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1\n```\n\n这里的 `\"msg\": \"The script failed. Performing fallback action.\"` 表示 `failing_script.sh` 脚本执行失败后,Ansible 已按预期进入失败处理流程。\n","need_verify":true,"has_solution":false},{"position":4,"title":"总结","layout":"doc-fullscreen","text":"## 总结\n\n恭喜!你已经顺利完成了 Ansible Script 模块实验。通过本实验,你学习了如何使用 Script 模块在远程主机上执行自定义脚本、如何向脚本传递变量,以及在脚本执行失败时如何进行异常处理。\n\nScript 模块能够充分利用现有脚本资源,为自动化任务提供更强的灵活性和扩展能力,因此在 Ansible 自动化运维场景中非常实用。不过,在实际使用过程中,仍需确保脚本本身安全、稳定且可靠,并对所有输入参数进行必要校验,以降低潜在的安全风险。\n\n现在,你已经对 Ansible Script 模块的基本用法有了较为清晰的理解,可以将其集成到自己的 Ansible playbook 中,用于自动化执行各类运维任务,并进一步实现更复杂、更高级的自动化场景。祝你使用 Ansible 编写自动化脚本顺利!\n","need_verify":false,"has_solution":false}

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

时间:2026-09-01 16:50
Win10专业版U盘安装教程:制作启动盘与完整安装步骤

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

时间:2026-09-01 16:50
Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

时间:2026-08-27 15:46
Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

时间:2026-08-27 15:45
Windows10系统怎么显示此电脑和控制面板

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。

时间:2026-08-27 15:45
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全