ansible-doc -l |grep 模块名 //模块搜索
ansible-doc 模块名 =============> /EXAMPLE //查看帮助
针对于普通用户在命令行执行ansible命令:
ansible 主机或主机集合 -m 模块 -u 普通用户 -a '远程命令' -become=true
eg:
ansible 10.10.31.100 -m apt -a 'name="safe-rm" state=present' -become=true
在ansible.cfg配置文件的同级目录下执行
1.command模块: 远程执行命令,并返回结果到ansible主机
ansible 主机或主机集合 -m(模块) command -a(命令) '远程命令'
“<” ,“>”, “|”(管道), “;", “&”,“ $” 都只能在shell模块中执行,该模块不支持|管道命令
- chdir:切换目录
ansible 主机 -m command -a 'chdir=/opt/test ls' //切换目录执行命令
- creates:当文件存在则不执行命令,可用于判断,不会真的创建
ansible 主机 -m command -a 'creates=/opt/test ls' //目录存在则不执行命令
- removes:当文件不存在则不执行命令,可用于判断,不会真的删除
ansible 主机 -m command -a 'removes=/opt/test ls' //目录如果不存在,则不执行命令
2.shell模块:同于command模块 ,但shell模块是通过调用远程主机的shell解释器执行命令的,可以执行shell的各种功能命令
eg:
ansible webs -m shell -a 'echo ${HOSTNAME}' //取消本地的结果输出,直接在ansible远程主机上执行echo ${HOSTNAME}
ansible webs -m shell -a "echo ${HOSTNAME}" //在本机事先执行echo ${HOSTNAME},再输出到远程的ansible被管理主机上
3.yum模块
ansible 主机或主机集合 -m yum -a 'name=软件包名 state=状态'
installed \removed
4.service模块
ansible 主机或主机集合 -m service -a 'name=服务名 enabled=yes\no state=状态’
开机是否自启 state: started stopped restarted reloaded
5.copy模块:同于rsync 中的/ //只能拷贝文件,或压缩包
/opt/test/ /mnt 把/opt/test/下的内容拷贝到/mnt下
/opt/test /mnt 把/opt下的test拷贝到/mnt下
ansible 主机或主机集合 -m copy -a 'src=本地文件 dest=ansible远程主机文件路径'
- content:用于替换src,可以直接指定文件的值
ansible 主机集合 -m copy -a 'content="内容信息\n" dest=目标路径 mode=0644'
6.fetch模块 从远程拷贝文件到本机 //只能拷贝文件,或压缩包
ansible 主机或主机集合 -m fetch -a "src=远程主机上的文件 dest=本机路径
force=yes 强制复制文件。YES:覆盖,NO:远程主机存在不复制
backup=yes" 备份源文件,备份文件包含时间信息
7.lineinfile模块 : 类似于sed中的s(替换)
ansible 主机或主机集合 -m lineinfile -a
'path=要修改的文件 "/etc/my.cnf"
regexp="正则表达式 " "^binlog_format"
line="替换的新值 " ' "binlog_format=row"
8.replace模块 修改匹配的字段
ansible 主机或主机集合 -m replace -a
'path=修改文件 "/etc/my.cnf"
regexp=正则表达式 "row"
replace=替换的新值' "mixed"
9.setup模块 (用于获取主机的信息)
ansible 主机或主机集合 -m setup
eg:
ansible webs -m setup -a 'filter= 过滤条件’ filter只能是过滤某个字段的信息,
====ansible webs -m setup|grep 过滤条件
ansible 主机集合 -m setup|grep 过滤条件 --tree /opt/data //将setup的过滤信息保存到文件中,文件名为托管主机IP或域名
ansible主机上自动创建
10.script模块
帮助我们在远程主机上执行 ansible 管理主机上的脚本,也就是说,脚本一直存在于 ansible 管理主机本地,不需要手动拷贝到远程主机后再执行
ansible 主机或主机集合 -m script -a '脚本绝对路径'
11.file模块
ansible 主机或主机集合 -m file -a 'path=目录或文件路径 state=状态’
recurse:是否递归
state:
directory:目录,不存在则创建
file:文件,不存在也不创建
link:创建软链接 dest=指定链接的路径
hard:创建硬链接
touch:文件不存在的时候,创建一个新的文件
absent:删除目录、文件或者是取消链接文件
link:创建软连接 ln -s
ansible 主机集合 -m file -a 'path=目标路径/连接文件名 src=源链接的文件 state=link'
ansible wwe -m file -a 'path=/usr/bin/rm src=/usr/bin/safe-rm state=link force=yes' -become=true
==ln -s /usr/bin/safe-rm /usr/bin/rm
force=yes :强制覆盖
-become=true :成为root用户执行