ansible 核心模块之 script

script模块

script 模块用于在远程主机上执行 ansible 管理主机上的脚本

参数 (=号后面的参数强制要求):

  • chdir

在执行对应的命令之前,会先进入到此参数指定的目录中
[Default: (null)]
version_added: 0.6

  • creates

当指定的文件存在时,就不执行对应命令
[Default: (null)]

  • removes

当指定的文件不存在时,就不执行对应命令
[Default: (null)]
version_added: 0.8

  • = free_form

必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫 free_form

注意:

  • 最好编写 ansible 模块而不是推送脚本
  • windows 目标也支持此模块
  • 如果本地脚本的路径包含空格,则需要用引号引起来

区别:

  • command、shell、raw 和 script 这四个模块的作用和用法都类似,都用于远程执行命令或脚本:
  • command 模块:执行简单的远程 shell 命令,但不支持解析特殊符号 < > | ; & 等,比如需要重定向时不能使用 command 模块,而应该使用shell模块。但command 模块更安全,因为他不受用户环境的影响, 也很大的避免了潜在的 shell 注入风险
  • shell 模块:和command相同,但是支持解析特殊 shell 符号,但这样有潜在的 shell 注入风险
  • raw 模块:执行底层 shell 命令。command 和 shell 模块都是通过目标主机上的 python 代码启动 /bin/bash 来执行命令的,但目标主机上可能没有安装 python,这时只能使用 raw 模块在远程主机上直接启动
  • script 模块:在远程主机上执行脚本文件 ,和 raw 模块一样,不要求目标主机上已经装好 python

实例:

# Example from Ansible Playbooks
- script: /some/local/script.sh --some-arguments 1234

# Run a script that creates a file, but only if the file is not yet created
- script: /some/local/create_file.sh --some-arguments 1234
  args:
    creates: /the/created/file.txt

# Run a script that removes a file, but only if the file is not yet removed
- script: /some/local/remove_file.sh --some-arguments 1234
  args:
    removes: /the/removed/file.txt

# Run a script using a executable in a non-system path
- script: /some/local/script
  args:
    executable: /some/remote/executable

# Run a script using a executable in a system path
- script: /some/local/script.py
  args:
    executable: python3

你可能感兴趣的:(ansible 核心模块之 script)