Ansible AD-Hoc ansible 批量执行命令
- ping 检查主机连通性
- shell 批量执行shell命令
- command 默认模块,适用于简单命令(不支持特殊符号例如管道符|)
- script 分发脚本并执行
- file
- copy
使用格式
ansible 执行主机清单 主机组 指定模块 指定动作(参数)
ping 模块
# -i 指定hosts文件位置,默认是/etc/ansible/hosts
ansible -i /etc/ansible/hosts data -m ping
script 模块
# 在目标机器上传递并执行/opt/test.sh
ansible -i /etc/ansible/hosts data -m script -a "/opt/test.sh"
# 带参数 chdir 改变远程目标运行位置
ansible -i /etc/ansible/hosts data -m script -a '/opt/get_pwd.sh chdir=/tmp'
file模块
常用参数
- path 路径,必要参数
- src 用于指定源文件
- state
state=file | 更新文件状态 |
state=touch | path不存在则创建空文件,存在则同file |
state=directory | 创建目录 |
state=link | 创建/更新软连接 |
state=absent | 删除 |
示例:
# 创建目录
ansible -i /etc/ansible/hosts data -m file -a 'path=/tmp/test/ansible state=directory'
# 创建文件
ansible -i /etc/ansible/hosts data -m file -a 'path=/tmp/test/ansible/test state=touch'
# 创建软连接
ansible -i /etc/ansible/hosts data -m file -a 'src=/tmp/test/ansible/test dest=/tmp/test state=link'
# 验证
ansible -i /etc/ansible/hosts date -a 'ls -l /tmp/test
copy 模块
参数
src | 源文件source |
dest | 目标文件destination |
backup | backup=yes 会在覆盖操作前进行备份 |
mode | 修改权限 数字权限 644 755 等 |
owner | 修改所有者 |
group | 修改搜有组 |
注意ansible中对路径是有严格要求的:
- /结尾表示目录中的内容 /tmp/path/
- 没有/结尾表示目录+目录内容 /tmp/path
建议将目录打包传递。
# src参数路径以/结尾,将目录内的文件全部复制到目标主机/tmp目录下
ansible data -m copy -a 'src=/opt/dir/ dest=/tmp/'
# src参数路径不以/结尾,将目录整个复制到目标主机/tmp目录下
ansible data -m copy -a 'src=/opt/dir dest=/tmp/'
# backup在文件有变化的情况下会备份源文件
# 此示例中修改/opt/dir/a 文件
ansible data -m copy -a 'src=/opt/dir dest=/tmp/ backup=yes'
# 验证结果如图