ansible常用模块之 -- script -- 传输本地脚本后,在远程节点上运行该脚本
script – 传输本地脚本后,在远程节点上运行该脚本
一、摘要
- script 模块接受脚本名称,后跟一列以空格分隔的参数。
- 需要一个 free form 命令或 cmd 参数,参见示例。
- 路径上的本地脚本将被传输到远程节点,然后执行。
- 给定的脚本将通过远程节点上的shell环境进行处理。
- 这个模块不需要远程系统上的python,就像 raw 模块一样。
- Windows目标也支持此模块。
二、参数
参数 | 选项/默认值 | 描述 |
---|---|---|
chdir | 在运行脚本之前,在远程节点上切换到此目录。 | |
cmd string | 要运行的本地脚本的路径,后跟可选参数。 | |
creates | 如果远程节点上的文件名已经存在,则不会运行此步骤。 | |
decrypt boolean | · yes ← · no | 此选项使用vault控制源文件的自动解密。 |
executable | 用于调用脚本的可执行文件的名称或路径。 | |
free_form | 本地脚本文件的路径,后跟可选参数。 | |
removes | 远程节点上的文件名,如果该文件名不存在,则不会运行此步骤。 |
三、示例
# 运行带有参数的脚本(自由形式)
- name: Run a script with arguments (free form)
script: /some/local/script.sh --some-argument 1234
# 运行带有参数的脚本(使用'cmd'参数)
- name: Run a script with arguments (using 'cmd' parameter)
script:
cmd: /some/local/script.sh --some-argument 1234
# 只有当远程节点上不存在file.txt文件时,才能运行脚本
- name: Run a script only if file.txt does not exist on the remote node
script: /some/local/create_file.sh --some-argument 1234
args:
creates: /the/created/file.txt
# 只有当远程节点上存在file.txt文件时,才运行脚本
- name: Run a script only if file.txt exists on the remote node
script: /some/local/remove_file.sh --some-argument 1234
args:
removes: /the/removed/file.txt
# 在非系统路径中使用可执行文件运行脚本
- name: Run a script using an executable in a non-system path
script: /some/local/script
args:
executable: /some/remote/executable
# 使用系统路径中的可执行文件运行脚本
- name: Run a script using an executable in a system path
script: /some/local/script.py
args:
executable: python3
官方文档:https://docs.ansible.com/ansible/2.9/modules/script_module.html#script-module