Ansible 的raw 模块用于在远程主机上执行 ansible 管理主机上的脚本,与command、shell和script模块相似,raw模块也支持管理windows主机。
raw模块参数:python
executable:经过使用绝对路径修改并指定shell解释器执行命令
= free_form:必须参数,自由的指定须要在远程主机上执行的命令,free_form是指自由指定,因此并无具体的参数名叫free_formshell注意:
一、与environment关键字一块儿使用必须配置有executable参数
二、若是被控主机无python环境,能够使用raw模块,可是要想安全可预测的执行命令,最好使用command或shell模块。windows
raw模块与command、shell、script模块的区别安全
command 模块:远程执行简单的 shell 命令和脚本,不能够使用环境变量,支持变量和操做符,但不支持解析特殊符号< > | &等,由于不受用户环境的影响,避免了shell注入的风险,相对shell更安全一些。
shell 模块:远程执行shell命令和脚本,能够使用环境变量,支持变量和操做符,支持特殊符号,存在必定的shell注入风险。
raw 模块:执行底层 shell 命令。command 和 shell 模块都是经过目标主机上的 python 代码启动 /bin/bash 来执行命令的,但目标主机上可能没有安装 python,这时只能使用 raw 模块在远程主机上直接启动。
script 模块:在远程主机上执行脚本文件 ,和 raw 模块同样,不要求目标主机上已经装好 python。bash
raw模块示例:
修改主机名ide
- name: change host name file raw: "echo {{host_name|quote}} > /etc/hostname" - name: change host name shell: hostnamectl set-hostname {{host_name|quote}}
Ps:在使用ansible变量加上quote时,防止shell注入。code
参考:
https://www.jianshu.com/p/2e1931bfb3cb
ansible-doc raworm