这篇文章上次修改于 422 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
官方文档地址
简介
- shell模块可以看成是万能模块,可以在目标机器上执行shell脚本,也是一个常用模块。但是使用shell模块,ansible不会记录当前的执行状态,可能会出现非幂等性问题(即统一命令多次执行的结果可能是不一样的),一条指令重复执行多次等问题,所以建议尽量使用专有模块来完成工作。
- 对于 Windows 目标,请改用ansible.windows.win_shell模块。
参数
chdir:在哪个目录下执行shell命令,相当于执行shell命令前先cd到对应目录
cmd: 要运行的命令后跟可选参数
creates:如果存在某文件,就不执行shell
executable:修改并指定shell解释器来执行命
free_form:指的就是具体的shell命令,实际上是一个不存在的选项
removes:如果不存在某文件,就不执行shell;与creates左右相反(有点绕)
stdin: 直接将命令的 stdin 设置为指定值
stdin_add_newline: 是否向标准输入数据附加换行符 , 可选值: true(默认), false
例子
# 查看目标机器的缓存使用情况
[root@k8s-master ~]# ansible k8snode -m shell -a "free -m"
192.168.1.9 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 1837 595 85 95 1157 972
Swap: 0 0 0
192.168.1.8 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 1837 853 153 104 830 704
Swap: 0 0 0
#如果存在/data 目录 就不执行ml
[root@k8s-master ~]# ansible k8snode -m shell -a "free -m creates=/data"
192.168.1.9 | SUCCESS | rc=0 >>
skipped, since /data exists
192.168.1.8 | SUCCESS | rc=0 >>
skipped, since /data exists
没有评论
博主关闭了评论...