04ansible shell script模块使用案例

本文详细介绍了Ansible的Shell模块和Script模块的使用案例,包括如何利用Shell模块执行命令、条件判断,以及Script模块在自动化运维中的应用,强调了在受控主机上执行本地脚本的便利性。

04ansible shell script模块使用案例

标签(空格分隔): ansible后


内容说明

请添加图片描述

shell模块

说明
请添加图片描述
演示
在这里插入图片描述

模块2

请添加图片描述
演示
在这里插入图片描述
创建成功
在这里插入图片描述

模块3

请添加图片描述
演示
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
chdir 创建多个文件时 不用重复写绝对路径
ansible-doc shell

模块4

请添加图片描述
演示

ansible test -m shell -a “ssh-keygen -f ~/.ssh/id_rsa -N ‘’ creates=~/.ssh/id_rsa”
在这里插入图片描述
test 无密钥文件
在这里插入图片描述

在这里插入图片描述
创建成功
在这里插入图片描述
再次执行,跳过,提示文件已存在

ansible node1,node2 -m shell -a ‘unzip /root/test.zip removes=/bin/unzip’
在这里插入图片描述
一个装unzip并且有文件,有个没装unzip当有文件
在这里插入图片描述
有unzip 执行成功, 无unzip跳过不执行
这是判断模块
帮助文档
在这里插入图片描述

scipt模块

请添加图片描述
演示
在这里插入图片描述
受控主机的yum要可以使用
在这里插入图片描述

脚本放在受控主机的临时目录下,执行完成后自动删除
在这里插入图片描述

<think> 我们被要求提供Ansible的ping、command、shell、cron、copy模块各两个实例。同时,回答中需要引用站内引用内容(引用[1]到引用[4])。请注意,用户在上一个问题中已经提到了这些模块,并且我们有一些引用材料可供参考。 根据引用[1]和[2]:command模块是默认模块,用于在远程执行命令,但注意它不具有幂等性(引用[2])。引用[3]提到script模块不具有幂等性,而引用[4]给出了cron模块的示例。 下面我们为每个模块提供两个实例: 1. ping模块:用于测试主机的可达性。 实例1:测试所有主机的连通性 ansible all -m ping 实例2:测试指定主机组(如webservers)的连通性 ansible webservers -m ping 2. command模块:在远程主机上执行命令(默认模块)。 注意:command模块不支持管道、重定向等shell特性(引用[2]提到它是默认模块,但另外引用[2]也说明了基本格式)。 实例1:在远程主机上执行date命令 ansible webservers -m command -a 'date' 实例2:在远程主机上执行命令前切换目录(使用chdir参数) ansible dbservers -m command -a 'chdir=/tmp ls' 3. shell模块:在远程主机上通过shell执行命令(支持管道、重定向等)。 实例1:在远程主机上使用grep过滤进程 ansible all -m shell -a 'ps aux | grep nginx' 实例2:在远程主机上执行一个带有重定向的命令 ansible webservers -m shell -a 'echo "Hello World" > /tmp/hello.txt' 4. cron模块:管理cron定时任务。 引用[4]中有一个例子:定义一个时间任务,每隔3分钟执行一次。 实例1:添加一个每5分钟执行一次时间记录的任务 ansible all -m cron -a 'name="time logger" minute="*/5" job="date >> /tmp/time.log"' 实例2:移除一个cron任务(通过state=absent) ansible webservers -m cron -a 'name="time logger" state=absent' 5. copy模块:复制文件到远程主机。 实例1:将本地文件复制到远程主机,并设置权限 ansible webservers -m copy -a "src=/etc/hosts dest=/tmp/hosts mode=0644 owner=root" 实例2:复制内容到远程文件(使用content参数) ansible dbservers -m copy -a 'content="Hello from Ansible" dest=/tmp/ansible.txt' 注意:在引用中,引用[2]提到了command模块的chdir参数和creates/removes参数(这里我们没有使用creates/removes,但可以补充说明),引用[4]给出了cron模块的用法示例。 我们将按照要求,在回答中自然地添加引用标识。例如,在提到command模块是默认模块时,可以引用[1]和[2];在cron模块的实例中引用[4]。 由于每个模块要求两个实例,我们每个模块都给出了两个。 最后,按照要求生成相关问题。 </think> ### Ansible 常用模块使用实例 #### 📡 1. **ping 模块** 用于测试主机连通性,Ansible 的核心健康检查工具[^1]。 **实例 1:基础连通性测试** ```bash ansible all -m ping ``` 测试所有主机连通性,返回 `pong` 表示成功[^1]。 **实例 2:指定主机组测试** ```bash ansible webservers -m ping -i custom_inventory.ini ``` 测试 `webservers` 主机组连通性,显式指定 inventory 文件。 --- #### 💻 2. **command 模块** 默认远程命令执行模块,不支持管道符等特性[^2]。 **实例 1:执行简单命令** ```bash ansible db_servers -m command -a 'date' ``` 在数据库服务器组查看当前时间[^2]。 **实例 2:带参数的目录操作** ```bash ansible app_servers -m command -a 'chdir=/tmp ls -l' ``` 在应用服务器组的 `/tmp` 目录下列文件(使用 `chdir` 参数)[^2]。 --- #### 🐚 3. **shell 模块** 支持管道符、重定向等完整 Shell 特性[^3]。 **实例 1:带管道的进程检查** ```bash ansible all -m shell -a 'ps aux | grep nginx | wc -l' ``` 统计所有主机上 Nginx 进程数量。 **实例 2:文件操作** ```bash ansible webservers -m shell -a 'echo "New config" > /etc/app.conf' ``` 通过重定向快速生成配置文件(⚠️ 注意幂等性问题)[^3]。 --- #### 4. **cron 模块** 定时任务管理模块,支持幂等操作。 **实例 1:创建定时任务** ```bash ansible backups -m cron -a \ 'name="Daily Backup" minute=0 hour=2 job="/opt/scripts/backup.sh"' ``` 每天 2:00 执行备份脚本(自动添加注释标识)[^4]。 **实例 2:删除定时任务** ```bash ansible all -m cron -a 'name="Old Job" state=absent' ``` 删除所有主机上名为 "Old Job" 的定时任务。 --- #### 📁 5. **copy 模块** 文件分发模块,支持权限控制和幂等性[^1]。 **实例 1:基础文件分发** ```bash ansible webservers -m copy -a \ "src=/local/nginx.conf dest=/etc/nginx/nginx.conf owner=root mode=0644" ``` 分发配置文件并设置权限[^1]。 **实例 2:动态内容生成** ```bash ansible db_servers -m copy -a \ 'content="MAX_CONNECTIONS=100\nLOG_LEVEL=info" dest=/etc/db.conf' ``` 直接在内存中生成配置文件内容并分发。 --- ### ⚠️ 关键注意事项 1. **幂等性**:command/shell 模块可能重复执行,建议优先使用 copy/cron 等幂等模块[^2][^3] 2. **安全审计**:高危操作前使用 `--check` 模拟运行 ```bash ansible-playbook deploy.yml --check --diff ``` 3. **环境隔离**:生产环境操作前应在测试环境验证
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值