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

Ansible学习笔记07:常用模块01_ansible

script 模块

# 在目标机器上传递并执行/opt/test.sh
 ansible -i /etc/ansible/hosts data -m script -a "/opt/test.sh"

Ansible学习笔记07:常用模块01_ansible_02

# 带参数 chdir 改变远程目标运行位置
ansible -i /etc/ansible/hosts data -m script -a '/opt/get_pwd.sh chdir=/tmp'

Ansible学习笔记07:常用模块01_ansible_03

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

Ansible学习笔记07:常用模块01_模块_04

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/'

Ansible学习笔记07:常用模块01_ansible_05

#  src参数路径不以/结尾,将目录整个复制到目标主机/tmp目录下
ansible data -m copy -a 'src=/opt/dir dest=/tmp/'

Ansible学习笔记07:常用模块01_模块_06

# backup在文件有变化的情况下会备份源文件
# 此示例中修改/opt/dir/a 文件
ansible data -m copy -a 'src=/opt/dir dest=/tmp/ backup=yes'
# 验证结果如图

Ansible学习笔记07:常用模块01_模块_07