一、基本语法格式:
格式:ansible 受控主机IP/主机组 [选项] 参数
选项
-k 手动输入SSH协议的代码
-l 指定主机清单文件
-m 指定要使用的模块名
-a 设置传递给模块的参数
-M 指定要使用的模块路径
-S 使用su命令
-T 设置SSH协议的连接超时时间
--version 查看版本信息
-h 帮助信息
例如:ansible 192.168.10.128 -m ping -k
使用ansible-doc -l 可以列出当前版本已经安装的所有模块
使用ansible-doc 模块名 可以获取模块的使用帮助信息
二、ansible常见模块
ansible常用的模块名
ansible-doc 模块名 可以查看模块名的信息,下面有一个EXAMPLES:字段为示例
ping 检查受管主机的网络是否能够连通
yum 安装、更新及卸载软件包
示例:ansible all -m yum -a 'name=httpd state=latest' name为安装的软件包名称,state=latest代表状态为latest,下载版本最新的软件包
yum_repository 管理主机的软件仓库配置文件
template 复制模版文件到受管主机
copy 新建、修改及复制文件
示例:ansible all -m copy -a 'src=/etc/yum.repos.d/CentOS-Base.repo dest=/etc/yum.repo.d/' 拷贝主控机上的文件到all被控机上(src为需要拷贝的源文件路径,dest为拷贝到的目的主机上的目录)
user 创建、修改及删除用户
group 创建、修改及删除用户组
service 启动、关闭及查看服务状态
get_url 从网络下载文件
file 设置文件权限及创建快捷方式
模块常用参数
path=被管理文件的路径;
state=状态;
state状态常用参数
absent 删除目标文件
touch 如果目标文件不存在,则创建文件;如果文件存在,则更改目标文件的时间戳
directory 创建目录
hard 给目标文件参加软链接;与src一起用
link 给目标文件创建软链接;与src一起用
setype=安全上下文属性;
owner=文件所属主;
group=文件的所属组;
mode=文件的权限(0644;0755);
src=链接文件的路径
示例
ansible all -m file -a 'path=/mnt/xxx state=absent' 删除一个文件
ansible all -m file -a 'path=/mnt/xxx state=touch owner=cp group=cp mode=0755' 创建一个文件,所属主为cp,所属组为cp,权限为0755
cron 添加、修改及删除计划任务
command 直接执行用户指定的命令
ansible中默认执行的模块,默认自带-m command;不支持($、<、>、|)等特殊符号,shell模块支持
shell 直接执行用户指定的命令(支持特殊字符)
示例:在主控机上使用ansible的shell模块,对受控主机挂载源镜像
ansible all -m shell -a 'mkdir /mnt/cdrom' -m 使用shell模块,在受控主机上创建挂载点
ansible all -m shell -a 'mount /dev/cdrom /mnt/cdrom' 在受控主机上手动挂载
ansible all -m shell -a 'mount -a' 更新
ansible all -m shell -a 'umount /mnt/cdrom' 卸载
ansible all -m shell -a 'lsblk' 可以输入命令回显
debug 输出调试或报错信息
示例:ansible all -m debug -a 'msg=666'
mount 挂载硬盘设备文件
示例:ansible all -m mount -a 'path=/mnt/cdrom src=/dev/cdrom fstype=iso9660 state=present' all表示所有主机;-m使用mount模块,-a传递给mount模块的参数为路径、src、类型、state状态(present表示执行挂载操作,unmounted表示执行卸载操作)
filesystem 格式化硬盘设备文件
lineinfile 通过正则表达式修改文件内容
setup 手机受管主机上的系统及变量信息
firewalld 添加、修改及删除防火墙策略
lvg 管理主机的物理卷及卷组设备
lvol 管理主机的逻辑卷设备
三、示例
yum模块:ansible all -m 192.168.10.129 -a 'name=httpd state=latest'
copy模块:ansible 192.168.10.129 -m copy -a 'src=/etc/yum.repos.d/CentOS-Base.repo dest=/etc/yum.repo.d/'
file模块:ansible 192.168.10.129 -m file -a 'path=/mnt/xxx state=touch owner=cp group=cp mode=0755'
shell模块:ansible 192.168.10.129 -m shell -a 'lsblk'
mount模块:ansible 192.168.10.129 -m mount -a 'path=/mnt/cdrom src=/dev/cdrom fstype=iso9660 state=present'