每日学习-ansible raw模块

Ansible 的raw 模块用于在远程主机上执行 ansible 管理主机上的脚本,与command、shell和script模块类似,raw模块也支持管理windows主机。
raw模块参数:

executable:通过使用绝对路径修改并指定shell解释器执行命令
= free_form:必须参数,自由的指定需要在远程主机上执行的命令,free_form是指自由指定,所以并没有具体的参数名叫free_form

注意:
1、与environment关键字一起使用必须配置有executable参数
2、如果被控主机无python环境,可以使用raw模块,但是要想安全可预测的执行命令,最好使用command或shell模块。

raw模块与command、shell、script模块的区别

command 模块:远程执行简单的 shell 命令和脚本,不可以使用环境变量,支持变量和操作符,但不支持解析特殊符号< > | &等,因为不受用户环境的影响,避免了shell注入的风险,相对shell更安全一些。
shell 模块:远程执行shell命令和脚本,可以使用环境变量,支持变量和操作符,支持特殊符号,存在一定的shell注入风险。
raw 模块:执行底层 shell 命令。command 和 shell 模块都是通过目标主机上的 python 代码启动 /bin/bash 来执行命令的,但目标主机上可能没有安装 python,这时只能使用 raw 模块在远程主机上直接启动。
script 模块:在远程主机上执行脚本文件 ,和 raw 模块一样,不要求目标主机上已经装好 python。


raw模块示例:
修改主机名

- 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注入。

参考:
https://www.jianshu.com/p/2e1931bfb3cb
ansible-doc raw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章