command 模块
command 模块在目标上执行简单命令。
command 模块在临时命令模式中的默认模块,相当于默认添加了 -m command 参数。
命令不能使用变量比如$HOME,同时不能使用特殊字符比如 | 或 & 等字符,否则会出现无法识别,如果需要使用特殊字符可以考虑是用 shell 模块。
常用参数
| 选项参数 | 选项说明 |
|---|---|
| chdir | 在执行命令前进入到指定目录 |
| creates | 定义一个文件是否存在,如果不存在则运行相应命令,存在则跳过执行 |
| removes | 定义一个文件是否存在,如果存在则运行相应命令,如果不存在则跳过执行 |
更多参数可以使用命令 ansible-doc -s command 获取更多使用相关的文档或者查看官方文档。
一些实例
查看被控服务器主机名
bashansible web -i ./inventory.ini -m command -a "hostname" ansible web -i ./inventory.ini -a "hostname" # 这个命令和上面的效果一致查看被控服务器内存
bashansible web -i ./inventory.ini -a "free -m"被控服务器创建文件
bashansible web -i ./inventory.ini -a "touch /opt/ansible.txt" ansible web -i ./inventory.ini -a "touch ansible.txt chdir=/opt"查看被控服务器文件
bashansible web -i ./inventory.ini -a "cat /opt/ansible.txt"查看被控服务器负载
bashansible web -i ./inventory.ini -a "uptime"创建
test用户bashansible web -i ./inventory.ini -a "useradd test"删除
test用户bashansible web -i ./inventory.ini -a "userdel -r test"打包备份
/var/log文件并放到/opt目录下bashansible web -i ./inventory.ini \ -a "tar -zcvf /opt/log.tar.gz /var/log chdir=/"注意: 备份文件的文件夹是否存在
打包备份
/var/log文件并放到不存在目录/backup目录下bash# 1. 执行下面的命令会抛出 /backup 目录不存在的错误 ansible web -i inventory.ini \ -a "tar zcf /backup/log.tar.gz var/log chdir=/" # 2. 使用 removes 参数,保证目录存在时才执行命令 ansible web -i inventory.ini \ -a "tar zcf /backup/log.tar.gz var/log chdir=/ removes=/backup" # 3. 先创建出目录,在执行备份命令 ansible web -i inventory.ini \ -a "mkdir -p /backup" ansible web -i inventory.ini \ -a "tar zcf /backup/log.tar.gz var/log chdir=/"