script

script模块可以帮助我们在远程主机上执行ansible主机上的脚本,也就是说,脚本一直存在于ansible主机本地,不需要手动拷贝到远程主机后再执行。

学习此模块之前,请先参考本文中的command模块。

此处我们介绍一些script模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。

free_form参数 :必须参数,指定需要执行的脚本,脚本位于ansible主机本地,并没有具体的一个参数名叫free_form,具体解释参考command模块。

chdir参数 : 此参数的作用就是指定一个远程主机中的目录,在执行对应的脚本之前,会先进入到chdir参数指定的目录中。

creates参数 :使用此参数指定一个远程主机中的文件,当指定的文件存在时,就不执行对应脚本,可参考command模块中的解释。

removes参数 :使用此参数指定一个远程主机中的文件,当指定的文件不存在时,就不执行对应脚本,可参考command模块中的解释。

示例如下: ansible本机创建脚本 #!/bin/bash touch test

在本机执行脚本在客户端指定目录下执行:

[root@jack7-1 ~]# ansible jack6-2 -m shell -a 'chdir=/tmp/ ls -a | grep test'

jack6-2 | CHANGED | rc=0 >> .test test2 .test.7046.2020-08-30@17:25:00~ .test.7161.2020-08-30@17:27:21~

[root@jack7-1 ~]# ansible jack6-2 -m script -a 'chdir=/tmp/ creates=/tmp/test /root/test.sh'

jack6-2 | CHANGED => { "changed": true, "rc": 0, "stderr": "Shared connection to 192.168.179.137 closed.\r\n", "stderr_lines": [ "Shared connection to 192.168.179.137 closed." ], "stdout": "", "stdout_lines": [] }

[root@jack7-1 ~]# ansible jack6-2 -m shell -a 'chdir=/tmp/ ls -a | grep test'

jack6-2 | CHANGED | rc=0 >> test .test test2 .test.7046.2020-08-30@17:25:00~ .test.7161.2020-08-30@17:27:21~

可以看到文件已经创建