关于Ansible模块 ⑥

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


内容在继《关于Ansible的模块 ①》《关于Ansible的模块 ②》《关于Ansible的模块 ③》《关于Ansible的模块 ④》《关于ansible的模块 ⑤》之后,继续学习Ansible常用模块之shell模块。

shell模块,在远程节点上通过/bin/sh执行命令。如果一个操作可以通过yum、copy实现,那么建议不要使用shell、command这样通用的命令模块。因为通用的命令模块不会根据具体操作的特点进行状态判断,所以当没有必要重新再执行的时候,它还是会重新执行一遍。

shell模块支持$HOME、、"<"、">"、"|"、";"、"&"等操作。

1. 常用参数

|-------------------|---------|-------------------------------|
| 参数 | 默认值 | 含义 |
| cmd | null | 指定要运行的命令 |
| chdir | null | 在运行命令之前,先进入该目录 |
| creates | null | 如文件存在,则不会运行该步骤 |
| removes | null | 如文件不存在,则不会运行该步骤 |
| executable | null | 更改用于执行命令的shell,需要指定可执行文件的绝对路径 |
| free_form | null | shell模块接受一个自由形式的命令作为字符串来运行 |
| stdin | null | 将命令的stdin直接设置为指定的值 |
| stdin_add_newline | | 是否向标准输入数据追加换行符 |
| warn | | 是否启用任务告警 |

2. 使用示例

2.1 查看远程主机文件是否存在

复制代码
ansible all -m shell -a "ls /tmp|grep test.sh"

2.2 查看文件内容:

复制代码
ansible all -m shell -a "cat /tmp/test.sh"

2.3 查看远程主机IP

复制代码
ansible all -m shell -a "ifconfig ens32|awk -F \"[ ]+\" 'NR==2{print \$3}'"

2.4 创建一个文件并写入内容

复制代码
ansible all -m shell -a 'echo "this is shell test">>/tmp/shell.txt'

2.5 执行远程主机指定脚本

复制代码
ansible all -m shell -a "/tmp/test.sh"

2.6 执行命令前更换目录

复制代码
ansible all -m shell -a 'chdir=/tmp echo "this is shell test">shell.txt'

未完待续......

感谢您的阅读与分享!

相关推荐
终端行者9 小时前
Jenkins Pipeline 企业级用法 参数化构建+Ansible发布---上
docker·ansible·jenkins·cicd
淼淼爱喝水12 小时前
【Ansible 入门实战】三种变量详解
java·linux·数据库·ansible·playbook
http阿拉丁神猫2 天前
ansible脚本解读
服务器·ansible·apache
汪汪大队u4 天前
基于 K8s 的物联网平台运维体系:Ansible+Zabbix 自动化监控与故障自愈(一)—— 环境准备与 Zabbix Server 部署
运维·kubernetes·自动化·ansible·zabbix
xcLeigh4 天前
IoTDB JDBC 完整使用教程:连接、查询、批处理与字符集配置
开发语言·数据库·qt·iotdb·查询·批处理·连接
IT大白鼠7 天前
Ansible vs 运维智能体:自动化工具的优劣对比与适用场景分析
运维·自动化·ansible
悠悠121389 天前
从0到1掌握Ansible:让自动化运维不再是梦想
运维·自动化·ansible
卧室小白10 天前
ansible自动化
ansible
yuezhilangniao11 天前
Ansible基础 ansible入门 针对不同python3版本 - 含 Terraform 入门联动
运维·自动化·ansible
Koma_zhe13 天前
【Ansible开源自动化运维工具】别再手动装监控了,Ansible能让上百台机器同时搞定Node Exporter(1)
运维·开源·ansible