运行 带有参数的脚本通过 ansible
Running script with arguments through ansible
[Ansible 版本 == 2.1.0]
为了运行目标服务器本地存在的脚本,我们可以使用Ansible的"command"模块。以下可以轻松完成:
- name: Executing getpkgs.sh to download packages.
command: sh "/path/to /dir/scriptName.sh" arg1 arg2 arg3 arg4
我将我的脚本名称和参数存储在 ansible 变量中。例如,以下变量包含所有脚本名称和要传递给这些脚本的参数:
scripts_to_execute:
- { filename: "/path/to/file/file1.sh", args: "arg11 arg12 arg13"}
- { filename: "/path/to/file/file2.sh", args: "arg21 arg22"}
- { filename: "/path/to/file/file3.sh", args: "arg31 arg32 arg33 arg34"}
并且我希望所有这些已经存在于目标服务器上的文件使用 with_items 执行。尝试实现如下目标:
- name: Executing all files.
command: sh "{{item.filename}}" "{{item.args}}"
with_items: scripts_to_execute
我正在尝试传递脚本名称,后跟包含要传递到脚本中的所有参数的字符串。但它正在将这串参数视为单个参数。
But it is considering that string of arguments as a single argument.
我认为这是有道理的,因为您在引号中传递了参数。你试过不加引号吗?
- name: Executing all files.
command: sh "{{item.filename}}" {{item.args}}
with_items: scripts_to_execute
[Ansible 版本 == 2.1.0]
为了运行目标服务器本地存在的脚本,我们可以使用Ansible的"command"模块。以下可以轻松完成:
- name: Executing getpkgs.sh to download packages.
command: sh "/path/to /dir/scriptName.sh" arg1 arg2 arg3 arg4
我将我的脚本名称和参数存储在 ansible 变量中。例如,以下变量包含所有脚本名称和要传递给这些脚本的参数:
scripts_to_execute:
- { filename: "/path/to/file/file1.sh", args: "arg11 arg12 arg13"}
- { filename: "/path/to/file/file2.sh", args: "arg21 arg22"}
- { filename: "/path/to/file/file3.sh", args: "arg31 arg32 arg33 arg34"}
并且我希望所有这些已经存在于目标服务器上的文件使用 with_items 执行。尝试实现如下目标:
- name: Executing all files.
command: sh "{{item.filename}}" "{{item.args}}"
with_items: scripts_to_execute
我正在尝试传递脚本名称,后跟包含要传递到脚本中的所有参数的字符串。但它正在将这串参数视为单个参数。
But it is considering that string of arguments as a single argument.
我认为这是有道理的,因为您在引号中传递了参数。你试过不加引号吗?
- name: Executing all files.
command: sh "{{item.filename}}" {{item.args}}
with_items: scripts_to_execute